カナデKanade

5. 条件文(もし〜なら)

状況によって違うことをするように作りましょう。

この章で学ぶこと

  • 真と偽、そして比べること
  • もし … なら:、もしくは、それ以外なら:
  • いくつかの条件をまとめる(かつ、または)

ここまでのプログラムは、いつも同じことをしていました。今度は「雨が降ったら傘を持って、そうでなければそのまま出かけよう」のように、状況によって違うことをさせてみます。


真と偽

条件は最終的に、正しい(真)か正しくない(偽)のどちらかに決まります。この2つの値を論理値といいます。比べると論理値が出てきます。

『年齢』を15にしよう
(『年齢』が19より大きい)を出力しよう
(『年齢』が10より大きい)を出力しよう

偽と真が出ます。

比べる言葉

書き方 意味 記号で書くと
(『a』が5と同じだ) aが5と同じ (『a』 == 5)
(『a』が5と違う) aが5と違う (『a』 != 5)
(『a』が5より大きい) a > 5 (『a』 > 5)
(『a』が5より小さい) a < 5 (『a』 < 5)
(『a』が5以上だ) aが5か、それより大きい (『a』 >= 5)
(『a』が5以下だ) aが5か、それより小さい (『a』 <= 5)

言葉で書いても、記号で書いても同じです。好きなほうを使ってください。「5より大きい」は5を含まず、「5以上」は5を含むことだけ気をつけてください。


もし〜なら

もし(条件)なら:の次の行を字下げすると、条件が真のときだけそのまとまりが実行されます。(コロンと字下げは0章で見ました。)

『速度』を120にしよう

もし(『速度』が100より大きい)なら:
    「速すぎます!スピードを落としてください。」を出力しよう
「運転中」を出力しよう
  • 『速度』が120なので条件が真 → 警告が出ます。
  • 最後の行は字下げしていないので、条件に関係なくいつも出ます。

『速度』を80に変えて、もう一度実行してみてください。警告なしで運転中だけが出ます。


そうでなければ: それ以外なら

条件が偽のときにやることは、それ以外なら:の下に書きます。

『年齢』を15にしよう

もし(『年齢』が19以上だ)なら:
    「成人です。」を出力しよう
それ以外なら:
    「未成年です。」を出力しよう

2つのまとまりのうち、必ず1つだけが実行されます。


いくつもの分かれ道: もしくは

分かれ道が3つ以上なら、もしくはをつなげます。上から順番に調べて、最初に真になったまとまり1つだけが実行されます。

『点数』を85にしよう

もし(『点数』が90以上だ)なら:
    「A」を出力しよう
もしくは(『点数』が80以上だ)なら:
    「B」を出力しよう
もしくは(『点数』が70以上だ)なら:
    「C」を出力しよう
それ以外なら:
    「もう一度挑戦!」を出力しよう

85点は、1つ目の条件(90以上)が偽、2つ目の条件(80以上)が真なので、Bだけが出ます。3つ目の条件(70以上)も真ですが、もう前で1つ実行されたので調べません。だから大きい基準から順番に書くことが大事です。


いくつかの条件をまとめる: かつ、または

まとめる言葉 真になるとき 例
かつ 両方がどちらも真のとき 20歳以上かつ30歳未満
または 両方のうち1つでも真のとき 雨または雪

それぞれの条件は、別々にかっこで囲んでください。

『年齢』を25にしよう

もし(『年齢』が20以上だ)かつ(『年齢』が30より小さい)なら:
    「20代です!」を出力しよう
『天気』を「雪」にしよう

もし(『天気』が「雨」と同じだ)または(『天気』が「雪」と同じだ)なら:
    「傘を持っていってください。」を出力しよう

論理値を名札に入れる

比べた結果を名札に入れておくと、条件が読みやすくなります。

『年齢』を25にしよう
『成人』を(『年齢』が19以上だ)にしよう

もし 『成人』 なら:
    「入場できます。」を出力しよう

「そうでないとき」を調べたいなら、偽と同じだで比べてください。

『会員』を偽にしよう

もし(『会員』が偽と同じだ)なら:
    「会員登録をしてください。」を出力しよう

条件の中に条件

まとまりの中に、もう一度もしを書けます。字下げをもう1段増やせばいいんです。

『年齢』を20にしよう
『チケット』を真にしよう

もし(『年齢』が19以上だ)なら:
    もし 『チケット』 なら:
        「どうぞお入りください!」を出力しよう
    それ以外なら:
        「先にチケットを買ってください。」を出力しよう
それ以外なら:
    「成人のみ入場できます。」を出力しよう

よくある間違い

1. 条件に真・偽ではない値を入れる

もしには、真か偽になる式だけが使えます。数字や文字をそのまま入れるとエラーになります。カナデは「0なら偽」のような決まりで済ませません。間違いが静かに見過ごされないようにするためです。

『年齢』を20にしよう

もし(『年齢』)なら:
    「大人です!」を出力しよう

確かめたいことを、比較ではっきり書いてください。値が空かどうかは、空っぽと比べます。

『年齢』を20にしよう
『あだ名』を空っぽにしよう

もし(『年齢』が19以上だ)なら:
    「大人です!」を出力しよう
もし(『あだ名』が空っぽと同じだ)なら:
    「あだ名はまだありません。」を出力しよう

2. コロンや字下げを忘れる

ならの後ろのコロン(:)と、その下の行の字下げを必ず書いてください。字下げしていない行は、条件に関係なく実行されます。

3. 分かれ道の順番を逆にする

もしくはは、上から最初に真になった1つだけを実行します。「70以上」を「90以上」より先に書くと、95点もCになってしまいます。


まとめ

やりたいこと 書き方
条件が真のとき もし(条件)なら: + 字下げしたまとまり
そうでないとき それ以外なら:
別の条件 もしくは(条件)なら:
どちらも真 (条件1)かつ(条件2)
1つでも真 (条件1)または(条件2)
同じ/違う (『a』が5と同じだ)、(『a』が5と違う)
大きさを比べる より大きい、より小さい、以上だ、以下だ

練習問題

1. 数が偶数か奇数かを出力してみましょう。(ヒント: 3章の余り%)

『数』を7にしよう
答えの例
『数』を7にしよう
もし(『数』 % 2が0と同じだ)なら:
    「偶数」を出力しよう
それ以外なら:
    「奇数」を出力しよう

2. 気温によって服装を教えてくれるプログラムを作ってみましょう。28度以上なら「半袖」、15度以上なら「長袖」、それより低ければ「ダウン」です。

答えの例
『気温』を20にしよう
もし(『気温』が28以上だ)なら:
    「半袖」を出力しよう
もしくは(『気温』が15以上だ)なら:
    「長袖」を出力しよう
それ以外なら:
    「ダウン」を出力しよう

3. 乗り物に乗るには、身長が120cm以上で、年齢が7歳以上でなければなりません。乗れるかどうかを出力してみましょう。

答えの例
『身長』を125にしよう
『年齢』を6にしよう
もし(『身長』が120以上だ)かつ(『年齢』が7以上だ)なら:
    「乗れます!」を出力しよう
それ以外なら:
    「まだ乗れません。」を出力しよう

次の章では、値によっていくつもの道に分ける、もう1つの方法によって分けようを学びます。

プレイグラウンド
結果
コードを書いて「実行」ボタンを押してください。