[PR] この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。
変数がある値のときのみ処理を行う、という制御を加えることができます。ユーザが入力した値によって処理を分けたりするときに使えます。高度な処理を行おうとすればするほど、分岐が多くなりますので、条件分岐に慣れておく必要があります。
if([条件式]){ [処理] } else if([条件式]){ [処理] } else { [処理] }
処理を行う条件式を記述します。条件式はPage 4のループ継続条件と同じものが使用できます。
条件式 | 意味 |
---|---|
a == b | aがbと同じ場合 |
a != b | aがbと異なる場合 |
a < b | aがbより小さい場合 |
a > b | aがbより大きい場合 |
a <= b | aがb以下の場合 |
a >= b | aがb以上の場合 |
a == b || c == d | aとbが同じ、または、cとdが同じ場合 |
a == b && c == d | aとbが同じ、かつ、cとdが同じ場合 |
「else if」は最初の条件が満たされなかった場合に条件判定が行われ、実行されます。「else if」は複数記述することが可能です。なくても構いません。
「else」は、どの条件も満たさなかったときに実行されます。なくても構いません。
#include <stdio.h> int main(){ int a = 1; if(a == 1){ printf("a = 1.\n"); } else if(a == 2){ printf("a = 2.\n"); } else { printf("a != 1 and a != 2\n"); } return 0; }
aの値によって、表示される結果が変化します。aの値をいろいろ変えて試してみてください。
switch([判定変数]){ case [条件値]: break; case [条件値]: break; default: break; }
ある変数に対して複数の条件値で判定したい場合、switchを使用します。ここで使用するのは条件式ではなく、条件値であることに注意してください。defaultはどの条件にも当てはまらなかった場合に実行されます。
#include <stdio.h> int main(){ int a = 1; switch(a){ case 1: printf("a = 1.\n"); break; case 2: printf("a = 2.\n"); break; default: printf("a != 1 and a != 2\n"); break; } return 0; }
breakはswitchの条件式を抜けるために使用します。breakをなくした次のプログラムでは、正しく結果が表示されません。
#include <stdio.h> int main(){ int a = 1; switch(a){ case 1: printf("a = 1.\n"); case 2: printf("a = 2.\n"); default: printf("a != 1 and a != 2\n"); break; } return 0; }
a = 1のとき、次のような出力結果になってしまいます。
a = 1. a = 2. a != 1 and a != 2
次のようにすれば正しいです。
#include <stdio.h> int main(){ int a = 1; switch(a){ case 1: case 2: printf("a = 1 or a = 2.\n"); break; default: printf("a != 1 and a != 2\n"); break; } return 0; }
a = 1 か a = 2 のときに「a = 1 or a = 2」と表示されます。
breakはループを抜けるときにも使用できます。ifと組み合わせて使用されることが多いです。
for(;;){ [処理] if([条件式]){ break; } [処理(breakされたら実行されない)] } [処理(break後に実行)]
似たものにcontinueがあります。これは後ろの処理を飛ばして、ループの先頭に戻る命令です。breakと違い、ループを抜ける処理ではありません。
for(;;){ [処理] if([条件式]){ continue; } [処理(continueされたら実行されない)] } [処理(continueされても実行されない)]
これら、条件分岐を組み合わせたプログラムの一例を以下に示します。某芸人がアホになる数(3の倍数、及び3のつく数字)で1以上100以下の数字を表示するプログラムです。
#include <stdio.h> int main(){ int a; /* ループ変数 */ int b; /* 計算用数字 */ for(a = 1; a <= 100; a++){ /*条件その1 3の倍数(3で割った余りが0であればOK)*/ b = a % 3; if(b == 0){ printf("%d ",a); continue; /*以下の処理を飛ばしてループの先頭へ*/ } /*条件その2 1桁目が3(10で割った余りが3であればOK)*/ b = a % 10; if(b == 3){ printf("%d ",a); } else { /*条件その3 2桁目が3*/ b = a / 10; if(b == 3){ printf("%d ",a); } } } printf("End \n",b); return 0; }