カナデKanade

6. 値で分ける(によって分けよう)

1つの値が何なのかによって、いくつもの道にすっきり分けましょう。

この章で学ぶこと

  • 1つの値によって道を分ける(〜によって分けよう:)
  • いくつかの値を1つの道にまとめる、残りは:
  • 下の道へ続ける(次に続けよう)
  • もしとどう使い分けるか

どんなときに使うの?

5章のもしで、分かれ道をいくつも作れました。でも、1つの名札がどんな値かだけを見て分けるときは、同じ比較を何度も書くことになって長くなります。

『曜日』を「土曜日」にしよう

もし(『曜日』が「土曜日」と同じだ)なら:
    「週末!」を出力しよう
もしくは(『曜日』が「日曜日」と同じだ)なら:
    「週末!」を出力しよう
それ以外なら:
    「平日」を出力しよう

こんなときに〜によって分けようを使うと、ずっと短く読みやすくなります。

『曜日』を「土曜日」にしよう

『曜日』によって分けよう:
    「土曜日」、「日曜日」の場合:
        「週末!」を出力しよう
    残りは:
        「平日」を出力しよう

基本の形

『会員ランク』を「一般」にしよう

『会員ランク』によって分けよう:
    「VIP」の場合:
        「ようこそ、特別なお客様!」を出力しよう
    「一般」の場合:
        「ご来店ありがとうございます。」を出力しよう
    残りは:
        「会員登録をお願いします。」を出力しよう
  1. 『会員ランク』によって分けよう: — 何を見て分けるかを決めます。
  2. 「VIP」の場合: — その値が「VIP」と同じなら、下のまとまりを実行します。
  3. 残りは: — どの場合にも合わないときに実行します。(なくてもかまいません。)

字下げが2段になっていることに注目してください。の場合:は1段、その中でやることは2段字下げします。

数字でも分けられます。

『番号』を2にしよう

『番号』によって分けよう:
    1の場合:
        「1番メニュー: はじめる」を出力しよう
    2の場合:
        「2番メニュー: 設定」を出力しよう
    残りは:
        「そのメニューはありません。」を出力しよう

いくつかの値を1つの道に

値を読点やコンマで並べると、そのどれか1つと同じときに実行されます。

『宝石』を「シルバー」にしよう

『宝石』によって分けよう:
    「ゴールド」、「シルバー」の場合:
        「貴金属です。」を出力しよう
    残りは:
        「一般的な鉱物です。」を出力しよう

合う場合がないとき

どの場合にも合わないのに残りは:もないときは、何も起こらずに次の行へ進みます。エラーではありません。

『曜日』を「水曜日」にしよう

『曜日』によって分けよう:
    「月曜日」の場合:
        「一週間の始まり!」を出力しよう
    「金曜日」の場合:
        「もうすぐ週末です!」を出力しよう

「おしまい!」を出力しよう

おしまい!だけが出ます。思いがけない値が来たときに気づきたいなら、残りは:を必ず書いておいてください。


下の道へ続ける: 次に続けよう

ふつうは、合った道1つだけを実行して終わります。道の最後に次に続けようと書くと、すぐ下の道も続けて実行します。高いランクが低いランクの特典まで全部もらえる場合に便利です。

『会員ランク』を「VIP」にしよう

『会員ランク』によって分けよう:
    「VIP」の場合:
        「伝説の剣をもらいました。」を出力しよう
        次に続けよう
    「ゴールド」の場合:
        「魔法のポーションをもらいました。」を出力しよう
        次に続けよう
    残りは:
        「初心者用の包帯をもらいました。」を出力しよう

VIPは3つ全部を、ゴールドは下の2つを、そのほかの会員は包帯だけをもらいます。『会員ランク』を変えながら実行してみてください。


もしとによって分けよう、いつどっちを?

こんなときは これを
1つの値が何と同じかで分けるとき によって分けよう
大きい・小さいのような範囲で分けるとき(90点以上など) もし
いくつかの名札を一緒に見るとき(かつ、または) もし

によって分けようは「同じかどうか」だけを調べます。「90以上」のような範囲はもしで書いてください。


よくある間違い

1. 文字と数字を混ぜる

「1」(文字)と1(数字)は違う値なので、おたがいに合いません。入力してもらった値で分けるときは特に気をつけてください。2章のように【数字】で入力してもらおうで受け取るか、場合を文字で書いてください。

『選択』を「1」にしよう

『選択』によって分けよう:
    1の場合:
        「数字の1と合いました。」を出力しよう
    残りは:
        「文字の1は、数字の1とは違います。」を出力しよう

2. 字下げの段を取り違える

の場合:と残りは:はによって分けよう:より1段内側、やることはそこからさらに1段内側です。


まとめ

やりたいこと 書き方
値によって分ける 『値』によって分けよう:
1つの場合 「値」の場合:
いくつかの値をまとめて 「あ」、「い」の場合:
それ以外のすべての場合 残りは:
下の道も実行する 次に続けよう

練習問題

1. 季節(「春」、「夏」、「秋」、「冬」)によって、合う果物を出力してみましょう。それ以外の値なら「そんな季節はありません。」と出力してください。

答えの例
『季節』を「夏」にしよう

『季節』によって分けよう:
    「春」の場合:
        「いちご」を出力しよう
    「夏」の場合:
        「スイカ」を出力しよう
    「秋」の場合:
        「りんご」を出力しよう
    「冬」の場合:
        「みかん」を出力しよう
    残りは:
        「そんな季節はありません。」を出力しよう

2. 月(1〜12)を見て、何日まであるかを出力してみましょう。(2月は28日、4・6・9・11月は30日、それ以外は31日)

答えの例
『月』を4にしよう

『月』によって分けよう:
    2の場合:
        「28日まで」を出力しよう
    4, 6, 9, 11の場合:
        「30日まで」を出力しよう
    残りは:
        「31日まで」を出力しよう

3. 点数が90以上なら「A」、80以上なら「B」と出力したいです。によって分けようともしのどちらが合っているでしょうか?

答えを見る

もしです。によって分けようは値が同じかどうかだけを調べるので、「90以上」のような範囲は表せません。5章の練習問題のように、もし … もしくは …で書いてください。

次の章では、値をいくつもまとめて扱うリストと辞書を学びます。

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