プログラミング入門の入門④ ~条件付き分岐 情報通信学部 情報メディア学科 濱本和彦 ログイン名,パスワードとURL ログイン名 TPC14004 パスワード i2yuxeUu URL http://www.dm.u-tokai.ac.jp/~hama if文を使ったプログラム(復習) 「数値nが数値mと同じならば 「大当たり!」,そうでないとき は「残念!」と表示する。 これが,条件処理の基本形に なります。 これは,右の図のように図式 化すると分かり易くなります。 これをフローチャートと言いま す。 プログラムは,このように図式 化して,これを組みあわせて 作ると作りやすくなります。 条件 真 処理1 大当たり! nとmが 等しい 偽 処理2 残念! if文を使ったプログラム(復習) 条件 真 処理1 大当たり! nとmが 等しい if( 偽 処理2 条件 処理1 } else{ 処理2 残念! } ){ 関係演算子と等価演算子 二つの値の大小関係を判定する演算子です。 関係演算子 演算子 > >= < <= 説明 記述例 記述の意味 より大きい if(a>100) より大きいか等しい if(a>=100) aが100以上なら より小さい if(a<100) より小さいか等しい if(a<=100) aが100以下なら aが100より大きいなら aが100未満なら 等価演算子 演算子 説明 記述例 記述の意味 == 等しい if(a==100) aが100なら != 等しくない if(a!=100) aが100でないなら 四捨五入のプログラムを考えよう 実数を,小数第一位で四捨五入して整数 にするプログラムを考えましょう。 コンピュータでは,変数に「型」が決まって います。 – 実数型:実数を扱うことが出来ます – 整数型:整数だけ扱うことが出来ます 整数型の変数に小数値を代入すると,少 数以下は切り捨てられて無くなってしまい ます。 四捨五入のプログラムを考えよう 次のprogram5.cで試してみましょう #include <stdio.h> void main(void) { double x; int y; printf("少数値を入力して下さい。"); scanf("%lf", &x); y = (int)x; // 整数値に変換します。 printf("整数値に変換すると%lfは%dとなります。\n", x,y); } 四捨五入のプログラムを考えよう ただ整数値に変換するだけだと,0.9であって も切り捨てられてしまいます。 “.0”~“.4”までは切り捨てて,“.5”~“.9” の時は切り上げるような,「四捨五入」を計算す るには,どうすれば良いでしょうか? それには,次のような計算をしてから整数値に 変換(少数以下切り捨て)します。 – 小数値が正の時は, – 小数値が負の時は, を を する する 四捨五入のプログラムを考えよう program6.c 実数aを入力 a>0 a=a+ ; a=a- – aが正の場合, 追加 – aが負の場合, 引く ; 整数b=(int)a; まず,実数aを入力し ます。 if文を使い処理を分 岐します。 を を 整数値に変換すると 小数点以下を切り捨 てて整数値となりま す。 if文の組み合わせ 真 処理1 偽 条件1 真 処理2 条件2 偽 処理3 If文の組み合わせ まず,このように考えてみましょう。 if( 条件1 条件1 処理1 } else{ 処理1 処理4 処理4 } ){ If文の組み合わせ 次に,このように考えてみましょう。 if( 条件1 条件1 処理1 処理4 } else{ 処理1 処理4 } ){ If文の組み合わせ 要するに,処理4の所にもう一つif-elseが入ればいいんです。 if( 条件1 条件1 処理1 } else{ 条件2 処理1 処理2 処理3 } ){ 入力した得点に応じて成績を 判定するプログラム 右のフローチ ャートは,入力 された点数の 成績判定をす るものです。こ のチャートに 従ってプログ ラムを作成し て下さい。 program6.cを 完成させて下 さい。 80以上 A 60以上 B E if文の条件の書き方 前述のような問題の場合,「このように書 けたら便利なんじゃないか?」と思いませ んか? If(80 > tokuten >= 60){ printf(“成績はBです。\n”); } program7.cは,この考え方で書いたプログ ラムです。コンパイル,実行してみましょう。 If文の条件の書き方 80以上,または60未満の点数を入力すると,きちんと 結果が出力されますが,それ以外の入力では正しい成 績は出力されません。 つまり,このような書き方はできない,と言う事です。 If(80 > tokuten >= 60){ printf(“成績はBです。\n”); } それでは,この表現をするためには,どのような書き方 をすればよいのでしょうか? If文の条件 : 論理演算子 (80>tokuten>=60)というのは,「tokutenは,80 点未満であり,かつ,60点以上」という意味です ね。 この,「~かつ~」のような表現を表す演算子を論 理演算子といいます。 演算子 説明 記述例 記述の意味 論理積(かつ,and) aが3かつbが4 論理和(または,or) aが3またはbが4 否定(でない,not) Aが3かつbが4,でない program7.cをこれを用いて書き直してみましょう if文を使ったプログラム 西暦から,うるう年を判定するプログラム uruu.c を作りましょう。 うるう年の定義は,次のようになります。 – – – 初回に最初に実行したプログラム,今なら分 かりますね。 – 「割り切れる」は「余りが0」で,”%”で計算します もう一つの条件付き分岐。 program8.cを見てみましょう。 switch文を使ったプログラム によって処理を分け ることができます。 if文のような ではなく, のプログラムを書く事が出来ます。 – if文:「真ならば処理1,偽ならば処理2」 – switch文:「 」 if文で表す事も出来ます。 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文を使ったプログラム program8.cを実行して,switch文の働き を確認しましょう。 break文が無い場合のプログラムの動き について確認しましょう。
© Copyright 2024 ExpyDoc