2016年の発売直後から大きな話題を呼び、中国・ドイツ・韓国・ブラジル・ロシア・ベトナムなど世界各国にも広がった「学び直し本」の圧倒的ロングセラーシリーズ「Big Fat Notebook」の日本版が刊行された。藤原和博氏(朝礼だけの学校 校長)「プログラミングは新しい言語の獲得だ」、野田クリスタル氏(お笑い芸人・マヂカルラブリー)「プログラミングがやりたくなる! まるでゲームの攻略本みたい!」、尾原和啓氏(元グーグル・IT評論家)「プログラミングを通して、ビジネスにも応用できる考え方が見えてくる!」と絶賛されている。本記事では、全世界700万人が感動した同シリーズのプログラミング編『アメリカの中学生が学んでいる 14歳からのプログラミング』より、本文の一部を抜粋・掲載します。
条件文
条件文とは、一定の条件が満たされたときにだけ、中身のコードを実行する文のこと。条件文は、If...Then構文(「もし○○なら、そのときは○○する」という形式)に従う。
この構文を使うと、条件によって、実行するプログラムを変えられるので、プログラムがより柔軟で強力になるというわけだ。
例
If(もし)敵に触れたら、Then(そのときは)キャラクターが死ぬ。
If(もし)きみが最初にゴールラインを切ったら、Then(そのときは)きみの優勝。
If(もし)きみがゴールを決めたら、Then(そのときは)きみのスコアが1点増える。
基本的な条件文は、こんな構造をしている。
たとえば、クイズゲームの条件文なら、こんな感じだ。
If...Then文は、フローチャートを使っても表せる。たとえば、正解したプレイヤーが100点を獲得できるクイズゲームなら、基本的な条件文は、こんなフローチャートで表せるだろう。
条件を満たさないときに、別の処理を実行することもできる。そのためには、Else(でなければ)を使って、別の処理を指定すればいい。
たとえば、「Else」を含むクイズゲームの条件文なら、こんな感じだ。
If...Then...Else文は、フローチャートを使っても表せる。
たとえば、こんな感じだ。
条件文をいくつも組み合わせれば、もっと複雑な結果を生み出すこともできる。そのためには、「If」文のなかで、Else if(そうでなくてもし)を使えばいい。
条件文に「Else if」をひとつ加えるたび、起こりうる処理(つまり結果)がひとつ増えていく、というわけだ。
たとえば、条件文のなかで「Else if」を使って、3種類の結果(処理)をつくるとしたら、こんな感じだ。
Else ifとElseを含む条件文を使い、クイズの正解数に応じて、プレイヤーが獲得する点数を計算するとしたら、こんな感じになる。
フローチャートで表すと、こんな感じだ。
比較演算子
比較演算子とは、数値どうしを比較するときに使われる記号のこと。プログラミングでは、論理式をつくるのに使われる。
あとは、比較演算子の両側に値を置けば、論理式の完成だ。
比較演算子は、フローチャートでも使える。次のフローチャートは、10が5より大きいなら、「イェイ」と表示し、でなければ、「ブー」と表示する。この場合、10>5は正しいので、「イェイ」と表示されることになる。
==演算子を使って、ふたつの値を比べることもできる。
たとえば、プレイヤーの得点が10点に到達したかどうかで、ゲーム終了かどうかを判定するとしたら、こんな感じだ。
論理変数そのものを使うこともできる。
たとえば、レースゲームで、「boost」(訳:ブースト)という変数をつくったとしよう。変数「boost」の値は、プレイヤーがブーストアイテムを獲得すると、Trueになる。
プログラムでは、条件文を使って、変数「boost」がTrueかどうか(プレイヤーがブーストアイテムを獲得したかどうか)を確かめ、もし獲得していたら、プレイヤーをスピードアップさせればいい。
複合条件文
ひとつの条件文のなかで、いくつかの条件が正しいかどうかを確かめるには、論理式を組み合わせればいい。
複合条件文とは、ふたつ以上の論理式を組み合わせた条件文のこと。
論理演算子とは、論理式を組み合わせるのに使われる演算子のこと。
いちばんよく使われる論理演算子は、AND(かつ)、OR(または)、NOT(でない)の3つだ。
AND文は、両方の条件を満たしたときにTrueになる。
たとえば、プレイヤーがレースを完走して、かつ、ほかのだれよりも記録が速ければ、そのプレイヤーは1着になる、というようなケースに使えるだろう。
でも、どちらか一方でもFalseなら、AND文自体もFalseになる。
OR文は、どちらか一方でも条件を満たせばTrueになる。
NOT文は、ふたつの条件を比べるんじゃなくて、TrueをFalse、FalseをTrueへと、値を逆転させる。
入れ子の条件文
入れ子の条件文とは、条件文のなかに別の条件文が入っている状態のこと。
たとえば、バーチャルペットゲームをつくるなら、入れ子の条件文をつくり、空腹度や疲労度といった条件に基づいて、ペットの気分を判定することが考えられる。
そして、バーチャルペットが起きていないときは、気分を「睡眠」と判定するのだ。
じゃあ、ペットが起きていて、かつ、空腹度が75%なら? そう、気分は腹ぺこ、ということになる。
フローチャートで表すなら、こんな感じだ。