くりかえしは、省略の文法
あなたはすでに、ループを使っている
「ドアを3回ノックしてください」。この文を聞いて、あなたは正確に3回ノックできます。「ノックして、ノックして、ノックして」と言われる必要はありません。
つまり日本語には、くりかえしを省略して伝える文法が最初から備わっています。プログラミングのループは、新しい難しい概念ではありません。あなたが毎日使っているこの省略を、コンピュータに通じる形にしただけです。
省略しない書き方の、つらさ
まず、省略せずに正方形を描いてみます。
50 すすむ みぎ へ 90 まわる 50 すすむ みぎ へ 90 まわる 50 すすむ みぎ へ 90 まわる 50 すすむ みぎ へ 90 まわる
ここに絵があらわれます
Ctrl+Enter でも実行できます
8行のうち、ちがう行は1行もありません。同じ2行が、4回書かれているだけです。書きながら「またこれか」と感じたら、その感覚は正しい。「またこれか」は、プログラムを短くできる印です。
「かい くりかえす」
にわ語の省略の文法は、こう書きます。
4 かい くりかえす {
50 すすむ
みぎ へ 90 まわる
}ここに絵があらわれます
Ctrl+Enter でも実行できます
8行が4行になりました。{ と } で囲まれた部分が「くりかえすひとまとまり」、その前の 4 かい が回数です。日本語の「3回ノックして」と、部品の並びまで同じです。
ここで実験です。4 を 3 に変えて、90 を 120 に変えると? 予想してから実行してください。
数字をいじる、という遊び
くりかえしが面白いのは、ここからです。回数と角度を、すこしずつずらしてみてください。
いろ を むらさき にする
12 かい くりかえす {
ほし を かく
30 すすむ
みぎ へ 30 まわる
}ここに絵があらわれます
Ctrl+Enter でも実行できます
12 と 30 の組み合わせで、模様は一変します。36 かい と みぎ へ 10 まわる にしたら? すすむ の距離を増やしたら?
ひとつだけ種を明かすと、回数 × 角度が 360 になると、模様はちょうど一周してつながります。4×90も、12×30も、36×10も360。circleの語源どおり、ぐるりと一回り。数学が苦手でも大丈夫です——いま、模様を見ながら確かめたことが、そのまま数学だからです。
⟡ よりみち:この模様の名前
くりかえしで描くこういう幾何学模様は、1960年代の教育用言語 LOGO の「タートルグラフィックス」が元祖です。画面の中のカメ(タートル)に「進め」「曲がれ」と命じて絵を描く。にわ語の すすむ まわる は、その60年前の発明への敬意をこめた直系の子孫です。
くりかえしの中の、くりかえし
{ } の中には、どんな文でも入ります。名づけの文も、色の付け替えも——そして、くりかえし自身も。
いろ を そら にする
6 かい くりかえす {
4 かい くりかえす {
40 すすむ
みぎ へ 90 まわる
}
みぎ へ 60 まわる
}ここに絵があらわれます
Ctrl+Enter でも実行できます
読み方は、内側からです。内側の4回は「正方形を1つ描く」。外側の6回は「正方形を描いては、60度まわる」。正方形が6枚、扇のように開く。小さなまとまりを作って、それをさらにくりかえす——この入れ子は、音楽のフレーズが繰り返されて曲になるのと同じ構造です。
✎ 演習:あなたの紋様をつくる
下のエディタで、回数・角度・距離・色・形を自由に組みかえて、「これは自分の模様だ」と言えるものをひとつ作ってください。正解はありません。とまらなくなったら、それが完成の合図です。
8 かい くりかえす {
まる を かく
20 すすむ
みぎ へ 45 まわる
}ここに絵があらわれます
Ctrl+Enter でも実行できます
ヒント1(考え方)
変える場所は5つ:回数、角度、距離、色、形。一度にひとつだけ変えると、どの数字が何を効かせているかが見えてきます。
ヒント2(おすすめの実験)
回数×角度が360から少しずれる組み合わせ(例:7 かい と 50)を試してください。模様が閉じずに、少しずつ回転しながら重なっていきます。おおきさ をくりかえしの中で付け替えるのも劇的です:おおきさ を おおきさ + 5 にする
こたえ(の一例)
いろ を だいだい にする のあと、18 かい くりかえす { ほし を かく / 15 すすむ / みぎ へ 20 まわる / おおきさ を おおきさ + 3 にする }——星がらせん状にふくらんでいく紋様になります。でも、あなたが「これだ」と思ったものが、今日の正解です。
このレッスンで分かったこと
- くりかえしは新概念ではなく、日本語にもとからある省略の形式化
- 書き方:
回数 かい くりかえす { … } - 「またこれか」と感じたら、短くできる印
- くりかえしは入れ子にできる。小さなまとまりが、大きな構造になる