プチコンmkII

プチコンmkII 初心者講座

ラベルとGOTOのはなし

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

あなたがここを読んでいるということは、サンプルプログラム1をやりとげたということでしょう。
読み流しただけという人も、まあ、それはそれでいいです。

ずいぶんおぼえる事がたくさんあって、大変だったかもしれません。
なにごとも最初が一番おぼえることがあって大変なものです。
ここからはだいぶラクになると言えなくもないです。

そうは言ってもまだいくつか大事なことが残っているので、つまみ食いしながらおぼえていきましょう。
サンプルプログラム1よりはだいぶ少ないはずですよ。

ラベルとGOTO命令

0001#. PRINT”AAA”
0002#. PRINT”BBB”
インテリ「こんなプログラムなら、もうセツメイしなくてもいいよね。
ワンパク「オレたちをバカにしてんのか? ラクショーすぎてワラっちまうぜ!
神崎「AAAと表示して、次の行でBBBと表示するだけのプログラムだね。
AAA
BBB
OK
インテリ「それでは、これをもとに「ラベル」についておぼえようか。
0001#. @A
0002#. PRINT”AAA”
0003#. @B
0004#. PRINT”BBB”
インテリ「この「」で始まる行が「ラベル」だよ。
ワンパク「サッパリなんだかワカらねーが、こういう時はムヤミにRUNするぜ!
AAA
BBB
OK
ワンパク「ん? さっきと変わんねェぞ! ……ハハーン、ラベルって言い方といい、こいつは……
神崎「コメントに使う「」と同じ、プログラムにイミのない記号なのかな?
インテリ「おしい! というより、今はまだコメントと同じイミしかないと言うべきかな。
ワンパク「その何でもワカったような言い方、ハナにつくぜ! 違いを見せてみやがれ!
インテリ「1行目に、こう足してみるとどうかな?
0001#. GOTO @B
0002#. @A
0003#. PRINT”AAA”
0004#. @B
0005#. PRINT”BBB”
神崎「「GOTO」……?
ワンパク「GOTO……ゴ・ト……テメエ、全国のゴトーさんにナニかモンクがあんのか?
インテリ「そういうイミじゃないんだけど。とりあえずRUNしてみようか。
BBB
OK
神崎「あれ? 「AAA」が表示されなくなったよ?
ワンパク「なんてこった……ゴトーもバカにできねえな……
インテリ「ええと、これはGO TOゴー・トゥと読むんだよ。「~に行け」という意味だね。
神崎「1行目のGOTO @Bは、そのまま読めば「『ラベル@B』に行け」ってこと……?
ワンパク「そうか! それならツジツマが合うぜ! 1行目のGOTO命令で、イキナリ「@B」と書いてある4行目までジャンプしたわけだ。ジャンプしたから3行目のPRINT”AAA”は飛ばされる……つまり、「AAA」が表示されることもないってワケだ!
インテリ「ここまではカンペキに分かったようだね。
それじゃあ応用問題を出してみようか。「BBB」「AAA」の順に表示したい時は、どうすればいいかな?
ワンパク「考えるまでもねェぜ! 「BBB」と表示したアトで、@Aに飛ばせばイイんだろ?
0001#. GOTO @B
0002#. @A
0003#. PRINT”AAA”
0004#. @B
0005#. PRINT”BBB”
0006#. GOTO @A
最後の行にGOTO @Aを書きたせばバッチリだゼ!
神崎「……あれ? これだと……
ワンパク「これがどうしたってんだ? RUNするぜ!
画面
ワンパク「ウ、ウォオ……!?
神崎「やっぱり! 2行目まで飛んでから、また6行目で2行目に飛ぶから、いつまでたっても止まらないよ!
インテリ「そう、GOTOをくり返すプログラムを組んじゃうと、無限にくり返し続けるね。こういうのを「無限ループ」というんだ。
ワンパク「やっちまった……こりゃリセットか……なんともノーフューチャーだぜ。
インテリ「おっと待った。こういう時はあせらずSELECTボタンを押そう。
画面
神崎「あれ、けっこうカンタンに止まるんだね。
インテリ「おぼえておこうね。プログラムを途中で止める時はSELECTボタン。

ハカセ SELECTボタンとSTARTボタン

ワシじゃワシじゃ、プチコンではブイブイいわせとるハカセじゃ。
インテリ君、SELECTボタンとはイキナリひとつ飛ばしで教えるではないか。そこらも合わせて、DSiの2つのボタンのセツメイじゃぞい。
途中停止
もともとプログラムを止めるのはエスケープキー「エスケープキー」を使うものだったのじゃ。その代わりになるのがDSiのSELECTボタンなんじゃな。そうそう、この停止ボタン停止ボタンでもよいぞ。
もっとも、ワシもふだんはSELECTを使うタイプじゃな。なんかラクなんじゃよ。
簡易実行
ジツはRUN命令を使わなくても、DSiのSTARTボタンを押すとプログラムの実行になるのじゃ。編集モードからボタン1つでイキナリじゃから、こりゃラクじゃな。
インテリ「さて、無限ループをしないように、PRINT”AAA”の後に1行ふやしてみようか。
0001#. GOTO @B
0002#. @A
0003#. PRINT”AAA”
0004#. END
0005#. @B
0006#. PRINT”BBB”
0007#. GOTO @A
神崎「あっ、前におぼえたプログラムを終わらせるEND命令だね。こういうトキにEND命令にイミが出てくるんだね。
BBB
AAA
OK
ワンパク「フムム……しかしコレ、こうして見るとGOTO使わなくてもフツーにこう書けばすむんじゃねェか?
0001#. PRINT”BBB”
0002#. PRINT”AAA”
インテリ「その通り。あっちに行ったりこっちに行ったりするプログラムは、見る方もこんがらがるから「スパゲッティプログラム」と呼ばれて、良くないものとされているね。
じゃあ何のためにラベルとGOTO命令があるのか? それは次のサンプルで確かめていこう!
ワンパク「ケッキョクまたそのパターンかよ!

今回のまとめ

ラベル
先頭の後に英数字で、ラベルになります。
GOTO命令
GOTO @(ラベル名)
指定したラベルまでジャンプします。
SELECTボタンとSTARTボタン
SELECTボタンでプログラム停止、STARTボタンでプログラム実行(RUN)です。