
Swiftはじめました 第4回

こんにちは。ツクリテ業務担当のムゥです。9月に入りましたがまだ秋は遠い蒸し暑さ。日本の秋は消滅したんじゃないかと思わずにはいられません。暑いの苦手なのですが、バテない程度にがんばりたいと思います。。。最後までお付き合いください!
前回まで
前回は関数の勉強をしましたね。
func 〇〇(){
codeA
codeB
}
〇〇にはまとめたい作業の名前、codeA,Bはまとめたい作業のコードを入力すれば良いということでした。
関数と聞いた時は不安しかありませんでしたが、なんとか最後までできて安心しました。
今回は新たにforループを学んでいきます。
forループとは
どういうことかと言いますと、読んで字のごとくループについてのお話です。繰り返しの動作を指定するみたいなことなのですが、前回学んだfuncとは違います。
これも説明動画を見てもらえたら手っ取り早いですね。
非常にわかりやすい。。。さすがAppleさんですね。動画でおわか り頂けたかと思いますが、forループとは繰り返しする動作とその一連の動作を何回ループさせるかを指示することができるコードになります。
例えばforループで、move Forward()を4回繰り返すという指示をしたら、4歩前に進むということですね。
それでは早速実践してみましょう!
ここのステージでは同じ動作の繰り返しでジェムをゲットすることがお題になります。

画像を見ると、以下のような繰り返しでジェムを取れることがわかりますね。
前に進む
前に進む
ジェムを取る
前に進む(ワープホール)
①〜④を5回繰り返すことで全てのジェムが取れるのです。よく考えられてますな。。
この動作をforループのコードの形式に当てはめてみましょう!
画像左側のコード入力画面には小さいマスと大きいマスがありますよね。大きいマスには繰り返したい動作となる①〜④を、小さいマスには繰り返したい回数を数字で入力すると。。。
しず太郎のはしゃぎっぷりが微笑ましいですね。
さすが私の見込んだキャラクター・・・毎晩枕元にいてほしいですね!
関数のファーストステップでは、まとめる作業を考えることでしたが、forループでは繰り返す動作を考えるというところでしょうか。。理解しました。
ちなみに、今までのコードを入力していく作業のことを「コーディング作業」と呼ぶようです。
また一つ知力が上がりました。
それではどんどん次いきましょー!

ここのテーマは4辺のループということなので、一つの辺をどのように進めるかを単独で定義してみると、すんなりまとまりました。
なんだか私、コツを掴んだ気がします。
この調子で次ステージもクリアできたので、ここでは飛ばします!
今回ご紹介する最後のステージですが、、、先程、コツを掴んだ気でいましたが、あれは気のせいでした。すみません。
ここのステージではかなり手こずりました。。

このステージで繰り返しを探せって、、ちょっと何言ってるかよくわかんないんですけど。って思いますよね。
大丈夫です私も同じ気持ちです。
ここで思い出していただきたいのですが、前回の記事で頭の中が散らかったら全部のコードを書き出してみるっていうお話をしましたよね?そこで、このステージではワープホールを使ったルートを考え、コードを一通り書いてみるという方法で進めてみました。
全て並べてみると行数が膨れ上がってしまいましたが、、、その中からパターン化できる箇所を抜粋して関数を作ります。
関数①(func~)
moveForward()
moveForward()
collectGem()
turnRight()
関数②(func~)
moveForward()
turnLeft()
あとはこの2つの関数をforループで繰り返しの指示をするだけです!
ここの難しさは、達成のためのルートを考えるところかもしれません。
ワープホールに入って出てきた時の向きや、複雑に見える地形をどのように進むかなどを考えてルート決定することにだいぶ頭を使いました。
私の頭脳ではコレが限界でしたが、本当はもっと最適なルートもあったかもしれません。。
ぜひ皆様も挑戦してみていただければと思います。
今日はここまでのご紹介ですが、初期に比べて頭を使うことが増えてきているように感じませんか?
ステージを経るにつれて難易度が確実に上がってますよね。
そろそろ頭が沸騰しそうですが、次回も引き続きforループです。。。まだ終わっていないのです。なんてこったです。
次回でforループは終わる予定ですのでもう少し一緒に頑張りましょう!それではまた〜👋