誰でもプログラマ(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というファイル名で保存しましょう。

このアプリケーションは、ある動物に対してさまざまな質問をすることにより、その動物の分類を調べることができます。

では、実際に試してみましょう。なにか動物を思い浮かべてください。
例えば、「蛙」にでもしましょう。
ダブルクリックして実行すると、
1-7-1
蛙には、背骨があります。Yesと答えます。

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

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

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

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

1-7-6
両生類と判定されました。
なかなか賢いじゃないですか。人工知能みたいです。
せっかくですから、いろんな動物で試してみてください。

では、プログラムの詳細を見てみましょう。
ダウンロードせずに、実際に打ち込んだ人は、打ち込んでいる最中に、既にどんな仕組みかわかったかもしれません。


Dim ans

まず最初に、ansという変数を使いますと宣言しています。


ans = MsgBox("背骨はありますか?", vbYesNo)

これは、今までよく見た、MsgBoxですが、ちょっと風景が違います。
括弧でくくってあって、”背骨はありますか?”と、vbYesNoとがコンマで仕切られて入っています。
MsgBoxを関数として使う場合は上のようになるわけです。
vbYesNoって何でしょう。これは、[Yes][No]のボタンを表示する、日本語なら[はい][いいえ]のボタンを表示するって意味です。
MsgBoxにもこんな隠された機能があったわけですね。

詳しくは、こちらを開いてください。これは、マイクロソフトで提供されているヘルプの一部です。
こちらにはいろんなメッセージボックスが出せるように、このような一覧が用意されています。


ans = MsgBox("背骨はありますか?", vbYesNo)

とやれば、
1-7-1
てなのが出ますし、


ans = MsgBox("背骨はありますか?", vbRetryCancel)

とやれば、
1-7-7
恐ろしいメッセージボックスになるわけです。

ここでは、[はい][いいえ]を表示したいので、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 "鳥類でしょう"
んじゃなかったら、
(だーっと処理がいっぱい)

てな感じです。
ひとつひとつ追いかけてみてください。[はい]、と[いいえ]、で分岐していくことがわかると思います。

案外シンプルでしょ。シンプルだけど複雑。。。
ちょっとしたことの組み合わせで、複雑なことをやっているのがコンピュータなんです。
このプログラムを応用したら、さまざまなプログラムが作れると思います。
お昼ごはん選択プログラム(パン?ご飯?)とか、デート行き先決定プログラム(映画?ドライブ?)なんてのもできます。

面白いものを作って、送ってください。楽しいものが送られてきたら、こちらで掲示したいと思います。

今日のまとめ

  • もし、なんちゃらだったら、こっち、んじゃなかったら、こっち
  • んじゃどっちなんだか追いかけるのは結構頭がこんがらがる。。。

 

「誰でもプログラマ(WSH編)(その7-応用編1 あなたはプログラマ?)」への10件のフィードバック

  1. すごいですね!
    あなたはプログラマなんですか?
    すごくわかりやすくて小6の僕にもできました!

    1. はい、私はプログラマです。仕事でプログラムを書いています。
      これをきっかけに、コンピュータの知識が広がっていくとうれしいです。
      ありがとう。

  2. Dim abcdefg, kazoeru

    kazoeru = 0
    abcdefg = MsgBox(“プログラムを終了しますか”, vbYesNo)
    If abcdefg = vbYes then
    MsgBox”終了”
    Else
    abcdefg = MsgBox(“考え直してください”, vbYesNo)
    If abcdefg = vbYes then
    MsgBox”終了”
    Else
    abcdefg = MsgBox(“もう一度考え直してください”, vbYesNo)
    If abcdefg = vbYes then
    MsgBox”終了”
    Else
    abcdefg = MsgBox(“頭大丈夫ですか”, vbYesNo)
    If abcdefg = vbNo then
    MsgBox”そうなんですか”
    Else
    abcdefg = MsgBox(“嘘をつかないでください”, vbYesNo)
    If abcdefg = vbYes then
    MsgBox”よろしい”
    Else
    abcdefg = MsgBox(“性格悪いですね”, vbYesNo)
    If abcdefg = vbYes then
    MsgBox”自覚しているのなら直してください”
    Else
    abcdefg = MsgBox(“自分の性格をモットよく考えてください”, vbYesNo)
    If vbYes then
    MsgBox”よろしい”
    Else
    MsgBox”おしおきだ~~~~~~~~~~~”
    Do
    kazoeru = kazoeru + 1
    MsgBox”おしおきだ~~~~~~~~~~~”
    Loop Until kazoeru = 50
    End If
    End If
    End If
    End If
    End If
    End If
    End If

  3. yesでもnoでも質問を続けていく方法はどうやるのですか?

    1. ans = MsgBox(“質問1?”, vbYesNo)
       If ans = vbYes Then
        ans = MsgBox(“質問2?”, vbYesNo)
        if ans = vbYes Then
         MsgBox “表示1”
        Else
         MsgBox “表示2”
        End If
      End If

      こんなんでどーでしょ?

  4. はじめまして。僕はパソコン超初心者なのですが、このサイトはすごく分かりやすくて他にも
    いろんなことがしたいと思いました。
    このサイトで紹介されている言語はVBScriptですよね。
    そこで、どんなことがこの言語でできるのか調べてみたら、
    (例えばこことか http://www.whitire.com/vbs/ )
    よくわからないことが書いてあって、とても理解できません。
    (上記のサイトなら、「文字列を画面に出力する」のページ、MsgBoxが出てきてない時点で意味不明なのに、Option Explicitとかがついている。)
    たぶんこのサイトに書いてあることを難しくしたのがそういうのなんでしょうけど、
    せっかくならこのサイトと同じような簡単なプログラムがしたいと思っています。
    書店などで本をみても、同じ理由で困っています。
    なので、他にどんなことができるのかがこのサイトとおなじように簡単に紹介されているものがあったら、是非教えてください。サイトでも本でも構いません。お願いします。

  5. Dim ans
    ans=msgbox(“あなたは宇宙人?”,vbYesNo)
    If ans=vbYes Then
    msgbox”マジでか・・・”
    Else
    msgbox”そら、ちがうよなw”
    End If

    プログラムて楽しいですね!
    僕もカンタンなの作ってみたんですが、結構複雑ですね・・・
    これからも頑張ってください!

  6. 小6なのですが、VBScriptはここで学ばせていただき、Javaにも手を付けています。
    ところで、こんなプログラムを作ってみました。

    Dim x,a,b,c
    x = InputBox (“パスワードを入力してください。”,”認証”)
    If x = “SM0516Hydrogen” then
    MsgBox “正しいパスワードです。”
    a = InputBox (“A+BのAの値を入力して下さい。”,”Aの値入力”)
    b = InputBox (“A+BのBの値を入力して下さい。”,”Bの値入力”)
    c = a * b
    MsgBox (c)
    Else
    MsgBox “正しくありません。”
    End if

di へ返信するコメントをキャンセル

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