このスライドの使い方
第 3 章
「プログラムの
流れの分岐」
教科書 pp.43–71
if 文(教 p.44)
- 式1 を評価して、その値が非 0
(すなわち真) なら、
文1 を実行する
- 式1の値が 0
(すなわち偽) なら、何もしない
作業:
List 3-1
を実行する(入力として 5 の倍数とそうでないものを試す)
if 〜 else 文 (教 p.46)
if ( 式1 ) 文1 else 文2
という形のこと
- 式1 を評価して、その値が非 0
(すなわち真) なら、
文1 を実行
- 式1 の値が 0
(すなわち偽) なら、
文2 を実行
作業:
List 3-3
を実行する(入力として 5 の倍数とそうでないものを試す)
if 文
|
if 〜 else 文
|
|
|
作業:
まとめのプリント Q 3.1.1 をやってみる
等価演算子(教 p.50)
「==
」演算子
- 両辺の値が等しければ1(つまり真)を
- 等しくなければ0(つまり偽)を返す
「!=
」演算子
作業:
List 3-6
を実行する
(2つの入力値が等しいときとそうでないときを試す)
関係演算子(教 p.52)
「≦
」「≧
」はもちろん
「=<
」とか「=>
」という演算子はない
入れ子になった if 文(教 p.53)
単に else の次の文が、また if 文になっているだけ
入れ子になった if 文(教 p.53)
単に else の次の文が、また if 文になっているだけ
評価(教 p.55)
式の値を調べる(ために実行する)ことを
評価する (evaluate) という
2値の最大値を求める
〜3値の最大値を求める(教 pp.56–57)
教科書を読んでおくこと。
条件演算子 (三項演算子)(教 p.58)
式1 ? 式2 : 式3
非 0 (真) |
であれば、 式2を評価して、その値を返す
式3は評価しない |
0 (偽) |
であれば、 式3を評価して、その値を返す
式2は評価しない |
複合文 (ブロック)(教 p.60)
繰り上がりの計算
作業:
addtime.c
を実行する
(繰り上がりが起こる/起こらない、いくつかの入力を試す)
2 つの数を大きい順に並べる
作業:
maxswap.c
を実行する
(入力の大小の順を変えていくつかの入力を試す)
注意!(教 p.61)
if 文の制御する文 (後述の while 文、for 文などでも同様)
は、たとえ一つの文でも (間違いを避けるため)波括弧で囲んでブロックにする
△ 望ましくないスタイル |
◎ 望ましいスタイル |
if (n1 > n2)
printf("hello");
else
printf("hi");
|
if (n1 > n2) {
printf("hello");
} else {
printf("hi");
}
|
教科書の例題は望ましいスタイルでないものが多いので、特に注意する。
この授業の課題の解答は「望ましいスタイル」で提出すること。
(教科書 p.5961 下のほうの ▷)
論理演算子(教 p.62)
演算子 |
呼び方 |
説明 |
&& |
論理 AND 演算子 かつ |
左オペランドを評価して、0 (偽) であれば、
0 (偽) を返す。非 0 (真) であれば、
右オペランドを評価して 0 ならば 0 を、
非 0 なら 1 を返す
|
|| |
論理 OR 演算子 または |
左オペランドを評価して、非 0 (真) であれば
1を返す。0 (偽) であれば、
右オペランドを評価して 0 ならば 0 を、
非 0 なら 1 を返す
|
(プリントの赤字の箇所を訂正してください。) |
左右非対称 —
つまり左オペランドを評価して値が決まれば、
右オペランドは評価しない(短絡評価)
§ 3-2「switch 文」
(教 pp.66–69)
switch 文 (教 p.66)
ある式の値 (整数型) によって、プログラムの流れを複数に分岐する
switch ( 式1 ) 文1
文1は、通常、複合文(ブロック)である
- 式1 を評価して、文1 の中の
case
と
「:
」の間に書かれた定数と一致するところにジャンプする
- どの case にも一致しないときは
default:
にジャンプする
- その後 break 文に出会うと、一気に switch 文を飛び出る
- 逆に break 文がなければ、そのまま次の文を実行する
switch 文(つづき)
switch 文と if 文~選択文(教 p.69)
教科書を読んでおくこと
文 (statement)
分類 |
一般形 |
補足説明 |
if 文 |
if ( 式 ) 文 |
(教 p.4244) |
if 〜 else 文 |
if ( 式 ) 文 else 文 |
(教 p.4446) |
複合文(ブロック) |
{ 宣言 … 文 … } |
(教 p.5860) |
switch 文 |
switch ( 式 ) 文 |
(教 p.6466) |
ラベル付き文 |
case 整数リテラル : 文
default : 文
|
(教 p.6567) |
break 文 |
break ; |
(教 p.6567) |
式 (expression)
分類 |
一般形 |
補足説明 |
三項演算子 |
式 ? 式 : 式 |
(教 p.5658) |