おすすめ
BookReport

MovieReport

ShowReport

Cook

Travel

NationalPark

Cancun

Casino

Camera

WindowsLiveWriter

LegoMindStormsNXT

LegoEnzoFerrari

WSH

Resume

お願い
Cagylogicサイトの内容に、いかなる保障もいたしません。またアクセスすることによるすべての損害等の責任を負いかねます。ご意見、ご要望、ご質問、不具合(バグ)報告等はコメント欄にてお願いします。リンクはご自由にどうぞ。
月別

« (前の日) 誰でもプログラマ(WSH編)(その6-あっちいったりこっちいったり) | メイン | ただいま (次の日) »

« 誰でもプログラマ(WSH編)(その6-あっちいったりこっちいったり) | 分野 (WSH) | 誰でもプログラマ(WSH編)(その8-応用編2 計算機で計算機) »

2003年12月 3日

誰でもプログラマ(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編)(その6-あっちいったりこっちいったり) | メイン | ただいま (次の日) »

« 誰でもプログラマ(WSH編)(その6-あっちいったりこっちいったり) | 分野 (WSH) | 誰でもプログラマ(WSH編)(その8-応用編2 計算機で計算機) »

コメントを投稿

« (前の日) 誰でもプログラマ(WSH編)(その6-あっちいったりこっちいったり) | メイン | ただいま (次の日) »

« 誰でもプログラマ(WSH編)(その6-あっちいったりこっちいったり) | 分野 (WSH) | 誰でもプログラマ(WSH編)(その8-応用編2 計算機で計算機) »

2008年11月
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
 
最近のつぶやき
Powered by