クリエイター手抜きプロジェクト[619]IoT Orange pico編 繰り返し処理
── 古籏一浩 ──

投稿:  著者:



今回は、Orange pico(Orangino)で繰り返し処理を行います。Orange BASIC Ver 1.5は、ダイレクトモードでは繰り返し処理が期待通りに動作しないので、ここではプログラムを作成していくことにします。

Orange BASICで繰り返し処理を行うには、FOR〜NEXTを使います。これは一般的なBASICと同じです。書式としては以下のようになります。

for 変数名=開始値 to 終了値
 繰り返す処理
next

つまり、forとnextの間に書かれた処理を、指定された回数だけ繰り返します。回数は開始値から終了値までになります。以下のように指定すると、10回繰り返されます。繰り返しの変数名は定番のi(英小文字のアイ)を使っています。

for i=1 to 10

それでは、1から10までの数値を表示してみましょう。以下のように入力して下さい。





10 for i=1 to 10
20 print i
30 next

入力したら、RUNと入力して実行すると、以下のように1から10までの数値が表示されます。

1
2
3
4
5
6
7
8
9
10

forでは繰り返しの間隔を指定することもできます。間隔はstepを使います。先ほどのプログラムにstep 2を追加します。

10 for i=1 to 10 step 2
20 print i
30 next

間隔を2にしてあるので、1の次は3になります。このプログラムを実行すると、1から10までの奇数を表示することになります。

1
3
5
7
9

forによる繰り返しで、注意しないといけないことがあります。それは指定できる数値は整数のみだということです。step 0.5のように小数値を使うことはできません。以下のように指定すると、Type mismatch in 10とエラーメッセージが表示され停止します。

10 for i=1 to 10 step 0.5

小数値で繰り返すにはif、gotoなどを使うか、forの繰り返し回数を上手に指定することになります。

それでは次に、繰り返しを利用して音を鳴らしてみましょう。Oranginoで音を鳴らすにはbeepを使います。beepの最初のパラメーターには音階を指定します。21がラの音(440Hz)になります。値が1つずれると半音上がる・下がることになります。

beepの2番目のパラメーターには音長を指定します。msec(ミリセコンド)なので、1000を指定すると1秒間音が鳴ります。

以下のようにすると、低音から高音まで音階を変えながら音を鳴らします。

10 for i=1 to 90
20 beep i, 100
30 next

音の長さや音階の範囲を変えると面白い音になりますので、いろいろ値を変えて試してみてください。

繰り返し処理を、途中で中断したい場合があります。このような場合はbreak forを使います。単純にbreakとだけ書くと、エラーになってしまうので注意してください。

以下のようにすると、繰り返し回数が4になった時に繰り返しを中断します。なお、ifは条件判断を行う命令です。ifの後に条件式を書きます。条件式が成立した場合のみ、then以降に続く命令を実行します。

10 for i=1 to 10
20 if i=4 then break for
30 print i
40 next

プログラムを実行すると以下のように表示されます。

1
2
3
OK


break forは繰り返しを中断しますが、繰り返しの先頭に戻る場合はcontinue forを指定します。

10 for i=1 to 10
20 if i=4 then continue for
30 print i
40 next

プログラムを実行すると以下のように表示されます。

1
2
3
5
6
7
8
9
10
OK



【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/


8K映像が撮影できるということで購入したGalaxy S20。二ヵ月ほど使ってみると、いまいちなところがちらほらと。といっても、すべてのアプリや機能を使っているわけではありませんが。

誰が見ても「?」となるのが、ホーム画面での時刻表示。普通なら「午後2:15」のように表示されると思いますが、なぜか「午後2:」となって分が表示されないというオチに。

さすがにグローバルに展開する機種なので、こんなミスがあるはずはないので、そうなるとカスタマイズしたNTT Docomoのせいなんでしょうか? 最初のホーム画面の時刻が正しく表示されないという不具合に、誰も気づかなかったのかと思ってしまいます。

8K映像は腐っても8K映像ですが、画質などはiPhone(4K/60P)の方が圧倒的にいいので、iPhoneで8K撮影できるようになったらGalaxy S20はさっさと機種交換したいところです。ハイエンド機種なんでしょうけど、やっぱり一流ではないといった感想です(性能的にもUIも。最近のiPhoneもひどいUIだと思うけど、そういうレベルじゃないというか……)。

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram


・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/


・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram


・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/