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

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

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

文系でもわかるBASIC入門

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

 

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

説明に使用しているプログラムを圧縮ファイルで用意しました。

サンプルプログラム

おすすめは手打ちで入力する方法です。その方が早く身に付くと思います。

 

 

IF 命令を使おう

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

次の例を見てください。
入力した2つの値を足すプログラムです。

入力した2つの値を足す

 

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

実行して値を入力する

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

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

ESCキーでプログラムを強制終了する

 

 

プログラムの中から実行を中止する仕組みを入れます。
行番号25を追加しましょう。

行番号25を追加する

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

なお、25行目の a = 0 は、変数aに0を代入するという意味ではなく
変数a は0かどうかを判断するための書き方です。注意しましょう。

 

変数aの入力で Enterキーのみ押してみます。

変数aの入力で Enterキーのみ押す

a=? の後にOKが表示されました。これでプログラムの終了が分かります。

 

さらに変数bの入力でもプログラムを終了できるようにします。
行番号35 と 60 を追加します。

変数bの空打ち入力に対応する

IF命令は
IF 条件 THEN 行番号
という書き方もできます。
行番号35では
もし変数bが0ならば行番号60へジャンプ
という動きになります。

 

変数bの入力で Enterキーのみ押してみます。

変数bの空打ち入力に対応する

行番号60 へジャンプするので「終了します」を表示してからプログラムを終了します。

 

 

実践的な IF 命令の使い方とは

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

実践的なIF命令の使い方

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

コロンキーの場所

 

行番号30 では変数NOが1だった時、変数ZANKINに80を代入して
その後に行番号80 へジャンプします。

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

 

実行してみます。

入力した数値で処理を変える

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

2度目の選択でを入力しました。
行番号40 の条件に当てはまるため、変数ZANKIN に100を代入して行番号80へジャンプします。

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

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

このPRINT命令により空白の行が表示されたのです。

 

 

行番号100 以降のプログラムを入力しましょう。

購入の計算をする

IF命令の中で小なり<と、大なり>の記号を使っています。
キーボードの次のところにあります。シフトキーを押しながら入力します。

大なり小なりのキー

 

行番号 120 と 220 で使った小なり<大なり>関係演算子といって、比較のときに使います。

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より大きければ、おつりを表示します。

 

実行してみます。

飲み物を購入した時の計算プログラム

3番のジュースを選ぶと130円入れて下さいと表示されます。
500 を入力するとおつり 370 円ですとなります。

1番の水を選び 40 を入力するとお金が足りません。もう一度入れて下さいと表示されます。
120 を入れればおつり 40 円ですとなって正常に動いています。

 

ちょっと雑な仕組みですが、飲み物を購入するときの手順をプログラムしたことになります。
IF命令と関係演算子の使い方をマスターするためにプログラムを変更して遊んでみてください。

 

 

関係演算子について

関係演算子(比較演算子とも言う)について説明します。

IF命令で値を比較したいときなどに使います。

 

条件式 備 考
A = B A と B が等しいとき
<> A <> B A と B が等しくないとき
> A > B A が B よりも大きいとき
>= A >= B A が B 以上のとき
< A < B A が B よりも小さいとき
<= A <= B A が B 以下のとき

結果は、真(-1)または、偽(0)で得られます。

 

先ほどのプログラムを見てください。

IF命令の使い方

変数NOに3を入力したとき、行番号50のNO=3が真となるため、変数ZANKINには130が代入されます。

行番号30のNO=1と行番号40のNO=2は偽となり、THENのあとの処理は行われません。