株式会社リサイクルループ

ブログ

回収依頼お問合わせ

株式会社リサイクルループ

回収依頼

MENU

【HSPプログラミング講座#2】プログラムを流れを変える

プログラミング講座アイキャッチ

前回のHSPプログラミング講座ではstop命令を使ってプログラムの流れを停めることができました。stop命令のあとに続くプログラムは実行されずに停止することがわかりました。今回はプログラムの流れを変化させる命令について学んでいきたいと思います。

プログラムの流れを変える命令goto

今回はgotoという命令を使います。昔よく使われていたプログラミング言語に「BASIC(ベーシック)」と呼ばれる言語があります。私はその頃にgoto命令を使った記憶がありますが、あまり覚えていません(笑)が、ただ単にプログラムを飛ばす(ジャンプさせる)機能だったと思います。まずは下記のプログラムを入力してみましょう!

HSPプログラミング_goto01

HSP言語の説明書を読むとgoto命令にあとにスペースを入れてから「*」アスタリスクと呼ばれる記号を入力します。その後に続けて(スペースを入れずに)好きな文字を書きます。今回は「aaa」にしました。ちなみにこの「aaa」の部分はラベルと呼ぶそうです。ただし使ってはいけない文字もあるようですから、うまく動かないときは違う文字を入れてみましょう。ラベルには日本語も使えるようです。

5行目に書いた「goto *aaa」から8行目の「*aaa」ラベルに移動しなさいという命令になります。このラベルの飛び先(着地地点)は一番左に寄せて書くのが望ましいということです。絶対のルールではないのですが、プログラムを見やすくして、みんなで共通のルールで書くことで、他の人にも解読しやすいプログラムになりますよ。

さて、この5行目のgotoによって、8行目に強制的に飛ばされてしまうということですが、6行目のmes命令と、7行目のstop命令はどうなるのでしょうか?前回のプログラミングではstop命令のあとは実行されませんでしたね。。。今回はstop命令のあとに飛ばされているけど動くのでしょうか?それでは実行してみましょう!

おお!このような動作結果に!! ふむふむ。6行目と7行目は飛ばされて8行目にプログラムが飛ばされて9行目の「たちつてと」が表示されましたねー。

どうやらstop命令のあとに書かれているプログラムは動くようです。HSP言語の動作がだんだんわかってきましたね。なんだかちょっと面白くなってきました。今度はgoto命令でプログラムの上の方に戻すことができるかどうか試してみたくなりました。下記のようにプログラムを書き直してみます。

さて、追加したプログラムは2つです。1つは7行目のラベル「*飛べ!飛ぶんだ!ケロちゃん!」です。日本語を使ってみました。ここが飛び先の着地点となるようにしました。もう1つは13行目のgotoで7行目に飛ばしています。これでプログラムの流れを上に戻してしまおうという裏技なような事をしています。さて実行結果はどうなりますか。

おおぅ!ちゃんとプログラムが上に行にジャンプして「さしすせそ」の文字が表示されてます。そしてstop命令でプログラムが停止しました。プログラムは上から下に流れていくだけではなく、戻すことができるということがわかりました。

ただし、ここで注意が必要です。9行目のstop命令がなかったら、永遠にgoto命令でプログラムがぐるぐる繰り返してしまいます。これを「無限ループ」といいます。こうなってしまうと停止できなくなってしまい「プログラムが暴走した」とか「バグった」と言われる状態になります。ウインドウの右上のバツボタンを押して強制的にプログラムを止めるしかありません。まぁこれも勉強ですからstop命令を消して実行してみてください。そして実行結果がどのような表示になるのかを予想してからやってみましょう!