BASICのはじめ方!条件分岐(IF…THEN、IF…THEN…ELSE)

BASIC

プログラムの流れをコントロールしよう!

こんにちは! BASICの学習、順調に進んでいますか? 😊
今回は、プログラムが状況に応じて異なる動きをするために欠かせない「条件分岐」について学びます。 条件分岐をマスターすると、もっとインタラクティブで賢いプログラムが作れるようになりますよ!

条件分岐の基本となるのが IF...THEN 文です。これは、「もし○○ならば、××する」という処理を実現します。

IF…THEN 文:もし〜なら実行する

IF...THEN 文は、指定した条件が満たされている(真である)場合に、特定の処理を実行するための構文です。

基本的な構文(1行形式)

IF 条件式 THEN 実行する命令

条件式:結果が「真(True)」か「偽(False)」になる式を書きます。例えば、「変数 A が 10 である」(A = 10) や「変数 X が 0 より大きい」(X > 0) といった式です。

実行する命令:条件式が「真(True)」の場合に実行したい命令(PRINT、GOTOなど)を書きます。

使用例

例えば、変数 SCORE の値が 60 以上だったら「合格!」と表示するプログラムは次のようになります。

10 INPUT "点数を入力してください: ", SCORE
20 IF SCORE >= 60 THEN PRINT "合格!"
30 PRINT "処理終了"

このプログラムを実行して 75 と入力すると、「合格!」と「処理終了」が表示されます。50 と入力すると、「処理終了」のみが表示されます。

💡 多くのBASICでは、THEN の後に複数の命令を書きたい場合や、処理を複数行に分けて書きたい場合のために、ブロック形式のIF文も用意されています。
IF 条件式 THEN
    ' 条件が真の場合の処理 (複数行書ける)
END IF

IF…THEN…ELSE 文:もし〜ならA、そうでなければB

IF...THEN...ELSE 文は、「もし○○ならばAを実行し、そうでなければ(条件が満たされなければ)Bを実行する」という、より柔軟な条件分岐を実現します。

基本的な構文

1行形式:

IF 条件式 THEN 命令A ELSE 命令B

ブロック形式 (推奨):

IF 条件式 THEN
    ' 条件が真の場合の処理 (命令A)
ELSE
    ' 条件が偽の場合の処理 (命令B)
END IF

ブロック形式の方が、処理内容が長くなってもコードが読みやすくなるため、一般的に推奨されます。

使用例

先ほどの点数判定プログラムで、60点未満の場合に「不合格…」と表示するようにしてみましょう。

10 INPUT "点数を入力してください: ", SCORE
20 IF SCORE >= 60 THEN
30   PRINT "合格!"
40 ELSE
50   PRINT "不合格…"
60 END IF
70 PRINT "処理終了"

これを実行して 75 と入力すると「合格!」と「処理終了」が、50 と入力すると「不合格…」と「処理終了」が表示されます。条件によって実行される処理が変わるのがわかりますね! 😄

ELSEIF 節:さらに多くの条件で分岐する

「もしAなら処理1、そうでなくもしBなら処理2、そうでなくもしCなら処理3、それ以外なら処理4」のように、3つ以上の選択肢から選びたい場合もありますよね。そんな時に便利なのが ELSEIF (または ELSE IF) です。

これは、IF...THEN...ELSE 構文を拡張したもので、QBasic や FreeBASIC など、多くのモダンなBASIC処理系でサポートされています。

構文

IF 条件式1 THEN
    ' 条件式1が真の場合の処理
ELSEIF 条件式2 THEN
    ' 条件式1が偽で、条件式2が真の場合の処理
ELSEIF 条件式3 THEN
    ' 条件式1, 2が偽で、条件式3が真の場合の処理
' ... さらにELSEIFを追加可能 ...
ELSE
    ' すべての条件式が偽の場合の処理 (省略可能)
END IF

ELSEIF はいくつでも追加できます。条件は上から順番に評価され、最初に真になった条件の処理ブロックだけが実行されます。どの条件も真にならなかった場合は、ELSE ブロックがあればそれが実行されます。

使用例

点数に応じて「優」「良」「可」「不可」を表示するプログラムを作ってみましょう。

10 INPUT "点数を入力してください (0-100): ", SCORE
20 IF SCORE >= 80 THEN
30   PRINT "優"
40 ELSEIF SCORE >= 65 THEN
50   PRINT "良"
60 ELSEIF SCORE >= 50 THEN
70   PRINT "可"
80 ELSE
90   PRINT "不可"
100 END IF
110 PRINT "評価終了"

例えば、90を入力すると「優」、70を入力すると「良」、55を入力すると「可」、40を入力すると「不可」と表示されます。このように、複数の条件で細かく処理を分けることができます。🎉

⚠️ 古いバージョンのBASICでは ELSEIF が使えない場合があります。その場合は、IF文を入れ子(ネスト)にすることで同様の処理を実現できますが、コードが複雑になりがちです。

条件式で使う演算子

IF文の条件式では、値を比較したり、複数の条件を組み合わせたりするために、以下の演算子がよく使われます。

比較演算子

2つの値を比較し、結果を真(True)または偽(False)で返します。

演算子意味意味
=等しいA = 10変数Aの値が10と等しい場合に真
<> (または !=)等しくないB <> 0変数Bの値が0と等しくない場合に真
>より大きいX > 100変数Xの値が100より大きい場合に真
<より小さいY < 50変数Yの値が50より小さい場合に真
>=以上 (より大きいか等しい)SCORE >= 60変数SCOREの値が60以上の場合に真
<=以下 (より小さいか等しい)COUNT <= 10変数COUNTの値が10以下の場合に真

!= 演算子は、比較的新しいBASIC処理系でサポートされている場合があります。

論理演算子

複数の条件式を組み合わせて、より複雑な条件を作ります。

  • AND: 両方の条件が真の場合に、全体が真になります。(例: A > 0 AND B < 10
  • OR: どちらか一方(または両方)の条件が真の場合に、全体が真になります。(例: COLOR = "RED" OR COLOR = "BLUE"
  • NOT: 条件の真偽を反転させます。(例: NOT (X = 0)X <> 0 と同じ意味)

これらの演算子を使いこなすことで、プログラムの条件分岐をより柔軟に設計できます。

まとめ

今回は、BASICにおける条件分岐の基本、IF...THENIF...THEN...ELSE、そして ELSEIF について学びました。

  • IF...THEN: 条件が真のときだけ処理を実行。
  • IF...THEN...ELSE: 条件が真のときと偽のときで処理を分ける。
  • ELSEIF: 複数の条件で処理を細かく分岐させる。
  • 比較演算子や論理演算子を使って、複雑な条件式を作ることができる。

条件分岐はプログラミングの非常に重要な要素です。ぜひ、色々な条件で試してみて、その動きに慣れてくださいね! 💪
次回は、同じ処理を何度も繰り返す「繰り返し処理」について学びます。お楽しみに!

コメント

タイトルとURLをコピーしました