繰り返しでカウントを数える方法 | Scrachとロボットプログラミング
スクラッチで同じ操作を繰り返す場合に使うブロックとして[制御]にある[繰り返し]ブロックがあり、[〇回繰り返す]という方法と[ずっと]がありますが、このブロックだけでは繰り返している回数を目視することができません。ここでは繰り返しの回数を目視できる方法をプログラミングしてみます。
そのままでは数えられないスクラッチ
スクラッチで同じ操作を繰り返す場合に使うブロックとして[制御]にある[繰り返し]ブロックがあります。
例えばクムクムロボットの胸のLEDを10回点滅せようとした場合下記のようになります。
このプログラムは10回の点滅を行うことができますが、実際には一体何回目が光っているのか自分でわかることができません。
BASICやC言語で同じような処理を作るときは、変数を使い、何回目を数えているのかをしっかりデータとして取得することができます。
たとえば、C言語でプログラムを作ると下記のようになり、変数 ( i ) によって自分で回数をしっかり数えています。
include <stdio.h>
void main(void){
for(int i = 0;i < 10 ;i++){
printf("%d 回目の点滅",i) ;
led_on(1);
delay(1000):
led_off(1) ;
}
}
実はこれと同じ方法をスクラッチでも実現できます。
スクラッチでも数えてみる
上記プログラムのC言語での( i )は、プログラミング言語の中では変数と呼ばれる機能で、プログラムの中に一時的にデータを記憶する場所を自分で作る機能です。ここで使っている ( i )という変数は実は別の名前でもよく、プログラマー自身がわかりやすい名前を付けることができます。
例えば、( i )の部分を( kaisu )として、その数を画面に表示するようなプログラムにした場合下記のようになります。
include <stdio.h>
void main(void){
for(int kaisu = 0;kaisu < 10 ;kaisu++){
printf("%d 回目の点滅",i) ;
led_on(1);
delay(1000):
led_off(1) ;
}
}
※上記のプログラムはLEDに関する命令や画面に表示する命令など、このままでは実際に正しく動作しません。イメージです。
それではスクラッチでも同じように動くプログラムを作ってみましょう。
スクラッチで変数を作る
[コード] → [変数] → [変数を作る] をクリックしここでは[回数]という変数を作ってみます。
プログラムを作る
作った変数[回数]を使い上記のようなプログラムを作ってみます。
クムクムロボットをお持ちでない方は、LEDのブロックや桁読みのブロックを外し、ステージ上のCATがしゃべるだけでも構いません。
また、変数の[回数]の横にあるチェックボックスをチェックしておくと、ステージ上に回数が表示されるので変化がよくわかります。
プログラムのポイント
このプログラムのポイントは、1つ目のブロック[回数を0にする]です。
まず、このプログラムが実行されたら、このブロックが動きますので、回数は0になります。
何度プログラムを実行しても必ず最初に回数が0にリセットされますので、正しく0からカウントを数え始めることができます。
これを変数の初期化と呼びます。
変数の初期化は、プログラミングの中でもっとも重要な処理です。
パソコンはプログラムが実行された瞬間にどんな状態になっているかわかりません。
変数の中身にも何が入っているかわからないので、プログラムが動いた瞬間ある内容に意図的にリセットする必要があります。
それが変数のリセットと呼ばれる処理です。
次に繰り返しが始まった瞬間に[回数を1ずつかえる]という命令が動きますので、1回目は0にリセットされた回数に1足され、回数は1からスタートすることになります。
そして1からスタートした処理は10回繰り返されるので、回数は1~10まで数えられるという仕組みになっています。