複雑な処理を行うためには、ある条件に応じて処理の選択を行わせる必要がある。このような場合、BASIC 言語では IF 文と GOTO 文を組み合わせて用いることになる。
IF 条件式 THEN 条件合致時の行き先 または IF 条件式 THEN 条件合致時の行き先 ELSE 条件外の行き先 |
10 INPUT "0〜9の数字を入れてください。";A 20 IF A=7 THEN GOTO 50 '(“A=7”は代入ではなく等しければという条件) 30 PRINT A;"ですか…" 40 END '(プログラムを強制終了させている) 50 PRINT "それはラッキーですね^^"
処理内容が複雑でない場合は、GOTO 文を使わずに THEN の後ろに直接処理を書くこともできる。
10 INPUT "0〜9の数字を入れてください。";A 20 IF A=7 THEN PRINT "それはラッキーですね^^":END 30 PRINT A;"ですか…"
IF 文の条件式には以下のようなものがある。
A=B | AとBが等しければ |
A>B | Aの方が大きければ |
A>=B | AがB以上ならば |
A<B | Aの方が小さければ |
A<=B | AがB以下ならば |
A<>B | AとBが等しくなければ |
#ref(): File not found: "flowchart.png" at page "IF文"
次のプログラムは、コンピュータがランダムに発生する 0〜9 の数字を当てるプログラムである。
10 A=INT(RND(1)*10) '(0〜9の乱数を変数Aに代入) 20 INPUT "0〜9の数字を入力してください。",X 30 IF A>X THEN PRINT "もっと大きいです。":GOTO 20 40 IF A<X THEN PRINT "もっと小さいです。":GOTO 20 50 PRINT "正解です。"
次のプログラムは、IF〜THEN〜ELSE を使って上記のものを書き直したものである。下線部を補完し、プログラムを完成させよ。
10 A=INT(RND(1)*10) 20 INPUT "0〜9の数字を入力してください。",X 30 IF ___ THEN PRINT "もっと大きいです。" ELSE IF ___ THEN PRINT "もっと小さいです。" ELSE PRINT "正解です。":___ 40 GOTO 20
次のプログラムでは、発生する乱数を 0〜99 まで拡大した。このままでは当たる確率が低く難しいので、正解の値 ±10 を入力すると”おしい!”と表示するように改造した。その結果、上記のプログラムからアルゴリズム(プログラムの論理的手順)を若干変更している。下線部の条件式を補完し、プログラムを完成させよ。
10 A=INT(RND(1)*100) '(0〜99の乱数を変数Aに代入) 20 INPUT "0〜99の数字を入力してください。",X 30 IF ___ THEN PRINT "正解です。":END 40 ZETTAICHI=ABS(A-X) '(変数Aと変数Xの差の絶対値) 50 IF ZETTAICHI ____ THEN PRINT "おしい!もう少し"; ELSE PRINT "もっと"; 60 IF ___ THEN PRINT "大きいです。" ELSE PRINT "小さいです。" 70 GOTO 20