【ブロックリー】鳥の考え方と学習内容を解説します

スポンサーリンク

何を学ぶことができるの?
難問で全然解けません!

こうした悩みを解決します。

記事の内容:
・鳥の学習内容
・レベル10の考え方

解説の根拠

組み込みエンジニアをやってます。
プログラミングが小学校で義務教育となって云々…
何か子供達に教える面白い教材ないか探していた所、ブロックリーを発見。
前回の迷路では、whileとif~elseを学びました。
続いて鳥をやってみたところ、レベル9でGoogleから
「難問です!スキップもできますよ」
と言われたので、ムキになって解けるまで頑張ってみました。
そしてレベル10も解けたので、回答を載せます。

スポンサーリンク

学習内容

鳥では、分岐処理を深堀りするとともに、座標、不等号、角度、フラグを学習します。

スタートから虫を持って巣に戻る(虫がなく障害物をよけながら、のことも(上の図もそう))プログラムを作ります。
プログラミングの新しい制御を学習するのではなく、
複雑な条件でも適切に分岐処理を行うことができることを求めます。
後半になってくると、条件も2つ以上になって複雑度が増します。
プログラミング未経験の人には、
思ったとおりに動かず悔しい!うまく動いたらワクワク!がたくさん味わえる内容
になっていると思います。

このステージで重要なのがフラグです。

フラグ

座標、不等号、角度は算数で学習してそのまま展開しますが、
フラグに関してはプログラミング的な要素を含みます。
上の図で言うと”虫を持っていないなら”がフラグに相当します。
フラグは0か1をセット(orリセット)するもので、
フラグの状態を参照して処理を切り替える分岐は、実際のプログラミングでも多用します。

JavaScriptで見ると、if(noWorm()){~}となっていて、
noWorm関数が虫を持っているかフラグを参照しに行く処理をしていると思われます。
(noWorm関数内部を参照できないので分からないけど、普通はフラグをリターンさせるだけ)

フラグは単純ですけど、フラグ変数の参照範囲(スコープ)を学習するには良い材料で
実際にプログラミングするときに、改めて勉強すると良いと思います。

レベル10の答え

早速ですが、鳥 レベル10の答えを下図で示します。

レベル10の回答を組み込みエンジニアが見ると、

現場の厳しい人
現場の厳しい人

なーんで、ifでこんなに分岐作っちゃってんの!?
可読性が落ちるの分かる?
あと無駄にクロック使ってもったいないよ。
虫を持っているかフラグでswitchさせて。

という厳しい声が聞こえてきそうですが、
まだswitchを学習していないので、分岐処理だけでこなします。

さて、鳥のレベル10(レベル9も)ではちょっとめんどくさい処理をしなければなりません。
というのも、この分岐処理、
・垂直に上がって(もしくは下がって)、斜め方向に下がる(上がる)処理ができない
・水平に右にずれて(左にずれて)、左斜め方向(右斜め方向)に動く処理ができない
という制限がかかってしまうのです。

だから、そういう処理をしたければ、
・垂直方向から斜め移動だったら、水平方向に移動する処理
・水平方向から斜め移動だったら、垂直方向に移動する処理
を一旦かませないと、いけないのです。これに気づくことができれば解くことができます。

私はこれに気づくのに30分以上かかりました…体感としては迷路レベル10より難しいです。

まとめ

・鳥では、分岐処理を深堀りするとともに、座標、不等号、角度、フラグを学習します
・このステージで重要なのはフラグです
・レベル9、レベル10は一旦水平か垂直に動く処理をかませないと答えにたどり着かないです

1+

最後まで読んでいただきありがとうございました!この記事が気に入ったらハートのいいね!ボタンを押して頂けると嬉しいです!
今後の励みにします!(ちなみに、押すとボタン周辺にハートがフワフワ〜っと出てきて少し幸せな気分になれます笑)

プログラミング
カフェレストラン女神湖駅

コメント