あるアルゴリズムは,年と月と日を表す整数値を入力にとり,曜日を表す1個の整数値を求めます.1は月曜日,2は火曜日,…,6は土曜日,そして7は日曜日にそれぞれ対応します*1.年月日のうち日を表す英単語はdayなのに対し,曜日はday of weekとなりますので頭文字をとってdowという名前で変数を宣言し,そこに,曜日を表す整数値を格納したとします.そしてその値に応じて,何曜日なのかを出力することにします.
これはifを並べて,書くことができます.こうです.
if (dow == 1) { printf("月曜日\n"); } if (dow == 2) { printf("火曜日\n"); } if (dow == 3) { printf("水曜日\n"); } if (dow == 4) { printf("木曜日\n"); } if (dow == 5) { printf("金曜日\n"); } if (dow == 6) { printf("土曜日\n"); } if (dow == 7) { printf("日曜日\n"); }
else ifを使って,書き直してみましょう.
if (dow == 1) { printf("月曜日\n"); } else if (dow == 2) { printf("火曜日\n"); } else if (dow == 3) { printf("水曜日\n"); } else if (dow == 4) { printf("木曜日\n"); } else if (dow == 5) { printf("金曜日\n"); } else if (dow == 6) { printf("土曜日\n"); } else if (dow == 7) { printf("日曜日\n"); }
どちらも同じ動作をします.
序数の接尾辞の件では,else ifを用いましたが,今回,else ifにしてもしなくても,同じ結果になります.今回のプログラムでは,dowの値は,1から7までの整数値です.if文を7つ並べたソースコードで,条件式が真になるのはちょうど1つであり,printfの呼び出しもちょうど1回になる,というわけです.
ここまでの3つの記事について,担当している授業の内容の一部です.この曜日出力のプログラムは,Cの授業の2回目の学習です*2.除数の接尾辞のプログラムは,制御文と関連づけて3回目に,配列を用いた野球の得点計算は,4回目の学習内容なのでした.