C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。今回は、複数選択処理に用いられるswitch文を使い、入力された月に該当する季節を表示するプログラムを作成します。
本連載では、これから組み込みシステムのプログラミングを学びたい人向けに、C言語を使ったマイコン制御プログラムの“イロハ”を解説していきます。
毎回少しずつステップアップしていけるよう、本文の最後で問題を出し、次回その解答と解説を紹介していきます。では早速、前回の問題を振り返ってみましょう。
何月かを入力し、表のようにその季節を表示するプログラムを作成してください。
月 | 季節 | |
---|---|---|
3、4、5 | 春 | |
6、7、8 | 夏 | |
9、10、11 | 秋 | |
12、1、2 | 冬 | |
今回は、「switch文」を紹介します。switchは、複数に分かれる選択処理に対応するための構文です。ちなみに、C言語の選択文はifとswitchの2つしかありません。
switch文は「caseラベル」を選択肢とし、式の値に応じた処理を実行することができます。問題5は、「入力された月に該当する季節を表示する」問題でした。このような問題では、switch文を使うと見通しの良いプログラムが書けます。
それでは、問題5の解答を「season.c」に示します。
#include <stdio.h> int main(void) { int month; printf("月を入力してください->"); scanf("%d", &month); switch (month) { case 3: case 4: case 5: printf("春です\n"); break; case 6: case 7: case 8: printf("夏です\n"); break; case 9: case 10: case 11: printf("秋です\n"); break; case 12: case 1: case 2: printf("冬です\n"); break; default: printf("月が誤っています\n"); } }
season.cを実行すると、次のような結果になります。
以下に、season.cのフローチャートを示します。“ひし形”のフローチャート記号は「選択」を意味し、int型の変数「month」の値に対応する処理を、以下の複数候補の中から選びます。選択肢が多数あることから「多岐選択」と呼ばれます。
switch文の構文は次のようなものです。
switch ( 式 ) { case 定数式(1) : 文の並び case 定数式(2) : 文の並び case 定数式(3) : 文の並び ……中略…… default : 文の並び }
switch文では、「switch」に続くかっこの中の式を評価します。式に1つの変数が記述されているswitch文をよく見掛けますが、計算式などを記述することも可能です。ただ、いずれの場合であっても式の値は整数でなければなりません。
「case」はswitchに対応するラベルで、caseの後ろに定数を書いてswitchの値に対応する処理を示します。
caseの一連の文の終わりには「break」を記述します。break文は、その時点でswitch文の実行を終了させて、プログラムの実行をswitchの後へ移動させます。ちなみに、C言語ではbreak文を分岐文(ifとswitchは選択文)と呼んでいて、break文はgoto文やreturn文などと同じ分類になっています。
「default」もswitchに対応するラベルで、defaultに書かれた文は、switchの値とcaseの定数が1つも一致しないときに実行されます。switch文にdefaultはなくても構いません。その場合、switchに対応するcaseがなかったときは何も実行されません。
Copyright © ITmedia, Inc. All Rights Reserved.