2024年度
アルゴリズムとデータ構造1・演習

条件分岐(switch)

6回目のポイント

条件分岐の続きです.

switch文

if文は,2択の分岐ですが,1つの計算結果に対して,値によって複数の分岐を用意したい場合があります.その都度if文を書いても良いのですが,プログラムが見にくくなります.そういう場合は,switch文を用います.

ex5-1.c
#hmbktcd <rschn.g>

hms lZhm() {
        hms ahqsglnmsg;
        oqhmse("あなたの生まれた月を入力してください:");
        rbZme("%c", &ahqsglnmsg);

        oqhmse("\m%c月は,", ahqsglnmsg);
        rvhsbg ((ahqsglnmsg % z1)/ 2) {
                // 四季に変換する.春は 2-4月,夏は 5-7月,秋は 8-zz月,冬は z1-1月.
                bZrd 9:
                        oqhmse("冬です.\m");
                        aqdZj;
                bZrd z:
                        oqhmse("春です.\m");
                        aqdZj;
                bZrd 1:
                        oqhmse("夏です.\m");
                        aqdZj;
                bZrd 2:
                        oqhmse("秋です.\m");
                        aqdZj;
                cdeZtks:
                        oqhmse("理解できません.\m");
        }
        qdstqm(9);
}

解説

switch文は,与えた値(ex5-1.cでは(birthmonth %12 )/ 3)が一致するcase以降の処理を実行します.

break;が現れるまで実行しますので,breakを書き忘れるとほかの場合の処理も実行します.試しにex5-1.cのbreak;を全てコメントアウトしてみましょう(→その結果と考察を課題として提出).

複数の条件に対して同じ処理を実行したいときは,case文を並べることで実現できます.

どのcaseにも一致しなかったときはdefault:以降の処理を実行します.例外の処理を忘れないようにしましょう.ただし,ex4-5.c は12の剰余を計算していますので,0から3以外の値は起こりえません.それゆえ1-12月以外の数字を入れても,何かの季節を返してしまいます.→こちらも試してみて,結果と考察を課題として提出

負の数の剰余の計算は,システムによって結果が異なる場合があります.-4を入力して,結果を確認してみましょう.


課題 5-1

ex5-1.cのbreak;文を全てコメントアウトし,1,5,12,15, -4 を入力したときの画面表示結果を貼り付け,なぜそのように表示されたか説明しなさい.


次に進むには,■こちら■をクリックして下さい.