人生一度はやってみよう MSX Basic 入門
8.条件分岐 IF THEN を使ってみよう
これからは少し課題(問題)を入れていきます。
プログラミングのできる脳を作るには、自分で考えることが必要です。
正解を見る前に、できるだけ自分で考えたプログラムを入力して
実行してみて下さい。
学ぶ上で試してみることはとても重要なのです。
注意です。
2分考えて分からないようなら、正解を確認しましょう。
今は悩み込むより、先に進むことが大切です。
また、講座の最初にもどって読み直す方が効果的です。
ブログラムを中断する方法
プログラムを中断する方法のおさらいです。
次のプログラムを入力して実行しましょう。
これは1ずつ数を増やして表示するプログラムです。
画面をスクロールしながら数が表示されます。
Ctrl+Fn+F9で中断してみましょう。(Windowsの場合)
(ファンクションキーがちゃんとあり Fn キーが無いときはCtrl+F9)
(Mac ではcontrol+fn+F9)
キーの配置は様々です。よく確認しましょう。
プログラムがループして止まらなくなったときは、この方法で中断します。
ただ、この方法でも中断できないことがあるかもしれません。
その時はブラウザのページを更新することになると思います。
この時、入力したプログラムは消えてしまうので注意しましょう。
(ハードディスクに保存するなどして対応)
条件分岐とは
条件分岐をするための命令IF THENを説明します。
条件分岐を簡単に言うと、条件によって処理するかどうかを決めることです。
次のプログラムを入力してください。
実行すると1から6までの数を表示します。
行番号30では、変数Aが6ならばEND命令を実行するようになっています。
ENDはプログラムを終了する命令です。
IF THENはもし〜ならば〜するという命令です。
IF <条件式> THEN <命令または行番号>
THEN の後には行番号も使えます。
行番号を指定すると、条件が成立しているときその行へジャンプします。
行番号15 を追加して、もう一つ IF 文を入れてみます。
これで 3を除く1から6までの数を表示します。
行番号15で、変数Aが3ならば行番号10へジャンプするため
3の表示がされないのです。
条件式のいろいろ
条件式には比較演算子(ひかくえんざんし)と論理演算子(ろんりえんざんし)が使えます。
先ほど使った A=3 や A=6 の =(イコール)は比較演算子です。
代入ではありません。注意してください。
他にもいろいろあります。
比較演算子 | 意 味 | 例 |
---|---|---|
式1 = 式2 | 式1 と 式2 が等しい | IF A=5 |
式1 <> 式2 | 式1 と 式2 は等しくない | IF B<>3 |
式1 < 式2 | 式1 が 式2 より小さい | IF A<6 |
式1 > 式2 | 式1 が 式2 より大きい | IF B>3 |
式1 <= 式2 (式1 =< 式2) |
式1 が 式2 と等しいか、小さい | IF A<=B |
式1 >= 式2 (式1 => 式2) |
式1 が 式2 と等しいか、大きい | IF A>=B |
比較演算は条件が成立したとき -1 、成立しないとき 0 を返します。
次の例を見てください。
3=3 は等しいので出力結果は -1 になります。
2=4 は等しくないので結果は 0 です。
条件式では、論理演算子もよく使います。
これは複数の条件を指定したいときなどに用います。
論理演算子 | 例 | 意 味 |
---|---|---|
NOT | IF NOT(A=6) | Aが6でなければTHEN以下を実行 |
AND | IF A=6 AND B=3 | Aが6でBが3のときのみTHEN以下を実行 |
OR | IF A>2 OR B=5 | Aが2より大きいか、 Bが5のときTHEN以下を実行 |
この説明を見ただけで使える人は優秀です。
今はこんな命令もあるのか程度に記憶するだけでOKです。
今後、いくつものプログラムを学習しながらマスターしていきましょう。
問題にチャレンジ
問題にチャレンジすること自体に意味があります。
説明を読むだけよりも脳を使います。
分らないときは正解を見て、とりあえず記憶しましょう。
そして数日後にまたチャレンジしてください。
それから、気分的にはパズルでも解くような感じで挑戦すると良いです。
では1から6までの数を表示するプログラムを基本に質問します。
分かったら正解を見る前に、自分で試してみると良いですよ。
問:次のように出力するプログラムに変更してください。
それでは正解の例です。
行番号20で変数Aを2倍しているだけです。
注意して欲しいのは、他の方法でも結果が同じならば正解だと言うことです。
たとえば次のようにしても正解です。
次です。
問:次のように出力するプログラムに変更してください。
それでは正解の例です。
変数A=2のとき"msx"を表示するようにしました。
ここから見易くするため、表示モードを変えています。
問題とは関係ありません。モード変更方法はあとで説明します。
問:次のように出力するプログラムに変更してください。
それでは正解の例です。
OR を使って A=2 か A=4 のとき"msx"を表示するようにしました。
画面のモードを変えてみよう
昔のパソコンには画面モードというのがあります。
今のパソコンのように解像度を変更するというレベルではなく、
テキストだけしか表示できない、または、絵しか表示できないなど
表示のための機能を切り替える仕組みです。
ハードの性能が低くても色々なことができるようにしていたのだと思います。
まず、起動したときのままの表示を見てみましょう。
これは 32x24 文字のテキストモードです。
それでは次のように入力してください。
SCREEN 0 [エンターキー]
表示を確認しましょう。
これは 40x24 文字のテキストモードです。
SCREEN 0では 40x24 文字、
SCREEN 1では 32x24 文字のテキストモードになります。
SCREEN のパラメータは [ MSX BASIC Ver2.0 命令一覧 ] で確認しましょう。
IF 〜 THEN 〜 ELSE の使い方
IF 文にはELSEを付けた方法もあります。
IF THEN ELSEは、条件が真のときTHENの後の命令を実行し
偽のときELSEの後の命令を実行します。
IF <条件式> THEN <命令または行番号> ELSE <命令または行番号>
なお、条件が成立したことを真、成立しなかったことを偽と表現します。
IF THEN ELSE を使った例です。
行番号30は途中で改行していますが、入力するときは気にせずに"a>4"のあとでエンターキーを押します。
実行してみます。
3を入力すれば5より小さいので、THENの後が実行されます。
5を入力すると5より小さくないので、ELSEの後が実行されます。
7の入力も5より小さくないので、ELSEの後が実行されます。
IF 文はプログラムの中でとても重要な命令です。
しっかりと覚えていきましょう。