【第3章】変数とデータの型
2022.04.05

[実習3]変数を使うプログラム


 VB2022を起動し、前章でやった要領でConsoleApp1を呼び出してください。「今までもそうだったけど呼び出しにしても新規作成にしてもすごく時間がかかるな」、ほとんどの方は今そのような感想をお持ちのことと思います。図3-1のような画面が出たきり、長い時は5分くらい待たされます。今日はプログラムの話をする前に最初にこのことを説明しておきます。



図3-1.プロジェクトの起動中


 これはVB2022ではたとえ数行の短いプログラムでもプロジェクト、ソリューションが作成されるためです。たとえば鉄道を作ることを考えてみます(筆者の趣味が入った例ですみません)。鉄道建設は線路を敷く、駅を作る、そこを走る電車を作るなど、様々な仕事が融合しているものです。この1つ1つがプロジェクト(project=事業)です。そしてたとえば線路を敷くにしてもこの鉄道が通る場所が平坦な所ばかりとは限りませんから、高架線を作る、トンネルを掘る、鉄橋を掛けるなどの作業が融合しています。これらの作業がプログラムです。そしてこうしたプログラム、プロジェクトが一体となって鉄道建設というソリューション(solution=解決)が実現します。VB2022のプロジェクト、ソリューションもこれと同じ考え方です。



図3-2.プログラムとプロジェクト、ソリューションの関係


 前章でみなさんが作ったプログラムは図3-2でいえばプロジェクトAの中のプログラム1だけです。しかし、1つの短いプログラムだとしても、それを作る時にはVB2022はプロジェクト用の作業場所や会議室に相当するスペース、さらに将来的にたくさんのプロジェクトが誕生することを見越してソリューション用のビルを用意するものと思ってください。それゆえ、プログラム新規作成時も呼び出し時もかなりの時間がかかるのです。

 お話している間に、前章で作ったプログラムが出てきたと思います。ではこのプログラムを次のように改造してみましょう。

Dim a As Integer
Dim b As Integer
Dim c As String
a = 3
b = 5
c = "Boys and Girls"

Console.WriteLine("Hello! " & c)
Console.WriteLine(a + b)
Console.WriteLine(a - b)
Console.WriteLine(b * a)
Console.WriteLine(b / a)
Console.WriteLine(b ¥ a)
Console.WriteLine(b Mod a)
Console.WriteLine(b ^ a)
Console.Readkey()

変更する箇所がかなりたくさんあるので、キー入力が得意ではない方は、前に作ったプログラム(Sub Main()とEnd Subの間に書き込まれているプログラム)をいったん消して、上のプログラムをコピー&ペーストで入れていただいてもけっこうです。



図3-3.プログラム追加・修正が終わったところ


図3-3のように追加・修正ができたら、保存してから実行してみましょう。今度は図3-4のような実行結果になったと思います。

図3-4.実行結果

[プログラムの解説]
 図3-3のプログラムと前章の図をもう一度見てください。お気づきのことと思いますが、前章でやったプログラムのConsole.WriteLine(3 + 5)の3、5に相当する部分がa、bに、そして"Everyone"に相当する部分がcという文字に置き換わっていて、8~10行目を見ると中1の数学で初めて習った、あの式みたいなのが新たに入りました(筆者は中1で数学で初めてこれを習った時、なんかボク、すごいことができるようになったのかな、とワクワクした記憶があります)。さらに実行結果(図3-4)と照らし合わせてみると、どうやら今度はこのa、b、cに代入された数値やストリングをもとにプログラムが実行されたことがわかります。
 このプログラムに出てきたa、b、cのようなものを変数といいます。数学でいう変数とは少し意味が違っていて、コンピュータのプログラミングでいう変数とは「データの入れ物」とお考えください(*1)。そしてこのデータの入れ物には数値だけでなく、ストリングも入れられます。
この変数をプログラム中で使用するには、使用する前に何という名前の変数にどのようなデータを入れます、という宣言(*2)が必要になります。それが5~7行目です。変数の宣言の仕方は

Dim 変数名 As データ型

となります。ここで変数名は何でもかまいません。試してみたところVB2022では日本語(全角)も変数名として使えるようです。
 次にデータ型です。たとえば紙袋は軽い書類やおみやげのお菓子などを入れるもので、5kgもあるような重い書類を入れれば持ち手の紐が切れたりしますし、水を直接注入することはできません。重い書類を持ち運ぶには丈夫なバッグが、水を持ち歩くにはペットボトルやポットが必要なように変数もどのようなデータを入れるのかによって用途に合わせたものを用意しなくてはなりません。とりあえず今は次の3つだけ覚えてください。


Integer  整数型   整数のみ入れられる     
  Single    実数型   小数を含む数値が入れられる
String    文字列型  ストリングが入れられる   

 データ型はこの他にもたくさんあるのですが、必要になったところでまだ追加説明します。現段階ではこれだけ覚えておけばサンプルプログラムは理解できます。
 ところで変数もなのですが、数学で使用するものとプログラミングで使用するものではまるで意味が違うのが=(イコール)です。数学では=は左辺の値と右辺の値が等しいことを表す「等号」でしたが、プログラミングの世界では=は代入演算子と呼ばれ、右辺の値を左辺に代入するという意味になります(*3)。ですから数学のように、a + b = b + aのような使い方はできません。=の左辺は必ず変数1個です(*4)。代入演算子の使い方は次のようになります。
変数名 = 式


 したがって、このプログラムはaを3、bを5とし、11~18行目の計算を行うプログラムということになります。18行目の^(べき乗)はまだ説明していませんでしたが、これは a ^ nのように使います。この場合aのn乗というとになります。
 今まで覚えた算術演算子、代入演算子の他、このプログラムでは&という演算子が出てきました。これはストリング(文字列)連結演算子とよばれ、文字列を連結する際に使います。このプログラムでは&のかわりに+でも同じ結果が表示されるのですが、ストリング連結では&と+では少し意味が異なります(後にデータ型の変換のところで学びます)。
Dim a As String
Dim b As String
Dim c As String
Dim d As String
a = "I "
b = "Love"
c = "You"
d = a & b & c
Console.Writeline(d & ".")
Console.Read()
というプログラムなら実行結果は I Love You. となります。

[昔はよかったなぁ]
この章の実習でやったプログラムを昔のBASICで書くとこうなります。
100 A=3
110 B=5
120 C$="Boys and Girls"
140 PRINT A+B
150 PRINT A-B
160 PRINT B*A
170 PRINT B/A
180 PRINT B¥A
190 PRINT B MOD A
200 PRINT B^A
210 WHILE INKEY$="":WEND
220 END


 昔のBASICでは変数の使用宣言はとくに必要ありませんでした。ストリングを入れる変数のみ変数名の末尾に$を付けるだけでOKでした。VB2022では変数名+$というのはありません。
昔のBASICではDEFINT、DEFSNGなどによる型宣言はしなくてもプログラムは問題なく動作しましたが、VB2022では変数はデータ型に関係なく使用宣言が必要になります。
 また昔のBASICでは計算式はA+B、A¥Bのように書けたものが、VB2022では演算子の左右には半角スペース1個が必要になります。今のBASICはいろいろと面倒になったもんじゃのう。しかしその面倒さを差し引いてもVB2022には昔のBASICでは想像もつかなかった便利な機能がたくさんあります。これから少しずつ覚えてゆくことにします。



(注)
*1)もう少し正確にいうと、データが入っている場所を示すものです。本や書類で必要な、大事なところに貼っておく付箋紙のようなものです。詳しくは後の章で説明します。
*2)パソコンに向かって「宣誓!我々は~」とやるわけではありません。プログラミングでは何かをするための準備段階のこととお考え下さい。
*3)後の章で学びますが、条件判定のときには等号となります。
*4)正確に言うと、オブジェクト1個です(後の章で学びます)。  


コメント一覧
コメント投稿

名前

URL

メッセージ

- CafeNote -