No.12

プログラミング論
第十二回
ある条件の時だけ処理させよう
(条件文)
本日の内容



論理演算子
switch文を使ったプログラミング
参考
– フローチャート,PAD,TSチャート
関係演算子,等価演算子,
論理演算子の優先順位
高
優
先
順
位
低
!
<, <=, >, >=
==, !=
&&
||
同じ優先順位(式の左側から順に演算)
演習

3つの整数値を入力して,最大値を求め,出力
するプログラムを作りなさい。
– 手順:






3つの変数,a, b, cの値を入力する。
はじめにデータaを最大値maxと仮定する。
データbとmaxを比較して,bがmaxより大きい場合はbを
maxとする。そうでない場合は何も行わない。
データcとmaxを比較して,cが大きい場合はcをmaxとする。
そうでない場合は何も行わない。
入力データと,最大値を表示する。
ensyu35.cを完成させなさい。
解説 -3つのデータ中の最大値を求めるa
b
c
どれが一番大きいのだろう??
とりあえずは,最大値が入る箱を用意しておいて,っと。。
分からないから,仮に
a
MAX
a
が最大としよう。
a
このMAXは仮の値だから,他の値と比較しないと。
MAX
MAX
解説 -3つのデータ中の最大値を求めるでは,最初に
b
if
a
MAX
b
と比較しよう。
MAX箱の中身は
の方が大きい!
の方が大きい!
b
にしよう!
a
MAX
b
MAX
そのままで変化無し。
解説 -3つのデータ中の最大値を求める最後に,残った
c
if
c
と比較しよう。
MAX箱の中身は
の方が大きい!
a or b
MAX
c
にしよう!
c
MAX
a or b
の方が大きい!
MAX
そのままで変化無し。
switch文を使ったプログラム


式の値(整数値)によって処理を分けるこ
とができます。
if文のような2分岐ではなく,多分岐のプ
ログラムを書く事が出来ます。
– if文:「真ならば処理1,偽ならば処理2」
– switch文:「式の値が,1ならば処理1,2なら
ば処理2,3ならば処理3,・・・」

if文で表す事も出来ます。
switch文を使ったプログラム

if文とswitch文の比較です。同じ働きをします(switch.c)。
nが1の場合(case)
switch(n){
case 1:
printf("n=1\n");
break;
case 2:
printf("n=2\n");
break;
case 3:
printf("n=3\n");
break;
default:
printf("その他\n");
}
if(n==1){
printf("n=1\n");
}
else{
if(n==2){
printf("n=2\n");
}
else{
if(n==3){
printf("n=3\n");
}
else{
printf("その他\n");
}
}
}
switch文を使ったプログラム

フローチャートは次のようになります。
switch(n){
case 1:
printf("n=1\n");
break;
case 2:
printf("n=2\n");
break;
case 3:
printf("n=3\n");
break;
default:
printf("その他\n");
}
nが1
真
“n=1”
偽
nが2
真
“n=2”
偽
nが3
偽
“その他”
真
“n=3”
switch文を使ったプログラム

break文が無い場合はこうなります。
真
nが1
switch(n){
case 1:
printf("n=1\n");
case 2:
printf("n=2\n");
case 3:
printf("n=3\n");
default:
printf("その他\n");
}
“n=1”
偽
真
nが2
“n=2”
偽
真
nが3
“n=3”
偽
“その他”
もしnが1だったら,すべて
のprintfが実行されます!
switch文を使ったプログラム



switch.cを実行して,switch文の働きを確
認しましょう。
break文が無い場合のプログラムの動き
について確認しましょう。
ensyu36.cのようなプログラムも書けます。
動作を確認してください。
流れ図の描き方

フローチャート以外にも様々な描き方があります。
真 処理1
偽
真
条件
条件
条件
処理1
フローチャート
処理2
偽 処理2
PAD
真
偽
処理1
処理2
TSチャート
練習問題1


rensyu1.cは,「入力された秒数を時間,
分,秒に変換する」プログラムです。
これを修正して,「入力された秒数を,年,
日,時間,分,秒に変換する」プログラム
としなさい。ただし,1年は365日とします。
練習問題2


あるテストの点数を、三人分キーボード
から入力して、その平均値を出力するプ
ログラムを作ってください。
平均値は、小数第一位まで表示してくだ
さい。