前回の続きです。前回は乱数を発生させてその値を判定しました。今回は乱数を発生する処理を繰り返してその合計を計算してその値を判定するといった処理をやってみます。
繰り返し処理をScratchで
乱数を発生を5回繰り返してその合計を計算すると処理を書きます。以下のようになりました。
5回繰り返しのブロックの中が繰り返しです。この中で乱数を発生させてxに代入して表示してからsumに加算するという処理をしています。確認のために3秒待っています。実際に実行すると順番にsumに加算されるのが分かります。その繰り返しを抜けた後に一回のみsumの値を表示しています。
判定を追加してみる
上記の処理に判定を追加してみます。合計が15より大きいかを判定してどちらが勝ちか表示します。
繰り返しを抜けて合計を表示した後に判定処理を実行しています。繰り返しの間には何をして抜けた後には何をしているかが要点ですね。
実行結果の例は以下です。合計が21で15より大きいので「あなたの勝ち」を表示します。(猫が言っています。)
Pythonでも書きます
import random sum = 0 cnt = 0 while(cnt < 5): x = random.randint(1,6) print('x =',x) sum = sum + x print('sum =',sum) cnt = cnt + 1 print(cnt) print('') if(sum > 15): print('あなたの勝ち') else: print('私の勝ち')
判定までを含めた処理をPythonで書きました。処理の途中経過が分かるようにprint()で各変数を表示しています。空白行も入れて変数と繰り返しが分かるようにしてみました。
while()で cnt < 5 の間で繰り返します。繰り返す処理は字下げの部分です。その繰り返しを抜けて判定の処理を行っています。
実行例は以下です。
合計が14だったので「私の勝ち」を表示しています。途中経過が分かると思います。
PAD図で書きます
上記のPythonと同様の繰り返しと判定の処理をPAD図で書きました。各処理を文章で書いたので長くなっていますが、Pythonと比べると同じになっていると思います。
(補足)構造化プログラミングの要素
今回のプログラムですが、これだけでも構造化プログラミングの3要素(順次・選択・反復)を含んでいます。ただこのように短い処理だとこれでもいいと思いますが、処理の部品化、再利用という意味でのブロック化が必要になりますのでそのあたりを以下で書きました。
Pythonでの関数定義と関数呼び出し