8.条件判断(if-else) (含む9.論理演算)


僕たちは、普段の生活の中で常に様々な条件判断を求められています。例えば、朝起きたとき、大学へ行きプログラミング入門の授業を受けるか?それとも、コンビニで立ち読みをしてからパチンコを打ちに行くか?それともそのまま寝ておくか。そういった、「もし疲れているのなら、寝ておく。そうでなければ、外出する。単位が足りないようなら出席する。足りているなら遊びに行く。」をプログラムの中でも考えていく必要があります。そのときよく使われるのが、if-elseステートメントです
まず、現在まで取得している単位数から4年次に就職活動が可能かどうかを判定するプログラムを書いて見ましょう。

サンプル8−1
#include <stdio.h>
int main()
{
int nen1,nen2,nen3,nen4,grad;
int hantei;

printf("1年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen1);

printf("2年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen2);

printf("3年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen3);

printf("4年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen4);

printf("今何年生ですか?\n");
scanf("%d",&grad);

hantei = nen1 + nen2 + nen3 + nen4;
hantei = hantei * 3 / (grad - 1);

if(hantei < 104)
{
printf("4年次に就職活動はできそうですか?\n");
}else
{
printf("その調子でがんばりましょう\n");
}
return(0);
}

次に、条件を多少複雑にして、細かく分けていくことを試して見ましょう。
ここで行っているのは、まず、学年の入力が適正かどうかを判断します。1年生や5年生以上というのは、問題があるので、それを洗い出します。シンボル || は「または(or)」を表す論理演算子になります。
次に、取っている単位数に応じてコメントを変化させることを考えます。ここでは、範囲を考える必要があるので、例えば、3年終了時で80単位以上104単位未満の範囲で単位取得している場合、就職活動は大変そうなので「大丈夫ですか?」と聞いてあげましょう。
式で書けば、
 80 <= hantei < 104
と書けばいいのですが、Cではそのように書けません。そこで、シンボル && かつ(and)」を使って「80 <= hantei」と「hantei < 104」を同時に満たすものを考えてやります。以下も同じように考え、条件を設定したのが次のプログラムです。

サンプル8−2
#include <stdio.h>
int main()
{/*大変なのは分かっていますが手入力でどうぞ*/
int nen1,nen2,nen3,nen4,grad;
int hantei;
printf("1年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen1);
printf("2年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen2);
printf("3年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen3);
printf("4年次の単位取得数は何単位ですか?\n");
scanf("%d",&nen4);
printf("今何年生ですか?\n");
scanf("%d",&grad);
hantei = nen1 + nen2 + nen3 + nen4;
hantei = hantei * 3 / (grad - 1);
if(grad <= 1 || grad >= 5)
{
printf("学年の入力が微妙です\n");
}else
if(hantei < 104 && hantei >= 80)
{
printf("4年次に就職活動はできそうですか?\n");
}
if(hantei < 80 && hantei >= 60)
{
printf("まさか、すでに留年確定ですか?\n");
}
if(hantei < 60)
{
printf("何かの冗談でしょう…\n");
}
if(hantei >= 104)
{
printf("その調子でがんばりましょう\n");
}
return(0);
}

<検算すること>
(1)1年次35単位、2年次5単位、3年次19単位、4年次ゼロ単位取っている4年生はどのように判定されるか?
答:何かの冗談でしょう…
(2)1年次34単位、2年次15単位、3年次ゼロ単位、4年次ゼロ単位取っている3年生はどのように判定されるか?
答:まさか、すでに留年確定ですか?
(3)1年次40単位、2年次40単位、3年次ゼロ、4年次ゼロ取っている5年生はどのように判定されるか?
答:学年の入力が微妙です
まさか、すでに留年確定ですか?


課題 授業中に出すかも
前のページへ このページの先頭へ 次のページへ 


プログラミングホーム