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つの方法によって分けようを学びます。