IF文

複雑な処理を行うためには、ある条件に応じて処理の選択を行わせる必要がある。このような場合、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=BAとBが等しければ
A>BAの方が大きければ
A>=BAがB以上ならば
A<BAの方が小さければ
A<=BAがB以下ならば
A<>BAとBが等しくなければ
[課題1]
複数個の数値を入力し、その数値の合計を出力するプログラムを作成せよ。
ヒント:INPUT 文で数値を変数 A 入力してもらい、そのたびに合計を計算して合計を記憶させておく変数 S に保存する。GOTO 文を使って処理を繰り返すことになるが、IF 文を使って 0(ゼロ)が入力された時点で終了させるようにしよう。(下の図はプログラムの流れを示すフローチャート)

#ref(): File not found: "flowchart.png" at page "IF文"

[課題2]
課題 1 を拡張して、入力した数値の平均を出力するプログラムを作成せよ。
ヒント:新たにひとつ変数を用意して、入力回数(何回ループしたか)を数える必要がある。入力終了合図の最後の”ゼロ”は回数に含めないように気をつけよう。

次のプログラムは、コンピュータがランダムに発生する 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
[BASIC言語の基本命令文と文法に戻る]

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS