初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

人生一度はやってみよう MSX Basic 入門

8.条件分岐 IF THEN を使ってみよう

 

これからは少し課題(問題)を入れていきます。
プログラミングのできる脳を作るには、自分で考えることが必要です。

正解を見る前に、できるだけ自分で考えたプログラムを入力して
実行してみて下さい。
学ぶ上で試してみることはとても重要なのです

注意です。
2分考えて分からないようなら、正解を確認しましょう。
今は悩み込むより、先に進むことが大切です。
また、講座の最初にもどって読み直す方が効果的です。

 

 

ブログラムを中断する方法

プログラムを中断する方法のおさらいです。

次のプログラムを入力して実行しましょう。
これは1ずつ数を増やして表示するプログラムです。

1ずつ数を増やして表示するプログラム

 

画面をスクロールしながら数が表示されます。
Ctrl+Fn+F9で中断してみましょう。(Windowsの場合)
(ファンクションキーがちゃんとあり Fn キーが無いときはCtrl+F9
(Mac ではcontrol+fn+F9

1ずつ数を増やして表示するプログラムの実行を中断する

 

キーの配置は様々です。よく確認しましょう。

Ctrl+Fn+F9 でプログラムを中断する

 

プログラムがループして止まらなくなったときは、この方法で中断します。
ただ、この方法でも中断できないことがあるかもしれません。
その時はブラウザのページを更新することになると思います。
この時、入力したプログラムは消えてしまうので注意しましょう。
(ハードディスクに保存するなどして対応)

 

 

条件分岐とは

条件分岐をするための命令IF THENを説明します。
条件分岐を簡単に言うと、条件によって処理するかどうかを決めることです。

次のプログラムを入力してください。

変数Aが6の時、プログラムを終了する

 

実行すると1から6までの数を表示します。

1から6までの数を表示する

行番号30では、変数Aが6ならばEND命令を実行するようになっています。
ENDはプログラムを終了する命令です。

 

IF THENもし〜ならば〜するという命令です。

IF <条件式> THEN <命令または行番号>

 

THEN の後には行番号も使えます。
行番号を指定すると、条件が成立しているときその行へジャンプします。

行番号15 を追加して、もう一つ IF 文を入れてみます。
これで 3を除く1から6までの数を表示します。

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 です。

条件成立で-1、不成立で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までの数を表示するプログラムを基本に質問します。
分かったら正解を見る前に、自分で試してみると良いですよ。

1から6までの数を表示するプログラム

 

問:次のように出力するプログラムに変更してください。

2から12までの偶数を表示する

それでは正解の例です。
行番号20で変数Aを2倍しているだけです。
注意して欲しいのは、他の方法でも結果が同じならば正解だと言うことです。

2から12までの偶数を表示するプログラム

 

たとえば次のようにしても正解です。

2から12までの偶数を表示するプログラムその2

 

次です。

問:次のように出力するプログラムに変更してください。

2,4,msx,6,8,10,12と表示する

それでは正解の例です。
変数A=2のとき"msx"を表示するようにしました。

2,4,msx,6,8,10,12と表示するプログラム

 

ここから見易くするため、表示モードを変えています。
問題とは関係ありません。モード変更方法はあとで説明します。

問:次のように出力するプログラムに変更してください。

2,4,msx,6,8,msx,10,12と表示する

それでは正解の例です。
OR を使って A=2 か A=4 のとき"msx"を表示するようにしました。

2,4,msx,6,8,msx,10,12と表示するプログラム

 

 

画面のモードを変えてみよう

昔のパソコンには画面モードというのがあります。
今のパソコンのように解像度を変更するというレベルではなく、
テキストだけしか表示できない、または、絵しか表示できないなど
表示のための機能を切り替える仕組みです。

ハードの性能が低くても色々なことができるようにしていたのだと思います。

 

まず、起動したときのままの表示を見てみましょう。
これは 32x24 文字のテキストモードです。

32x24文字のテキストモード

 

それでは次のように入力してください。

SCREEN 0 [エンターキー]

表示を確認しましょう。
これは 40x24 文字のテキストモードです。

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"のあとでエンターキーを押します。

IF THEN ELSE を使った例

 

実行してみます。

IF THEN ELSE を使った例の実行

3を入力すれば5より小さいので、THENの後が実行されます。
5を入力すると5より小さくないので、ELSEの後が実行されます。
7の入力も5より小さくないので、ELSEの後が実行されます。

IF 文はプログラムの中でとても重要な命令です。
しっかりと覚えていきましょう。