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