くりかえしは、省略の文法

よみもの+手を動かす時間:およそ25分

あなたはすでに、ループを使っている

「ドアを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回ノックして」と、部品の並びまで同じです。

ここで実験です。43 に変えて、90120 に変えると? 予想してから実行してください。

数字をいじる、という遊び

くりかえしが面白いのは、ここからです。回数と角度を、すこしずつずらしてみてください。

にわ語
いろ を むらさき にする
12 かい くりかえす {
  ほし を かく
  30 すすむ
  みぎ へ 30 まわる
}

ここに絵があらわれます

Ctrl+Enter でも実行できます

1230 の組み合わせで、模様は一変します。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 にする }——星がらせん状にふくらんでいく紋様になります。でも、あなたが「これだ」と思ったものが、今日の正解です。

このレッスンで分かったこと

  • くりかえしは新概念ではなく、日本語にもとからある省略の形式化
  • 書き方:回数 かい くりかえす { … }
  • 「またこれか」と感じたら、短くできる印
  • くりかえしは入れ子にできる。小さなまとまりが、大きな構造になる