No.4 - 東海大学 情報理工学部情報メディア学科

プログラミング入門の入門④
~条件付き分岐
情報通信学部 情報メディア学科
濱本和彦
ログイン名,パスワードと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文が無い場合のプログラムの動き
について確認しましょう。