このページの本文へ

前へ 1 2 3 4 5 6 次へ

Hour of Codeで学ぶプログラミング基礎の基礎第10回

繰り返し処理を 完全マスター

映画「アイス・エイジ」のスクラットとwhile文を学ぶ

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( );

 「続行」をタップして、次のパズルに進みましょう。

前へ 1 2 3 4 5 6 次へ

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!