サブルーチン は、プログラムの任意の場所から呼び出すことができるプログラムのセクションです。サブルーチンが終了すると、プログラムの制御は、サブルーチンが呼び出された場所にジャンプします。 サブルーチンは、プログラムのメインループからプログラムの長い部分を分けることができるため、メインプログラムのループを簡単に分かりやすくするために便利です。サブルーチンのもう1つの利点は、プログラムを小さくすることができることです。
<! - 1 - >
複雑な計算を何度も実行する必要があるプログラムを作成しているとします。複雑な計算をサブルーチンに配置すると、プログラムのいくつかの場所からサブルーチンを呼び出すことができます。そうすれば、複雑な計算を1回だけ実行するコードを書くことができます。サブルーチンを作成して使用するには、2つのPBASICコマンドを使用する必要があります。最初はGOSUBで、サブルーチンを呼び出します。サブルーチンを呼び出すときは、通常、プログラムのメインループ内でGOSUBコマンドを使用します。 2番目のコマンドはRETURNです。これは常にサブルーチンの最後のコマンドです。
<! - 2 - >
サブルーチンを作成するには、ラベルで始まり、RETURNコマンドで終了します。その間に、サブルーチンが呼び出されたときに実行するコマンドを記述します。1から999までの乱数を生成し、変数Rndに保存するサブルーチンの例を次に示します。
GetRandom:RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
このサブルーチンを呼び出すには次のようなGOSUBコマンドを使うだけです:
<! - 3 - >
GOSUB GetRandomこのGOSUBコマンドは、制御をGetRandomラベルに転送します。次に、GetRandomサブルーチンがRETURNコマンドに達すると、コントロールはGOSUBコマンドの直後のコマンドにジャンプします。
サブルーチンを使用して1から1000の間の乱数を取得し、乱数を使用してピン0のLEDをランダムな間隔で点滅させる完全なプログラムを次に示します。このプログラムは、ピン0のLEDを持つベーシックスタンプ回路で実行できます。
'LEDブリンカプログラム' Doug Lowe '2011年7月10日「このプログラムはピン0のLEDをランダムに点滅します。 '{$ PBASIC 2. 5} Rnd VARワードLed1 PIN 0 DO GOSUB GetRandom HIGH Led1 PAUSE Rnd LED LED1 PAUSE 100 LOOP GetRandom:RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
サブルーチンを使用する場合、あなたのプログラムがあなたのサブルーチンに誤って落ち込んで実行されることを意図していないときに実行するのを防ぎます。たとえば、リスト3-5のプログラムでは、LEDを100回だけ点滅させたいので、DOループの代わりにFOR-NEXTループを使用したとします。ここでは、そのプログラムを書く
の例はありません。 FORカウンター= 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LED LED1 PAUSE 100 NEXT GetRandom:RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN あなたはなぜそれを見ますか? FOR-NEXTループがLEDを100回点滅させた後、プログラムはサブルーチンであるFOR-NEXTループの後に次のコマンドを続けます!
これを防ぐために、別のPBASICコマンドENDを使用することができます。これはBASIC Stampにプログラムの最後に到達したことを通知するだけなので、コマンドの実行を停止する必要があります。次のように、NEXTコマンドの後にENDコマンドを配置します。
FORカウンタ= 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LED LED1 PAUSE 100 NEXT END GetRandom:RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN > FOR-NEXTループの終了後、プログラムは停止します。