2016年の発売直後から大きな話題を呼び、中国・ドイツ・韓国・ブラジル・ロシア・ベトナムなど世界各国にも広がった「学び直し本」の圧倒的ロングセラーシリーズ「Big Fat Notebook」の日本版が刊行された。藤原和博氏(朝礼だけの学校 校長)「プログラミングは新しい言語の獲得だ」、野田クリスタル氏(お笑い芸人・マヂカルラブリー)「プログラミングがやりたくなる! まるでゲームの攻略本みたい!」、尾原和啓氏(元グーグル・IT評論家)「プログラミングを通して、ビジネスにも応用できる考え方が見えてくる!」と絶賛されている。本記事では、全世界700万人が感動した同シリーズのプログラミング編『アメリカの中学生が学んでいる 14歳からのプログラミング』より、本文の一部を抜粋・掲載します。

【超入門!】アメリカの中学生が学ぶプログラミングの条件文Photo: Adobe Stock

条件文

 条件文とは、一定の条件が満たされたときにだけ、中身のコードを実行する文のこと。条件文は、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%なら? そう、気分は腹ぺこ、ということになる。

 フローチャートで表すなら、こんな感じだ。

【超入門!】アメリカの中学生が学ぶプログラミングの条件文