Hour of Codeで学ぶプログラミング基礎の基礎 第10回
繰り返し処理を 完全マスター
映画「アイス・エイジ」のスクラットとwhile文を学ぶ (1/6)
2016年11月01日 12時00分更新
前回に引き続き、オンラインでプログラミングを学べる「code.org」のサイトを利用してプログラミングの基礎を解説します。今回は、迷路のコースのパズル16~20までを進めながら、前回学んだwhile文をしっかり身につけていきましょう。パズル16からは、映画「アイス・エイジ」のスクラットが登場します。
目次
パズル16:新しい繰り返しコマンドwhile文
パズル16は、最少のブロック数でスクラットがどんぐりまでたどり着いたらクリアです。
まずは、「とどくまでくりかえす やること」というブロックを実行した時の下につなぎます。
図を見るとスクラットがどんぐりまで行くには、前に進みながら、角では毎回左に曲がればたどり着くことができそうです。「ひだりにみちがあるなら やること」のブロックを「とどくまでくりかえす やること」の中に入れます。
さらにその中に、「ひだりにまがる」ブロックを入れます。
最後に「まえにすすむ」ブロックを「ひだりにみちがあるなら やること」の下に入れます。
この状態で、コードを表示をタップすると、プログラムは次のようになっています。
while ( notFinished( ) ) {
if ( isPathLeft( ) ) {
turnLeft( );
}
moveForward( );
}
条件の部分が今回はnotFinished( )となっています。新しい繰り返しブロックの「どんぐりに届くまで」の部分です。「どんぐりに届くまで」というのが条件のため、「どんぐりに届いていない」という状況が真の間、処理を繰り返します。そして、どんぐりにたどり着いたら繰り返している処理を終了します。
繰り返すのは、もし左に道があれば左に曲がることと、前に進むことです。図(16_07)のように「まえにすすむ」ブロックは、「ひだりにみちがあるなら やること」のif文の中かっこ{ }の外にあるため、左に道がある場合には左に向きを変えてから進み、そうでない場合にはそのまま前に進みます。どんぐりにたどり着くまで、これらを繰り返すプログラムです。
これまでは実行をタップしてきましたが、ステップというボタンが追加されています。ステップをタップすると、タップするごとに実行中となっているブロックが黄色く変わります。そのため、1行ごとに作ったプログラムでのキャラクターの動きを確認できるようになっています。
そのため、while文やif文などで条件を判定しているステップではキャラクターの動きはなく、前に進む段階でキャラクターの動きが見られます。
それでは、リセットして実行してみましょう。
1マスごとに左に道があるかを確かめながら進みます。
どんぐりにたどり着くまで前進と左に曲がるのを繰り返し、無事にどんぐりを手に入れパズル16をクリアすることができました。
「コードを表示します。」をタップし、プログラムを見てみましょう。
while文全体は、次のような構造をしています。
while ( 条件 ) {
繰り返し実行したい処理( );
}
繰り返し実行したい処理の部分を抜き出すと、次のようになっています。毎回、isPathLeft( )によって左に道があるか判断し、左に道があればturnLeft( );によって左に向きを変え、if文の処理が終わったあとのmoveForward( );で前に進みます。if文の条件が成立しない場合には、turnLeft( );が実行されずにmoveForward( );のみが実行され、前に進むことになります。
if ( isPathLeft( ) ) {
turnLeft( );
}
moveForward( );
「続行」をタップして、次のパズルに進みましょう。
この連載の記事
- 第24回 Minecraftで関数使ったプログラミングに挑戦!
- 第23回 Minecraftで「エージェント」を使ったプログラミングを学ぶ
- 第22回 Swift言語で独自の関数を定義してその役割を学ぶ
- 第21回 iPad上でSwift言語を使ってキャラクターの動きを学ぶ
- 第20回 Minecraft上でアイアンゴーレムやゾンビ操るプログラミング
- 第19回 Minecraft上でニワトリや牛を動かすプログラミング
- 第18回 映画「モアナと伝説の海」のカカモラ戦士の踊りをプログラミング
- 第17回 映画「モアナと伝説の海」のモアナとカカモラの海賊を倒すプログラミング
- 第16回 映画「モアナと伝説の海」のモアナと海賊カカモラの船に近づくプログラミング
- 第15回 映画「モアナと伝説の海」のモアナと魚を捕まえるプログラミング
- この連載の一覧へ