Programming

Day81「反復処理を試す」|Swift Playgrounds 攻略と解答例

コウです、よろしくお願いします!

「ゼロからプログラミングを始める」人に役立つ情報を発信しています。

今回はDay81「反復処理を試す」です。どうぞ!!

小学生から社会人までおすすめ!!プログラミング言語『Swift』について!【今始める理由と学び方】 こうといいます、よろしくお願いします! 小学校で教師をやっていた経験を活かして、 プログラミングについて悩みをお持ちの保護...

解答例

まずは解答例を確認しましょう。

コードは次のようになります。

解答例を動画で確認する

上記のコードを実行した結果がこちらになります。

ステージ攻略「反復処理を試す」

ステージを攻略していきましょう!

クリア条件

今回のクリア条件は、

『ステージのすべてのマスに宝石とスイッチを1つずつ置く』ことです。

配列とループを組み合わせて使います!

for-inループ

例えば今までに学習したやり方でクリアしようとすると画像のようになりますよね。

ひとつひとつ書いていくのは面倒で、まだ5マスだからいいものの、100マスとか1000マスとかだとコードを書くだけで日が暮れそうです。

そんな悩みを解決してくれるのが、『for-inループ』です。

今までの『forループ』と似ていますが、

配列と組み合わせて使います。

列の値を宣言

let columns = [0, 1, 2, 3, 4]

まずは列の値を配列で宣言します。

ステージには5マスありますが、コンピュータは0から数え始めるので

0、1、2、3、4となっています。

配列をvarで宣言したりletで宣言したりするのはなぜ?

varは変数、letは定数ですね。

途中で追加したり、変更する必要がある場合にvarで宣言していればそれができます。逆にletで宣言しているとできません。

後からの変更もできるのであればすべてvarで宣言しておけばいいのではないかとも思いますが、複雑なコードになればなるほど変わらないものとしてletで宣言することが重要になってきます。

for-inループを書く

for currentColumn in columns {

    world.place(Gem(), atColumn: currentColumn, row: 1)

    world.place(Switch(), atColumn: currentColumn, row: 1)

}

そして『for-inループ』の登場です。

わかりやすく以下に書いてみます。

for (ループ内での名前) in (参照する配列の名前) {

    (ループさせたい処理)

}

ひとつずつ確認しましょう。

ループ内での名前

まずはforinの間に『ループ内での名前』をつけます。

これはなんでも大丈夫です。

今回は説明文にあった『currentColumn(現在の列)』としました。

参照する配列の名前

次にinの後に参照する配列の名前を入れます。

初めに宣言した『columns』が入ります。

配列をいくつか宣言している場合には適切なものを選択する必要があります。

ループさせたい処理

今回は、「5マスすべてに宝石とスイッチを設置」したいです。

宝石やスイッチの設置には以下のようなコードを使いました。

world.place(Gem(), atColumn: Int, row: Int)

world.place(Switch(), atColumn: Int, row: Int)

先ほども出しましたが、

Int』に数字を1つずつ入力していくのは大変です。

そこで宣言した配列を使うんですね。

各マスの座標は動画のようになっています。

(0,1)(1,1)(2,1)(3,1)(4,1)ですね。

列の値は『0』『1』『2』『3』『4』です。

行の値はすべて共通して『1』です。

atColumn』はの値、『row』はの値がそれぞれ入ります。

先に行の話をすると、すべて共通しているので『1』になりますね。

そして問題の列。

ここで配列を使います。

配列では『columns』として[0,1,2,3,4]を宣言しました。

よってこの配列を使いたいんですけど、ややこしいのが名前です。

このループ内での名前は『currentColumn』にしましたよね。

だから『columns』ではなく、

currentColumn』を列の値として入力します。

まとめ:反復処理を試す

配列を使ってforループを書きました。

なかなか複雑で難しかったですね。

今回のポイントを振り返りましょう。

ポイント
  • 配列forループを組み合わせると、複雑な繰り返しもこなすことができる。

次回はDay82「ブロックを積む」でお会いしましょう!それでは!!

小学生から社会人までおすすめ!!プログラミング言語『Swift』について!【今始める理由と学び方】 こうといいます、よろしくお願いします! 小学校で教師をやっていた経験を活かして、 プログラミングについて悩みをお持ちの保護...