プチコン3号&BIGまとめWiki

プチコン3号&BIG 非公式初心者講座 : 第12章 サブルーチン

パンくずリスト

プログラマーからひとこと

これまでいろいろな命令をおぼえてきましたが、そのクライマックスになりそうなのが、これから出てくる「GOSUB」命令です。
ここまでおぼえれば初心者のプログラムはもう最後といっていいかもしれません。

GOSUB。
英語としてもわりとヘンなんですが、もともとの意味は「GO to SUB routine」といって、まあ「サブルーチンに行け」的なことだったみたいです。

サブルーチンといえば、前にもちょっとだけ出てきましたね。
「行って帰ってくる小さなプログラムのブロック」なんて説明もしましたが、おぼえてましたか?
この「行って帰ってくる」をカンタンにするのがGOSUB命令ですが、くわしくはインテリ君の説明にまかせましょう。

GOSUB命令

ワンパクくん

サブルーチンのハナシはもう終わったんじゃねェのか? ヨウするに「行って帰ってくる小さなプログラムのブロック」がサブルーチンなんだろ?

インテリくん

そこまでは合ってるよ。これからおぼえるGOSUB命令は、それをもっとラクにするための命令だね。

神崎

たしかサブルーチンは、こういうものだったよね。

  1. ’メインループ
  2. @MAIN
  3. PRINT”ここは メインループ です”
  4. GOTO @SUB
  5. @MAIN2
  6. GOTO @MAIN
  7. ’サブルーチン
  8. @SUB
  9. PRINT”ここは サブルーチン です”
  10. GOTO @MAIN2

これだとホントにサブルーチンにするイミのない、グルグル回るだけのプログラムだけど……。

インテリくん

うん、でもおさらいとしてはこれでいいんじゃないかな。4行目でサブルーチン@SUBに行って、11行目でメインループの中の@MAIN2に帰るんだね。

ワンパクくん

コレをカンタンにするのがGOSUB命令だってのか? スデにかなりカンタンな気もするが……

インテリくん

まあ見てみようよ。GOSUB命令を使うと、こういうプログラムになるね。

  1. ’メインループ
  2. @MAIN
  3. PRINT”ここは メインループ です”
  4. GOSUB @SUB
  5. GOTO @MAIN
  6. ’サブルーチン
  7. @SUB
  8. PRINT”ここは サブルーチン です”
  9. RETURN

4行目でGOSUB命令を使っているのがわかるね。

ワンパクくん

それだけじゃねェぞ、5行目にあったラベルが消えてんじゃねェか! これじゃサブルーチンから戻ってこれなく……アレ?

神崎

サブルーチンの最後が、GOTO命令じゃなくRETURNになっているね。

インテリくん

GOSUB命令は、RETURN命令とセットで使うんだ。
プログラムを見ればだいたい分かるかな? GOSUBのあとにRETURNがあると、GOSUBしたすぐアトまで自動で帰るんだね。

ワンパクくん

……リクツはワカッたぜ。あんがいカンタンなモンなんだな。

神崎

サブルーチンに行くたびにラベルを付けなくてよくなるのは、たしかにベンリかな。

ワンパクくん

しかしコレ……サブルーチンって、ホントにやらなきゃダメか? ワザワザGOTOGOSUBで飛ばさなくても、メインループの中でやればいいコトじゃねェか?

インテリくん

いいトコロに気が付いたね。ジツはここまでで使ったサブルーチンは、たしかにサブルーチンの良さがちゃんと出てないんだな。
そこで、このプログラムを見てもらおうか。

  1. ’メインループ
  2. @MAIN
  3. A=1
  4. GOSUB @SUB
  5. A=2
  6. GOSUB @SUB
  7. GOTO @MAIN
  8. ’サブルーチン
  9. @SUB
  10. PRINT A;”かいめ の サブルーチン”
  11. RETURN

ドコがポイントか、わかるかな?

神崎

サブルーチンに行く前に、変数のナカミを変えているね。それにメインループの中から2回、同じサブルーチンに飛んでいるよ。

ワンパクくん

それからサブルーチンの中でも変数を使ってるぜ! つまり……サッパリわからねーな!

インテリくん

そ、そうなの?
まず同じサブルーチンでも、RETURNで帰る行がちがうというのが1つ目のポイントかな。

神崎

同じRETURNなのに、4行目から飛んできたときは4行目に帰ってきて、6行目から飛んできたときは6行目に帰るんだね。ちゃんとしてるなあ。

ワンパクくん

タシカにそれと同じコトをGOTOでやるのはメンドクセェな……。アチコチから飛ぶんならGOSUBを使えってコトか。

インテリくん

もう1つのポイントは、1コだけのサブルーチンでも、GOSUBする前の変数によってPRINTする字が変わるコトだね。

神崎

PRINTにかぎらず、変数によってやることを変えられるんだね。

インテリくん

そういうコトだね。いろいろなプログラムを見てみるとわかるけど、決まった動きを、変数のナカミによって変えながらできるのがサブルーチンの良さだね。

ワンパクくん

つまりサブルーチンってのは、プログラムのどこから、どんなジョウタイでも、「オイこれやっとけ」って言えば空気を読みながらひととおりのシゴトをこなすってワケだな。

インテリくん

どうしたのワンパク君、よくわかってるじゃないか!

ワンパクくん

いや、リソウのパシリってこんなカンジじゃねえかって考えたら……

インテリくん

……

神崎

……

今回のまとめ

GOSUB~RETURN命令
  1. GOSUB @(ラベル)
  1. RETURN
GOSUBで指定したラベルまでジャンプします。その後にRETURNと書いてあれば、GOSUBの直後まで戻ります。

メニュー 【3号】

ヘルプ

リンク

最近の更新

最近の人気ページ

オンライン情報

  • 現在同時に 1 人がこのサイトを見ています
  • このページはこれまでに 3166 回、本日は 1 回、昨日は 0 回閲覧されました

ページの先頭に戻る

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.144 秒 | このページの最終更新 : 2022/09/20 (火) 12:48:51 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30