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

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

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

文系でもわかるBASIC入門

9.条件成立で流れを変える

前回はプログラムの流れを強制的に変えるGOTO命令について説明しましたが
ある条件が成立した時に流れを変える方法を説明します。

説明に使用しているプログラムを圧縮ファイルで用意しました。
こちら サンプルプログラム
おすすめは手打ちで入力する方法です。その方が早く身に付くと思います。

 

1. IF命令の使い方

IF命令は、「もし ~ ならば ~ を行う」というように条件が成立した時のみ
実行させることができます。プログラムには欠かせないものです。

次の例を見て下さい。

basic if 条件による分岐

このプログラムはまだ完成していません。
実行させると次のようになります。

basic input 空打ちすると0が入る

3、4、9、5 と入力した後は、数値を入力せずEnterキーのみ押しました。
その結果、a+b= 0と表示されてます。
INPUT命令で空打ちをすると、数値変数なら0が入る仕組みになっているので
このような結果になります。

この仕組みのままだと実行中のプログラムを止めることができません。
今回は ESCキーを押して強制的に中断させます。

basic プログラムの強制中断

 

プログラムの中から実行を中止する仕組みを入れていきます。

basic 条件文で実行を停止させる

行番号25を追加します。IF命令は
IF 条件 THEN 命令
という書き方をします。
行番号25では
もし変数aが0ならばEND命令を実行
という動きをします。
これで変数aの入力待ちの時、Enterキーのみ押せばプログラムは終了します

basic if 条件文の使い方

a=? の後にOKが表示されているので、プログラムが終了していることが
分かると思います。

さらに変数bの入力でもプログラムを終了できるようにします。

basic 条件文で行番号をジャンプさせる

行番号35・60を追加しました。IF命令は
IF 条件 THEN 行番号
という書き方もできます。
行番号35では
もし変数bが0ならば行番号60へジャンプ
という動きになります。
これで変数bの入力待ちでEnterキーを押すと、行番号60 へジャンプして
「終了します」を表示した後にプログラムが終了します。

basic if文でジャンプ

 

2. 実践的な IF命令の使い方

もう少し複雑なプログラムを例にして IF命令の使い方を説明します。
次のプログラムを入力して、実際に動かしながら説明を確認して下さい。

basic IF文による分岐のさせかた

ここで新しいプログラムの書き方がでてきました。
行番号30 から 60 までの文にコロン(:)が使われてます。
このコロンを使うことで1行の中に複数の命令をつなげて書くことができます

行番号30 では変数noが1だった時、変数zankinに80を代入してその後に
行番号80 へジャンプするという処理になります。

行番号80 のREMは、その後に書かれたものを全てコメントとして扱います
つまりどんな命令を書いても無視されます。
プログラムを見やすくしたり、処理の説明を書く時に使いましょう。

実行してみます。

basic 初心者プログラミング入門

はじめにを入力しました。
変数no には5が入っている為、行番号30 から 50 までは無視されます。
そのまま行番号60へ行き「次の中からお選び下さい」を表示して
行番号10へジャンプしています。

2度目の選択でを入力した時には、行番号40 の条件に当てはまる為
変数zankin に100が代入されて、その後に行番号80へジャンプして
プログラムが終了しています。

「次の中からお選び下さい」の表示の一行前には何も表示されていません。
行番号60 を見てみると、PRINT命令のみ書かれている部分があります。

60 PRINT:PRINT "次の中からお選び下さい"

このPRINT命令により空行が出来たわけです。

 

行番号100 以下のプログラムを入力して下さい。

basic 初心者向けのプログラム言語

この中で注目する所は行番号の 120 と 220 です。
IF命令の条件文にが使われています。
これは関係演算子といって、等しい・大きい・小さいなどの比較に使います。

120 IF ZANKIN - IN <= 0 THEN 200
変数zankin から 変数in を引いた値が0以下だったら、行番号200へジャンプする
という処理になります。
ちなみに0以下とは、0も含みます。

220 IF IN - ZANKIN > 0 THEN PRINT "おつり";(IN - ZANKIN);"円です"
変数in から 変数zankin を引いた値が0より大きければ、おつりを表示します。

 

実行してみます。

basic 関係演算子で数の大きさを比較

プログラムらしさを少し感じられる内容だったと思います。

IF命令と関係演算子の使い方をマスターするためにプログラムを変更して
遊んでみたりして下さい。