目次
はじめに
今回は、if文を用いた少し複雑な処理について解説します。
先の2投稿では初歩的なif文の使い方、比較演算子などについて解説しておりますので、併せてご確認ください。
if文
少しおさらいですが、条件分岐のif文は次のような書式となっています。
if(条件式){
処理
}
かっこ内の条件式が成り立つ時、{}内の処理が実行されます。
前回の解説では一行で書いていましたが、内部処理が複数行に及ぶ場合はこのように書きます。
if〜else文
if文は「ある条件が成り立つ」時に実行する処理を記述する構文ですが、成り立たない場合の処理も記述したい場合はif~else文を使用することで、対処できます。
if~else文の書式は以下のようになります。
if(条件式){
処理1
}else{
処理2
}
この場合、処理1はif文の条件式が成立するときに実行され、そうでない時、処理2が実行されます。
if〜else文を用いた例文
以下の例文を見てみましょう。
#include <stdio.h>
int main(){
int a;
printf("数値を入力:");
//キーボードから整数を入力
scanf("%d",&a);
//入力された値が、正の数かどうか調べる
if(a>0){
printf("aは正の数です。¥n");//a>0の時の処理
}else{
printf("aは正の数ではありません。¥n");//a<=0の時の処理
}
return 0;
}
int型変数aにキーボードから値を入力し、それが正の数かそれ以外かを識別するコードです。
正の数を入力した時、それ以外を代入した時の結果はそれぞれ以下のようになります。
数値を入力:1 //正の数を入力した場合
aは正の数です。
数値を入力:0 //それ以外の数を入力した場合
aは正の数ではありません。
else if文
ifとelseを用いると、ある条件が成り立つ場合と成り立たない場合の2通りの処理を書き分けることができました。しかし、3つ以上の条件からなる場合も当然存在します。そういう時にはelse ifを使います。
else if文の書式は以下のようになります。
if(条件式1){
処理1
}else if(条件式2){
処理2
}else{
処理3
}
- 条件1が成立する時、処理1が実行される
- 条件2が成立する時、処理2が実行される
- いずれの条件も満たさないとき、処理3が実行される
ちなみに、else if文はifの後にいくらでも追加することが出来ます。つまり、いくつでも条件を追加可能です。
else if文を用いた例文
else if文を用いた複雑な条件分岐のコードを書いてみましょう。以下のコードは、入力された数値が1か2かそれ以外かを判断し、値に応じた結果を出力するコードです。
指示に従わない人は裏切り者認定されます。
#include <stdio.h>
int main(){
int a;
printf("1または2を入力してください: ");
//キーボード入力
scanf("%d",&a);
//変数aの値の確認
if(a == 1 ){
printf("1を入力しました。¥n");
}else if(a == 2){
printf("2を入力しました。¥n");
}else{
printf("1,2以外の数値を入力しましたね!この裏切り者!¥n");
}
return 0;
}
実行結果は以下になります。
1または2を入力してください: 1
1を入力しました。
1または2を入力してください: 2
2を入力しました。
1または2を入力してください: 810
1,2以外の数値を入力しましたね!この裏切り者!
きちんと分岐処理がうまくいっていますね!
if文のネスト
ネストとは入れ子構造のことで、繰り返し処理などでしばしばみられる書式です。
「処理の中に処理が含まれてるのがネスト」と覚えましょう。
if(条件式1){
if(条件式2){
処理
}
}
条件式1が成り立っているとき、条件式2が成り立てば処理が実行されます。
仮に条件式1が成り立っていても、条件式2が成り立っていなければ処理が実行されません。また、条件式1が成り立たなければ中のif文も実行されません。
ちなみに3重以上にネストすることも可能です。ただネストしすぎるとプログラムが複雑になり、わかりにくくなるので気をつけましょう。
Switch文
最後に、条件分岐はswitch文でも書くことが出来ます。書式は以下。
switch(値){
case 値1:
処理1
break;
case 値2:
処理2
break;
・・・
default:
処理N
break;
}
条件は ” case 値: ” のように書きます。最後の ” default: ”という条件は、caseで出てきたいずれの条件にも当てはまらない場合の条件です。
case、defaultの後に出てくる break は処理の終了を意味し、switch文から抜け出します。
つまり()内の値が、値1なら処理1が実行され、値2なら処理2が実行され、いずれのcaseにも該当しなければ、処理Nが実行され処理が終了します。
switch文を用いた例文
switch文を用いた例文も見てみましょう。
入力された値が1,2,3ならそれぞれの英単語が、それ以外の場合はGLAYの誘惑の2番のサビが流れるように書きました。
適当でええんです。細かいコトは。
#include <stdio.h>
int main(){
int a;
printf("任意の整数を入力してください : ");
//キーボード入力
scanf("%d",&a);
//分岐処理
switch (a){
case 1:
printf("one¥n");
break;
case 2:
printf("two¥n");
break;
case 3:
printf("three¥n");
break;
default:
printf("ZEROを手にしたお前は強く because I Love You ¥n");
break;
}
return 0;
}
それぞれの出力結果は以下。
任意の整数を入力してください : 1
one
任意の整数を入力してください : 2
two
任意の整数を入力してください : 3
three
任意の整数を入力してください : 114514
ZEROを手にしたお前は強く because I Love You
GLAYは最高ですね。先年度末の紅白歌合戦も大変格好良かったです。
C言語における条件分岐の解説は以上になります。
最後に
本日は、C言語における条件分岐の解説を行いました。
不明点などございましたら、問い合わせフォームからお願いいたします!
最後までご覧いただき、ありがとうございました!