先程までのプログラムは,全て1つの流れで終わっていました。しかし実際のプログラムでは,与えた入力値によって異なる処理を行うというものがほとんどです。例えば文字入力1つを取っても,英字入力モードか漢字入力モードかで同じキーを押しても出る文字は違いますし,またShiftキーが押されているかとかでも文字の種類は変わります。
今回は,条件分岐の方法を説明します。これなくしてプログラムは成り立ちません。非常に長いのでレッスン2つを取りましたが,しっかり覚えましょう。
まずは最も簡単な,単純な条件を表す方法です。
#prompt Dim A As Double Input A If A>0 Then Print A;"は正の数です。" End If Print "終わり"
Input,Print は既出なので解説を省きます。(分からなかったら戻って確認すること!)
新しく出てきたのは If 〜 Then と End If ですね。これの使い方は
[共通の処理] ・ ・ If [条件] Then [実行する文(複数も可)] End If [共通の処理] ・ ・
これで,特定の条件のときだけに文を実行するということが可能になります。
上の例の場合,実際には A にはいろいろな値が代入されるわけです(Inputを用いているので)。実行例は
? 120
120 は正の数です。
終わり
? -10
終わり
? 5
5 は正の数です。
終わり
のように,正の数を入力したときのみ「〜は正の数です。」という文が表示されます。
なお,条件式において「<」「>」「=」はそのまま使えばよいですが,「≦」「≧」「≠」は以下の記号で代用します。
数学での書き方 | ≦ | ≧ | ≠ |
---|---|---|---|
BASICでの書き方 | <= または =< | >= または => | <> または >< |
ちなみに
If A>0 Then Print A;"は正の数です。" End If
のように,If 〜 End If にはさまれた Print 文の行が右にずらされていますが(ここではスペースでずらしているが,実際にはタブを入れることが多い),これは単に見やすさの問題です。こうすることで「ここからここまでが If の条件によって実行されるか分かれる部分である」ということを見やすく出来ます。
もちろん,タブを入れないで以下のように書いても構いません。
If A>0 Then Print A;"は正の数です。" End If
しかし大きいプログラムではこれをやると見づらくなるので注意しましょう(実際に大きなプログラムを組むときは,If 〜 End If の間に50行以上のプログラムが入ってもおかしくないです)。
問7 数値を1つ入力し,その値が7以上の数のときのみ「7以上」と表示するプログラムを作成せよ。
問8 数値を2つ入力し,その値の合計が7以上の数のときのみ「7以上」と表示するプログラムを作成せよ。
次に,2分岐の方法です。
先程のプログラムでは,正の数のときに文が表示されるときに,ゼロや負の数を入力すると何も表示されませんでした。この時もし「正の数でない」というメッセージを表示したいのであれば
#prompt Dim A As Double Input A If A>0 Then Print A;"は正の数です。" End If If A<=0 Then Print A;"は正の数ではありません。" End If Print "終わり"
のように If 文をもう1つ付け加えてもよいのですが,もっと簡単な方法が用意されています。それは
#prompt
Dim A As Double
Input A
If A>0 Then
Print A;"は正の数です。"
Else
Print A;"は正の数ではありません。"
End If
Print "終わり"
のように,Else を付け加える方法です。これは「条件が成り立たない場合に実行される命令」を表すのに用います。
[共通の処理] ・ ・ If [条件] Then [条件成立時に実行する文] Else [条件不成立時に実行する文] End If [共通の処理] ・ ・
これにより,2方向への分岐をすっきりした形で書くことが出来ます。
とりあえず実行例も挙げておきます。
? 120
120 は正の数です。
終わり
? -10
-10 は正の数ではありません。
終わり
? 5
5 は正の数です。
終わり
問9 数値を1つ入力し,その値が7のときのみ「成功」と表示し,他の場合は「失敗」と表示するプログラムを作成せよ。
次のレッスンでは,3分岐以上の方法を扱います。