誰でもプログラマ(WSH編)(その7-応用編1 あなたはプログラマ?)
前回までで、プログラムの基本はすべて終了してしまいましたので、前回までの内容を利用して、ちょっとアプリケーションを書いてみましょう。
毎度のことですがメモ帳でプログラムを記述します。今回のプログラムはちょっと長いです。
以下のプログラムを入力してください。
Dim ans
ans = MsgBox("背骨はありますか?", vbYesNo)
If ans = vbYes Then
ans = MsgBox("卵を産まずに、直接子供を生みますか?", vbYesNo)
If ans = vbYes Then
MsgBox "哺乳類でしょう"
Else
ans = MsgBox("つばさがありますか?", vbYesNo)
If ans = vbYes Then
MsgBox "鳥類でしょう"
Else
ans = MsgBox("肺呼吸し、硬いうろこで覆われていますか?", vbYesNo)
If ans = vbYes Then
MsgBox "爬虫類でしょう"
Else
ans = MsgBox("幼体のとき足が無く、成体のとき、足がありますか?", vbYesNo)
If ans = vbYes Then
MsgBox "両生類でしょう"
Else
MsgBox "魚類でしょう"
End If
End If
End If
End If
Else
MsgBox "無脊椎動物です"
End If
間違いなく入力されたら、animal.vbsというファイル名で保存しましょう。このアプリケーションは、ある動物に対してさまざまな質問をすることにより、その動物の分類を調べることができます。
では、実際に試してみましょう。なにか動物を思い浮かべてください。
例えば、「蛙」にでもしましょう。
ダブルクリックして実行すると、

蛙には、背骨があります。Yesと答えます。

蛙は、卵をうみます。子供を生まないので、Noと答えます。

蛙には、つばさはありません。Noと答えます。

蛙は、大人のとき肺呼吸しますが、硬いうろこで覆われているわけではありません。Noと答えます。

蛙は、まさに、幼体のとき足がなく、成体のときに足があります。Yesと答えます。

両生類と判定されました。
なかなか賢いじゃないですか。人工知能みたいです。
せっかくですから、いろんな動物で試してみてください。
では、プログラムの詳細を見てみましょう。
ダウンロードせずに、実際に打ち込んだ人は、打ち込んでいる最中に、既にどんな仕組みかわかったかもしれません。
Dim ans
まず最初に、ansという変数を使いますと宣言しています。
ans = MsgBox("背骨はありますか?", vbYesNo)
これは、今までよく見た、MsgBoxですが、ちょっと風景が違います。括弧でくくってあって、"背骨はありますか?"と、vbYesNoとがコンマで仕切られて入っています。
MsgBoxを関数として使う場合は上のようになるわけです。
vbYesNoって何でしょう。これは、[Yes][No]のボタンを表示する、日本語なら[はい][いいえ]のボタンを表示するって意味です。
MsgBoxにもこんな隠された機能があったわけですね。
詳しくは、こちらを開いてください。これは、マイクロソフトで提供されているヘルプの一部です。
こちらにはいろんなメッセージボックスが出せるように、このような一覧が用意されています。
ans = MsgBox("背骨はありますか?", vbYesNo)
とやれば、
てなのが出ますし、
ans = MsgBox("背骨はありますか?", vbRetryCancel)
とやれば、
恐ろしいメッセージボックスになるわけです。
ここでは、[はい][いいえ]を表示したいので、vbYesNoを指定しています。
ans = となっているので、MsgBoxの結果に、ansという表札をつけています。
では、MsgBoxの結果って何でしょう。どんなボタンを押したのか、って結果です。
どんな結果がありえるのかは、こちらの下の方を見てください。
僕らの場合、[はい]を押すとvbYesが、[いいえ]を押すとvbNoが結果です。
では次
If ans = vbYes Then
'だーーーっと処理がいっぱい
Else
MsgBox "無脊椎動物です"
End If
ここを日本語に訳してみましょう。
もし、ansがvbYesだったら、
(だーっと処理がいっぱい)
んじゃなかったら、
MsgBox "無脊椎動物です"
となります。このあたりは、前回の応用になるわけです。背骨がありますか?の質問に対して、[はい]と答えると、もっと質問が続くわけです。
[いいえ]と答えると、[無脊椎動物です]と答えるわけです。
んじゃ、(だーっと処理がいっぱい)の部分を見てみましょう。
ans = MsgBox("卵を産まずに、直接子供を生みますか?", vbYesNo)
If ans = vbYes Then
MsgBox "哺乳類でしょう"
Else
'だーっと処理がいっぱい
End If
これを日本語に訳すと、
ans = 卵をうまずに、直接子供を生みますか?
もし、ansがvbYesだったら、
MsgBox "哺乳類でしょう"
んじゃなかったら、
(だーっと処理がいっぱい)
ということで、卵を産まずに、直接子供を生みますか?の質問に対して、[はい]と答えると、哺乳類でしょうと答えるわけです。
[いいえ]と答えると、もっと質問が続きます。
以下、繰り返しです。
ans = MsgBox("つばさがありますか?", vbYesNo)
もし、ansがvbYesだったら、
MsgBox "鳥類でしょう"
んじゃなかったら、
(だーっと処理がいっぱい)
てな感じです。ひとつひとつ追いかけてみてください。[はい]、と[いいえ]、で分岐していくことがわかると思います。
案外シンプルでしょ。シンプルだけど複雑。。。
ちょっとしたことの組み合わせで、複雑なことをやっているのがコンピュータなんです。
このプログラムを応用したら、さまざまなプログラムが作れると思います。
お昼ごはん選択プログラム(パン?ご飯?)とか、デート行き先決定プログラム(映画?ドライブ?)なんてのもできます。
面白いものを作って、送ってください。楽しいものが送られてきたら、こちらで掲示したいと思います。
今日のまとめ
- もし、なんちゃらだったら、こっち、んじゃなかったら、こっち
- んじゃどっちなんだか追いかけるのは結構頭がこんがらがる。。。