【はじめてのプチコン】サブルーチン(アルゴリズム) | りょうのゲーム塾

りょうのゲーム塾

再開、準備中。

チェックポイント
今回は今後のプログラミング修正のためにプログラムをブロックに分けて話を進めていきます。
その際にプログラムを意味のあるブロックにわけて記述するときに便利な方法としてサブルーチンという考え方があります。


サブルーチンの使い方を説明するためのサンプルプログラムは下記の通りです。

■プログラム
変更前

0001 ' main
0002 INPUT "MOJI=";M$
0003 PRINT "MOJI=";M$
0004 END


このプログラムは今回のサブルーチンの説明のために作成したプログラムです。
BASICのプログラムがRUN命令によって実行される場合、プログラムの最初の行から実行されていきます。
このサンプルの場合入力命令で文字列を入力しその文字列を画面に表示して終了します。
これをメインルーチンと呼びます。
このメインルーチンに対してサブルーチンと呼ばれるものが存在します。

■プログラム
変更後

0001 ' main
0002 GOSUB @IN
0003 GOSUB @OUT
0004 END
0005 ' sub1
0006 @IN
0007 INPUT "MOJI=";M$
0008 RETURN
0009 ' sub2
0010 @OUT
0011 PRINT "MOJI=";M$
0012 RETURN


サンプルのプログラムはデータを入力する処理と出力する処理に分けることができるので2つのブロック(サブルーチン)に分けて記述してみました。
こうするとメインルーチンは入力部分”@IN”と出力部分”@OUT"で構成されていることが大まかに分かります。
サブルーチンは実際に入力する場合の処理と出力する場合の処理を分けて記述できるのでプログラムが見やすくなったと思います。
このプログラムは簡単なのであまり利点を分かっていただけないと思いますが、今後プログラムが長くなるのでブロック毎に説明をすることになるためこの方法が妥当だと思います。
GOSUB命令はサブルーチンへジャンプします。
GOTO命令と同じだと思われますがGOTO命令はジャンプしたらしたままです。
GOSUB命令はジャンプした後にRETUEN命令を使いもとに戻ります。

2行目のGOSUB命令で@INへジャンプします。
プログラムは@INへ進みINPUT命令が実行されます。
そしてRETURN命令を実行すると呼び出したGOSUB命令の次へ戻ります。
要するに3行目に戻り次のGOSUB命令を実行します。
今度は@OUTへジャンプします。
PRINT命令で文字列が画面に表示されたらRETURN命令を実行します。
このRETURN命令で呼びたした3行目のGOSUB命令の次に戻り4行目のEND命令でプログラムが終了します。

■書式
GOSUB @ラベル
@ラベルの位置へジャンプしますが戻る位置を記憶しておきます。


■書式
RETURN
GOSUB命令で記憶された場所にジャンプします。


■書式
REM または '
注釈(説明文)を記述することができます。
この注釈は何もしません。