いよいよ、プログラミングの3つのキホンの「繰り返し」を学びます。今回も、子どもたちに人気のプログラミングツール「Scratch(スクラッチ)」を使います。
繰り返しを理解すれば、プログラミングの基本は全て学んだことになります。そして「繰り返し」こそが、コンピューターの「一番すごいところ」だと私は考えています。
バックナンバー
第1回:教えて成瀬先生!「どうしてプログラミングを学ぶの?」
第2回:教えて成瀬先生!「どうすれば簡単にプログラムを作れるの?」Scratch(スクラッチ)で「順次」を学ぼう!
第3回:教えて成瀬先生!「どうすれば簡単にプログラムを作れるの?」Scratch(スクラッチ)で「分岐」を学ぼう!
繰り返しを理解すれば、プログラミングの基本は全て学んだことになります。そして「繰り返し」こそが、コンピューターの「一番すごいところ」だと私は考えています。
バックナンバー
第1回:教えて成瀬先生!「どうしてプログラミングを学ぶの?」
第2回:教えて成瀬先生!「どうすれば簡単にプログラムを作れるの?」Scratch(スクラッチ)で「順次」を学ぼう!
第3回:教えて成瀬先生!「どうすれば簡単にプログラムを作れるの?」Scratch(スクラッチ)で「分岐」を学ぼう!
プログラミングは何のため?
私たちはスイカ割りゲームを作りながら、プログラミングのキホンを学んできました。でも、考えてみてください。たった1つのスイカを割るためだけに、プログラミングをする必要があるでしょうか。
スイカを1つ割るだけなら、友だちや家族にお願いする方が簡単だと思いませんか? わざわざ勉強をして、大変な思いをしてプログラムを作って、コンピューターにやってもらう必要はありません。
スイカを1つ割るだけなら、友だちや家族にお願いする方が簡単だと思いませんか? わざわざ勉強をして、大変な思いをしてプログラムを作って、コンピューターにやってもらう必要はありません。
コンピューターが得意なこと
では、もし目の前に100個のスイカがあったらどうでしょうか。1000個はどうでしょう。
友だちに「1000個のスイカを割って」とお願いしたら、きっと「そんなにたくさんのスイカは割れないよ」と断られてしまいます。でも、コンピューターは違います。100個でも1000個でも、コンピューターは文句を言わずに、スイカ割りの作業を繰り返してくれます。
これこそがコンピューターの得意なことなのです。同じことを何度も何度も、正確に、飽きることなく繰り返すことができます。
私たちが「コンピューターは計算が得意だ」というのも、実は、コンピューターに「繰り返し」の力があるからなのです。
例えば、1から1千万までの数を1つずつ順番に足すという計算。人間なら、計算を繰り返すとやがて疲れてしまいますが、コンピューターなら一瞬で計算できます。
友だちに「1000個のスイカを割って」とお願いしたら、きっと「そんなにたくさんのスイカは割れないよ」と断られてしまいます。でも、コンピューターは違います。100個でも1000個でも、コンピューターは文句を言わずに、スイカ割りの作業を繰り返してくれます。
これこそがコンピューターの得意なことなのです。同じことを何度も何度も、正確に、飽きることなく繰り返すことができます。
私たちが「コンピューターは計算が得意だ」というのも、実は、コンピューターに「繰り返し」の力があるからなのです。
例えば、1から1千万までの数を1つずつ順番に足すという計算。人間なら、計算を繰り返すとやがて疲れてしまいますが、コンピューターなら一瞬で計算できます。
繰り返しを使ったプログラミングの例
では、繰り返しを実際に体験してみましょう。次のURLのスクラッチプロジェクトを開いてください。
https://scratch.mit.edu/projects/640019856/editor/
画面右上の「緑色の旗」をクリックして、プログラムを動かしてみましょう。
https://scratch.mit.edu/projects/640019856/editor/
画面右上の「緑色の旗」をクリックして、プログラムを動かしてみましょう。

緑色の旗をクリックすると……?
すると、次のように黄色い五芒星(星印)がたくさん描かれます。

あっというまに、星印がたくさん描かれます
この星印たちは、繰り返しを使ったプログラムで描かれています。スクラッチのブロックを見てみましょう。

スクラッチの「繰り返し」ブロック
「10回繰り返す」のブロックと、そのブロックの内側に「5回繰り返す」というブロックがありますね。これらが繰り返しのブロックです。
試しに、一番外側にある「10回繰り返す」というブロックの数字を、100回に変えて動かしてみましょう。
試しに、一番外側にある「10回繰り返す」というブロックの数字を、100回に変えて動かしてみましょう。

100回繰り返してみると?
すると100個の星印が描かれるはずです。

星印が100個描かれました
100個くらいの星印なら、人間でも描けそうですが、100万個の星印を描くことになったら、ものすごく大変です。しかし、コンピューターならば、文句も言わずに100万個の星印を描き続けてくれます。
繰り返しを使ったプログラムを作ってみよう
さあ、いよいよ繰り返しを使ってプログラミングをしてみましょう。
今回のゴールは、先ほどのサンプルにもあった星印を描くことです。でも、いきなり難しいことはできません。まずは基本的な図形を描くことから始めましょう。
今回のゴールは、先ほどのサンプルにもあった星印を描くことです。でも、いきなり難しいことはできません。まずは基本的な図形を描くことから始めましょう。
正三角形を描こう
三角形は図形の基本中の基本です。算数でも三角形からいろいろな図形を学びます。正方形は三角形を2つ合わせたもの、五角形は三角形を3つ組み合わせたものと考えることができます。ということで、最初に正三角形を描くプログラムを作っていきます。
次のURLのスクラッチプロジェクトを開いてください。
https://scratch.mit.edu/projects/640019513/editor/
ここでは、このはちゃんが線を引いてくれます。
さあ「緑の旗が押されたとき」に「100歩動かす」というブロックをつなげて、プログラムを動かしてみましょう。
次のURLのスクラッチプロジェクトを開いてください。
https://scratch.mit.edu/projects/640019513/editor/
ここでは、このはちゃんが線を引いてくれます。
さあ「緑の旗が押されたとき」に「100歩動かす」というブロックをつなげて、プログラムを動かしてみましょう。

ブロック「100歩動かす」をつなげると?
緑の旗をクリックして、プログラムを動かすと、このはちゃんが線を引いてくれますね。では、この動作を使って多角形を描いていきます。
「動かす」ブロックと「回す」ブロックを組み合わせて、正三角形を描いてみましょう。
正三角形の内側の角(“内角”といいます)は、それぞれ60度です。そして、内角の外側にある角(“外角”といいます)の大きさは、120度です。つまり、正三角形の外側にいるこのはちゃんが正三角形を描くためには、120度回らないといけません。
正三角形を描くプログラムは、スクラッチのブロックでは次のようになります。
「動かす」ブロックと「回す」ブロックを組み合わせて、正三角形を描いてみましょう。
正三角形の内側の角(“内角”といいます)は、それぞれ60度です。そして、内角の外側にある角(“外角”といいます)の大きさは、120度です。つまり、正三角形の外側にいるこのはちゃんが正三角形を描くためには、120度回らないといけません。
正三角形を描くプログラムは、スクラッチのブロックでは次のようになります。

スクラッチで正三角形を描くためのプログラム
しかしこのプログラムは、今のままでは、前回習った順次です。これを繰り返しに変えてみましょう。
「順次」を「繰り返し」に書き換えよう
繰り返しを作るコツは、まずは「同じパターン」を見つけることです。
正三角形を描くプログラムでは「100歩動かす」と「右に120度回す」のパターンが3つ並んでいますね。このパターンを繰り返しにしてみましょう。
繰り返しのブロックは、パレットの左側の「制御」から選んでください。
正三角形を描くプログラムでは「100歩動かす」と「右に120度回す」のパターンが3つ並んでいますね。このパターンを繰り返しにしてみましょう。
繰り返しのブロックは、パレットの左側の「制御」から選んでください。

「制御」から「繰り返し」のブロックを選ぼう
今回は「~回繰り返す」を使います。このブロックに、繰り返したい動きをはさみ込みます。このはちゃんは、3本の線を引いて正三角形を描いてしているので、繰り返しの数は3回にします。

3回繰り返してみると?
このプログラムを動かすと、先ほどの順次のときと同じように、正三角形が描かれます。

成瀬 允宣
【GMOインターネットグループ デベロッパーエキスパート / GMOインターネットグループ アプリケーション開発本部 所属】
テックリードとしてWebアプリケーションプロダクト開発に従事するほか、大学講師やKids VALLEY プロジェクトにおける小学校プログラミング教育に携わる。また、カンファレンスなどでソフトウェア開発・設計を主軸に講演活動を行っている。
著書『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本』
X:@nrslibi