これまではprintf関数やscanf関数などを勉強してきましたが、こっからプログラミングは本格的に難しくなってきます。
少し難しいかもしれませんが、簡単な例で説明していきたいと思います。
if文の構文(1)
if(条件式) 文
これが一番シンプルなif文ですね。
サンプルコードを見てみましょう。
#include <stdio.h>
int main(void)
{
int n;
printf("整数n: "); scanf("%d",&n);
if(n%2)
printf("奇数です\n");
return 0;
}
/*実行結果
整数n: 3
奇数です
*/
if文ですが、条件式の値が非0なら、文を実行します。実行結果にある通り、nが奇数だったらn%2の値は1になり、0ではないので文を実行します。
nが偶数だったn%2は0になるので文を実行しません。
次の説明に必要になるので、等価演算子について説明していきます。
等価演算子
- 「==」は左オペランドと右オペランドを比較して、それらが等しければ1、そうでなければ0を生成する。
- 「!=」は左オペランドと右オペランドを比較して、それらが違うなら1,そうでなければ0を生成する。
「==」で注意して欲しいのは、必ず二つ続けて書くことです。一つだと代入演算子になってしまいます。
if文の構文(2)
if(条件式) 文1 else 文2
#include <stdio.h>
int main(void)
{
int n;
printf("整数n: "); scanf("%d",&n);
if(n%2==1)
printf("奇数です\n");
else
printf("偶数です\n");
return 0;
}
/*実行結果
整数n: 3
奇数です
整数n: 4
偶数です
*/
今度はelseという文字があります。
これは「そうでないなら」みたいな意味を持っています。
例えば、nが偶数だった場合n%2の値は0なので、
上の文を実行します。nが奇数だった場合n%2は1なので、下の文を実行します。
入れ子構造のif文
入れ子構造とはなんだって思った人いると思いますが、簡単にいうとif文の中にif文を入れることです。
サンプルコードを見てみましょう。
#include <stdio.h>
int main(void)
{
int n;
printf("整数n: "); scanf("%d",&n);
if(n==0)
printf("0です\n");
else
if(n>0)
printf("自然数です\n");
else
printf("負数です\n");
return 0;
}
/*実行結果
整数n: 0
0です
整数n: 5
自然数です
整数n: -3
負数です
*/
まず、最初に0か0でないかで分類して、さらに0でない数字を自然数か、負数かで分類しているイメージですね。
if文の中で複数の文を実行する。
今までやってきた、if文は一つの文を実行するだけでしたが、時には複数の文を実行しなければならない時もあるかと思います。これからそんな場合の対処方法を説明したいとおもいます。
#include <stdio.h>
int main(void)
{
int a,b,large,small;
printf("整数a: "); scanf("%d",&a);
printf("整数b: "); scanf("%d",&b);
if(a<b){
large=b;
small=a;
}
else{
large=a;
small=b;
}
printf("large: %d\n",large);
printf("small: %d\n",small);
return 0;
}
/*実行結果
整数a: 4
整数b: 5
large: 5
small: 4
整数a: 6
整数b: 1
large: 6
small: 1
*/
サンプルコードで見てわかるとおり
if(){
文1
文2
}
のように実行したい文まで中括弧で囲むことで複数の文を実行できてきます。
これでif文で書き方ことは以上です。特に入れ子構造の部分は難しいと思いますが、根気強くやっていきましょう。最後までありがとうございました。
以上です!
コメント