条件文

2014/05/09
プログラミング演習Ⅰ
第4回
条件文
今日の目標:基本的な条件文使用法
1. 制御文
先週までは順に 1 文ずつ先頭から実行
→特定の条件の時だけ処理を変えたり(条件文)
同じ処理を指定回数繰り返したい(繰り返し制御文)これは来週の話題
2. 条件文で使う比較演算子(教科書 p.57)
(1) 等値演算子
(2)
= = : 等しい(例:a = = b)
!= : 等しくない(例:a != b)
比較の結果が正しければ真、正しくなければ偽が結果
となる。
重要:以下の二つの演算を明確に区別せよ。
(i) a = b;(b の値を a に代入)
(ii) a = = b;(a と b の値を比較)
関係演算子
> : 大きい (例:a > b)
< : 小さい (例:a < b)
<=, >= : 等合を含めた比較
start
yes
a==b
no
a=a+1
end
3. 条件文
図1
(i)
基本条件分岐 if(教科書 p.76)
もし(条件)なら
これをやる
この場合は条件が成立しないと処理しない
例:
if (a = = b)
a = a + 1;
(図1参照)
a と b が等しければ a に1を加算
条件が成り立つ時に複数の文を実行したい時は
複数文(ブロック)にしないといけない
(教科書 p.74)
例:
if (a = = b){
a = a + 1;
b = b + 2;
}
(ii)
if と else
もし(条件)なら
プログラミング演習第 4 回
start
yes
a==b
no
a=a+1
b=b+2
end
図2
1
2014/05/09
これをやる
成立しなければ
こちらをやる
この場合はどちらかの処理が行なわれる
例:
if (a = = b)
a = a + 1;
else
b = b + 2;
(図 2 参照)
(iii) 多方向分岐 if と else if
もし(条件 1)なら
処理1を行なう
そうではなくもし(条件 2)なら
処理 2 を行なう
そうではなくもし…
例:
if (a = = b)
a = a + 1;
else if (a > b)
b = b + 2;
else if (a < b)
a = a + b;
(図3参照)
(iv) 多方向分岐 switch と case(教科書 p.87)
if~else if と同じことを実現可能。変数の
整数値で処理を切り替え(整数のみ使用可)
switch(変数){
case 値1:
(処理 1,複数行可)
break;(忘れずに。ないと次の文も実
start
yes
a==b
no
a=a+1
yes
a>b
b=b+2
a<b
yes
a=a+b
end
図3
start
効してしまう)
case 値 2
(処理 2,複数行可)
break;
(以下同様)
default:(以上どれにも当てはまらない時)
(処理 n,複数行可)
}
例:
switch (a) {
case 1:
a = -1*a;
break;
case 2:
a = a+2;
break;
default:
a = 0;
}
(図4参照)
プログラミング演習第 4 回
yes
a==1
no
a = -1 *a
yes
a = =2
a=a+2
a=0
end
図4
2
2014/05/09
4. プログラムの表示のファイルへの保存方法
プログラムを実行してコンソールに表示されるテキストは script コマンドでファイルに保存
できる。script[enter]と入力してから[Ctrl-d]と入力して終了するまで、全ての表示が現
在のディレクトリの typescript というファイルに保存される。
例:
$ script[Enter]
スクリプトを開始しました、ファイルは typescript です
$ ./lab1.exe
Enter number:2
Result: 4
$ [Ctrl]+[d]
スクリプトを終了しました、ファイルは typescript です
以上で今までの表示がファイルにも保存されている。最後に[Ctrl]+[d]([Ctrl]キーと[d]
のキーを同時に押す)を入力すること。
$ script ファイル名[Enter]
と入力するとファイル名のテキストファイルに出力を保存できる。
5. テキストファイルのプリンタ出力
jp2lpr ファイル名
または
u2ps ファイル名
例:samp2.c をプリンタ出力
jp2lpr samp2.c [Enter]
u2ps samp2.c [Enter]
6. 本日の演習
(1) キーボードから整数値を入力し、正なら自分の名前を日本語で、それ以外は何も表示し
(2)
(3)
(4)
ないで終了するプログラムを作りなさい。if 文を使いなさい。
(1)のプログラムを改良して、入力が 10 より大きい場合(10 含まず)自分の名前を
日本語で、10 より小さい場合(0,負含む)英語で、10 の場合何も表示しないで終了す
るプログラムを作りなさい。else if を使いなさい。
キーボードから 1 から 12 までの整数を入力する。入力に応じて以下の英語の月名を表
示するプログラムを switch 文を使って作成せよ。1 から 12 までの数字でない場合は
そのような月がないことを警告表示せよ。
1:January, 2: February, 3: March, 4:April, --- 11: November, 12:
December
表示例:
$ lab4_3.exe[Enter]
Enter a number:3[Enter]
3: March
$ lab4_3.exe[Enter]
Enter a number:13[Enter]
13: No such month!
(3)のプログラムを改良して、入力が正なら月を日本語で、負なら英語で表示するプロ
グラムを作りなさい。また 13 以上、0,-13 以下の入力はそのような月がないことを
警告表示せよ。
プログラミング演習第 4 回
3
2014/05/09
表示例:
$ lab4_4.exe[Enter]
Enter a number:3[Enter]
3: 3 月(弥生)
$ lab4_4.exe[Enter]
Enter a number:-3[Enter]
3: March
(5)
(6) (5)発展(余裕がある人はやってみてください)
$西暦 4 桁を入力し、以下のように和暦を判定し、和暦出力するプログラムを作りなさ
い。
~1867:明治以前
1868~1911:明治
1912~1925:大正
1926~1988:昭和
1989~:平成
表示例:
$ lab4_4.exe[Enter]
Enter a year:1920[Enter]
1920: 大正 9 年
$ lab4_4.exe[Enter]
Enter a year:1926[Enter]
1926: 昭和元年
$
(2)と(4)(できた人は(5)も)のリストと実行時の表示印刷(script 使用)を提出せよ。
提出期限は来週水曜(5/14)の 16 時までとします。電情系事務室内のプログラミング演習用
メールボックスに提出してください。
注意:提出レポートで明らかに動作しないプログラムは再提出してもらうので、十分デバッグ、
動作確認すること。再提出、期限外はその度に評価を1ランク下げるので、注意。また、未提出、
ならびに再提出を未提出のものは 0 点とする。必ず学生番号、氏名、出題日、課題番号を各プログ
ラム第 1 ページ先頭にコメント行を使って明記のこと。複数枚にわたる場合はホチキスでとめること。
簡単な課題なので、必ず自分で演習に取り組むこと。
プログラムにはコメントを十分記入し、インデント、改行を適当に入れて読みやすいプログラム記入
を心掛けること。
動作しないプログラム、指示どおりの機能しないプログラムの他、適切なコメントやインデント
のない提出プログラムも再提出の対象となるので注意。
前回のレポートが再提出とされた場合、再提出とされた元のレポートの上に修正したレポートを一
緒に綴じて提出のこと。今週のレポートと再提出のレポートは一緒に閉じないこと。再提出の期
限も来週水曜(5/14)の 16 時までとします。プログラミング演習用メールボックスに提出し
てください。
7. 来週の予習
教科書(明快入門 C)の第 5 章の 37、38,39 節をもう一度読んでおくこと。
プログラミング演習第 4 回
4