forループ 1. ループを使う

同じ処理を何度も繰り返すfor文の登場です。
基本形はこんな感じ。

関数と同じで{}にはさまれた部分が繰り返し実行される内容になります。iとかinとか若干意味不明な部分がありますが、当面はそういうものだと思っておきます。特にSwift Playgroundsではfor文のショートカットをタップすれば、基本文法は自動で入力されて、繰り返したい数字を入れるだけですし。とにかく{}で繰り返す内容をサンドすることだけ注意しておきましょう。たまにうっかり}を消してしまったりしがちなので。またこれもfuncと同じく、{と}の間の行は先頭にスペース4つ入れて字下げしておくとコード全体の見通しがよくなるのでオススメです。

このステージでは、「2歩進み宝石を取り、さらに1歩進む」とワープを通って最初の行の2つ隣の列に移動します。なのでこれをパターンとして列の数(5回)繰り返せばクリアできます。
今までなら

などとするところでしょう。しかしいくら関数が繰り返しに便利だといっても、こう単純に何度も同じコマンドを書くのはめんどくさいですし、後で何回繰り返しているのかも数えないとわかりません。
そこで同じことをその場で繰り返すだかならfor文の方が便利というわけです。

コマンド 5. バグを見つけて直す

ある程度完成しているコードからバグ(間違い)を見つけるステージです。
ある行のコマンドが少し早すぎるタイミングで書かれているので、順番を入れ替えて少し後に実行されるように変更する必要があります。

このステージは修正操作の練習でもあります。単純に間違った行を消して、正しい場所に入れ直してもいいんですが、ここでは手順2,3にある方法を試してみてください。
2では移動させたいコマンドをタップします。するとコマンド全体が青色でハイライトされます。
次に3にあるように、青色になった部分を押さえ、指を離さずに押さえたまま指を移動します(ドラッグ操作)。この時、慣れないうちは右手を使うといいでしょう。青い部分をドラッグすると、指がある辺りの先頭(左端)に青い縦線が表示されます(左手だと自分の手に隠れて見辛いので是非右手でやってみてください)。この青線は、「今指を離すとここに移動するよ」という意味です。周りの行が青線を避けるようにニュルっと動いていきます。なので、最初に青くしたコマンドを新しく置きたい場所に青線をあわせて指を離します。
慣れるまでちょっと面倒ですが、憶えておくとちょっと便利です。ただし必須の操作ではありませんので、どうしても上手くできなくても気にせず先に進んで大丈夫です。プログラムを学ぶということとはあまり関係がない裏技のようなものです。

以下が修正後のコードです。

forループ 7. 4つの場所に4つの宝石

forループ編の最終問題だけあってパット見ややこしそうなステージです。
ただし落ち着いてじっくり眺めるとやはりパターンがあることがわかります。宝石はタイトルの通り4カ所に固まっています。その並びに共通性があることに注目してください。そうです。スタート地点から見て「┴」の形に並んでますね。そして右の方にいくとワープがあります。ワープを抜けた位置を新たなスタート位置と考えると、まったく対称の配置で宝石と次のワープが並んでいるんじゃないでしょうか?

また直近の┴に並んだ4つを取る中でもパターンがあります。そこは連続した繰り返しなのでfor文を作って解決してみました。こうするとまたちょっとコードを短くシンプルになります。

最初からなにもかもfor文やfunc文に押し込む必要はありません。最初はベタに1動作1行で書き下していってもいいでしょう。プログラムはまずは目的が達成できることが第一です。
そうして出来上がった後で、もし余裕があればパターンを探してfuncやforに置き換えていきましょう。段々慣れてくればコードを書く前からパターンが読み取れるようになるかも知れません。

forループ 6. 右にも左にも

スタート地点を基点に、右に宝石が2つ、左に閉スイッチが2つあり、それが3列続くというステージです。
ここでも色々なやり方がありますが、私は、「宝石をとり戻る」「スイッチを入れ戻る」という2つのパターンを関数にし、それをfor文で繰り返すというアプローチを取りました。宝石とスイッチ1行文で1つの関数にしてもいいし、まずは宝石だけとって次にスイッチ、というやり方でもいいでしょう。

1列が終わって前の列に進む処理は本編のfor文の中に書いてもいいんですが、毎回必ずtoggle2switches()の直後に実行されることになるので、まとめてしまいました。ただしこれだと3列終わった後に無駄に4列目に進んでしまうという弱点がありますね。

forループ 5. 3つの分かれ道

3列ある脇道の奥にスイッチがあります。列と列は同じだけ離れているので、 「次の列の入り口まで進み、右を向き、スイッチまで7歩歩き、スイッチを入れ、振り向き、脇道の入り口まで7歩戻り、次へ進める様向き直る」がパターンでしょうか。その中で、7歩進むのが生き帰りで2回あるので、それを関数として切り出してみました。

このように、どちらも繰り返し使うパターンを見つけた時に便利なfor文とfunc文ですが、for文はその場で同じ内容を連続して繰り返すのに使い、funcは分散してあちこちに出現するパターンをまとめるのに使う、という違いを憶えておきましょう。