Daruma BASIC 入門 (4)
条件分岐

コンピュータは、くり返し実行のほかに、「ある条件を満たすときだけこの命令を実行する」という判断をすることができます。例えば、数を1から順に表示して、3の倍数の時に「!!」をつける、というプログラムを作ってみましょう。(古いお笑いネタ?)

   1 FOR I=1 TO 10
   2 PRINT I;
   3 IF I%3=0 THEN PRINT "!!";
   4 PRINT " ";
   5 NEXT
    

実行結果は、下のようになります。

>> RUN
1 2 3!! 4 5 6!! 7 8 9!! 10 >>

プログラムを説明しましょう。1行目の FOR 文は前回取り上げたのでいいですね。2行目の PRINT I; は、変数 I の値を表示するものですが、最後に ;(セミコロン)がついています。このように、PRINT 文の最後をセミコロンで終えると、PRINT 文の最後に行を変えるのをやめさせることができます。つまり、I の値を表示したのと同じ行の続きに、次の PRINT 文の内容が表示されるわけです。

3行目が今回のポイントになる「条件分岐」です。IF 文は、ある条件が満たされるかどうかを判断して、満たされる場合のみ THEN 以下の命令を実行します。日本語に直すと、IF は「もし」、THEN は「ならば」という意味です。IF xxxx THEN yyyy は「もし xxxx ならば yyyy」となります。

3行目をもう一度見てみます。I%3=0 というのが「条件」です。これは、「I を3で割った余りが0である」、つまり「I が3の倍数である」ことを意味しています[1]。この場合のみ、THEN 以下の命令、つまり PRINT "!!"; が実行されます。

[1] 条件式の中の「等しい」記号は、「変数に値を入れる」意味ではなく、「等しいかどうか」という本来の意味を表します。

IF 文の構文は、下の通りです。THEN 以下を IF と同じ行に置く書き方と、THEN で一度行を変える書き方があります。行を変えた場合は、最後に ENDIF を書かないといけません。

【構文】
(1行 IF 文)
IF 条件式1 THEN 文1 [ELSEIF 条件式2 THEN 文2] [ELSE 文3]
(複数行 IF 文)
IF 条件式1 THEN
文1
[ELSEIF 条件式2 THEN
文2]
[ELSE
文3]
ENDIF
【意味】
条件式1 を判定し、満たされるなら 文1 を実行する。
・満たされない場合、ELSEIF 以下があるなら、条件式2 を判定し、満たされるなら 文2 を実行する。 ELSEIF の部分は、いくつでも書ける。
・どの条件も満たされなかった場合、ELSE 以下があるなら 文3 を実行する。

複数行 IF 文では、「文1」「文2」「文3」もそれぞれ複数行で書くことができます。

条件式」の中では、次のような式を使うことができます。

A=B     A と B が等しい
A<>B    A と B が等しくない
A<B     A が B より小さい
A<=B    A が B 以下である
A>B     A が B より大きい
A>=B    A が B 以上である

また、1つまたは2つの条件式を使って、次のような新しい条件式を作ることもできます。

NOT 条件式1          条件式1を満たさない
条件式1 AND 条件式2  条件式1と条件式2がともに満たされる
条件式1 OR 条件式2   条件式1と条件式2のどちらかが満たされる
条件式1 XOR 条件式2  条件式1と条件式2のどちらか一方だけが満たされる

いろいろな条件式を組み合わせた判定については、次回にとりあげましょう。

[ ← トップページへ ]

[ ダウンロードページへ → ]