誰でもプログラマ(WSH編)(その4-変数という名の表札)

本日は、より高度な技に挑戦です。
前回の計算を発展させて見ましょう。

前回と同様にメモ帳でプログラムを記述します。
以下のプログラムを入力してください。

Dim a, b, c
a = 1
b = 2
c = a + b
MsgBox c

間違いなく入力されたら、value.vbsというファイル名で保存しましょう。

保存したら、ダブルクリックして実行です。
1-4-1
1+2の答え、3がダイアログに表示されました。

なにが起こったんでしょう。一行づつ調べてみましょう。


Dim a, b, c

この行は、aとbとcというの変数を使います。という意味です。
変数って何でしょう。これは表札のことです。

次の行を見てみましょう。


a = 1

aと1が一緒ってどうゆうことでしょう。
昔、学校では、=は左右同じと習いました。aと1が一緒ってどうゆうことでしょう。なにがなんだかわかりません。
実は違います。ここがプログラマ初心者のいつもひっかかるところです。

プログラムの世界では、=は右のものに、左の表札をつけるという意味です。
これをプログラマの世界では、右のものを左に代入する。といいます。


a = 1

これは、1という数字に、aという表札をつける。という意味です。
すなわち、1をaに代入する。といいます。

次の行では、


b = 2

これは、2という数字に、bという表札をつける。という意味です。
すなわち、2をbに代入する。といいます。


c = a + b

これは何でしょう。これは、a + bの結果に、cという表札をつける。という意味です。すなわち、a + b の結果をcに代入する。といいます。
ん?ちょっと複雑ですね。
ということは、どうゆうこと?
a + bの結果って、、、a は1の表札、bは2の表札、ってことは、a+bの結果は、3ですね。
ということは、最終的には、3という数字に、cという表札をつける。ってことになるわけです。


MsgBox c

最後に、cという表札の内容の3を表示して終わりです。うーん長かった。
でも、なんでcって文字を表示しないんでしょう。cという文字を表示するときは、


MsgBox "c"

って感じで、””でくくるんでしたね。
今回は、


MsgBox c

ですから、””でくくってありませんから、これは表札とみなされるわけです。

うーん。奥が深い。

んでもなんで、こんなことをするんでしょうね。

以下のプログラムを打ち込んでみてください。


Dim hankei, menseki
hankei = 2
menseki = hankei * hankei * 3.14
MsgBox menseki

これも一行づつみてみましょう。


Dim hankei, menseki

今度は、hankeiとmensekiという表札を使うようです。


hankei = 2

2に、hankeiという表札をつけるようです。


menseki = hankei * hankei * 3.14

hankei * hankei * 3.14の結果に、mensekiという表札をつけるようです。
ってことは、
2 * 2 * 3.14 の結果、12.56という数字に、mensekiという表札をつけるようです。


MsgBox menseki

最後に、mensekiの内容、12.56が表示されるわけです。
半径が、2のときの面積が求まりました。

んじゃ、半径10のときはどうでしょう。

ほうほう、2行目の


hankei = 2


hankei = 10

に変えたらOKなわけです。

半径が5のとき、半径が6.5のとき、など、いろいろ試してみましょう。

今回は、円の面積という簡単な公式をつかいましたが、世の中にはもっともっと複雑な公式もあります。そうゆうときには、便利ですね。
公式を入力しておいて、中の数字だけ変更できるわけですから。
電卓ではこうはいきません。

今日のまとめ

  • やっぱり、コンピュータは計算は得意だ。
  • 今日は怒られなかった。

 

「誰でもプログラマ(WSH編)(その4-変数という名の表札)」への4件のフィードバック

  1. プログラムって面白いんですね
    とても参考になりました

  2. aとbのところをInputBoxに変えてやってみたんですけど
    55+45=5545みたいになったんですけどどうすればいいですか?

    1. こちらにも書いてあるんですけど、+の計算は、文字列として認識されちゃうみたいですね。そのときは、c= CDbl(a) + CDbl(b) やc=CInt(a) + CInt(b) のように強制的に数字に変換してしまうと、意図したとおりに動くと思います。

MSN-001A1 へ返信するコメントをキャンセル

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください