【HSPプログラミング講座#10】繰り返し処理から抜け出そう
タイトルとURLをコピーしました
いよいよHSP言語プログラミング講座は10回目の最終回になりました!(うそです汗) いやぁプログラミングって大変ですね!? 覚えることも多いし、作って動かしてみないとわからないことが多いので果てしない感じですよね。 まぁでも少しでもこのプログラミング講座を見てくれている人がいるようなので、もう少し続けていきましょうかねー
前回のプログラミングでは繰り返し処理(ループ処理とも言う)の途中で「止めたいなぁ」と思うことが出てきました。 無限ループに設定した場合は特にそうですね。 どうやったら止められるんだろうと考えてみました。。。 わかりませんでした(汗
なんかとりあえずプログラムを書いてみたので、みなさんも実行して試してみてください。全然思いどおりに動いてくれないのですよ! なんでだろう!?
このプログラムの解説をすると、まず3行目の repeat で -1 を指定しているので無限ループになりますね。そして5~6行目でボタンを特定の座標に固定して表示しています。次に7~8行目で cnt の数字に合わせて「●」がどんどん右側に飛んでいくように表示しています。
次の9行目の wait が問題で、はじめは wait を入れなかったのですが、ボタンが高速に点滅して押しても反応しないんですよねぇ。。cls命令で一瞬だけ画面消去しているからなのかなぁって思ったりしました。なので wait を入れて少しゆっくり処理されて、ボタンを押せるタイミングを増やしたつもりです。まぁ確かにボタンを連打すると、そのうち時々反応してくれて12行目のプログラムの終了処理に行ってくれるのですが、なんでこのような動作になるのかサッパリわかりません(涙)
まぁ、プログラミングをしていると、こんな理解できないことも多々あります。だから別な方法を探せばいいんですよ。ボタンを使って終了させる方法じゃなくて、ある「条件」を満たしたらループ処理から脱出する方法を作ってみたいと思います。
このプログラムではボタンを廃止しました。その代わりに cnt の数値が500になったら、この無限ループ処理をから抜け出す。というプログラムになっています。 では解説していきますね! ボールを表示するところまではもう説明する必要はないですね。7行目は今の座標がわかるように、ボールの下に「いまのcntの数値」を表示するようにしています。8行目は少し wait を入れています。これはなくてもいいのですが、ないとボールの進みがめちゃ速いです。
そして9行目がこのプログラムのいちばん大切な部分です!! よく理解しておきましょう! まず「if」というのは「イフ」と読みます。日本語で「もしも」という意味です。 その次に「cnt = 500」という部分は「cntの中の数字が500になったとしたら」という意味です。 その次の「:」はコロンと読みます。この「:」はその次に来る命令の間に必ず挟むという決まりごとです。 特に深い意味は考えなくていいと思います。 そしてコロンの次に「break」という命令があります。ブレークと読みます。日本語では「壊す」という意味ですが、プログラミングではループを抜け出すときに使います。 さぁ、改めて分解して見てみると下記のように構成されています。
「 if 」 「cnt = 500」 「:」 「break」
「もしも」 「cntが500になったとしたら」 「ループを脱出する」
ここでポイントなのは cnt がまだ500になっていなければ break が発動しないということです! そのまま無視して次の行に進んでいきます。 この事を「条件分岐」と呼ばれることがあります。 一応頭の片隅に置いておきましょうかねぇ。
繰り返し処理から抜け出そう まとめ
最初はなんだかボタンが押しにくいプログラムで、よくわからない動作でしたけど、新しく出てきた条件によってプログラムを作動させる「if」を覚えました。 実はコンピュータプログラミングにおいて、これまで勉強してきた「変数」と「繰り返し処理」と「条件分岐」が基本であり、全てであると行っても過言ではありません。 これらの組み合わせで全てが作られているという言い方もできます。 そう説明されると簡単な気がしてきますけどね。 とにかくこれからのプログラミングでも大量にでてきますよ! つぎは「変数」と「繰り返し処理」と「条件分岐」を駆使して面白いものを作ってみましょう!