制御文に関しての記事です。
用語の意味や注意点などについても解説しています。
if文
if文は、条件分岐をする際に使用します。
『もし〇〇〇という条件だったら、□□□する』といった具合にコーディングしていきます。
例外の処理は、【else】を使って記述します。
処理が一行の場合は、{}は必要ないです。
if(条件) {
処理
} else {
処理
}
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 3;
if (a % 2 == 0)
printf("%dは偶数です。\n", a);
else
printf("%dは奇数です。\n", a);
return 0;
}
出力
3は奇数です。
複数の条件
条件分岐が複数の場合は、【else if】を用いて記述します。
処理が一行の場合は、{}は必要ないです。
if(条件①) {
処理
} else if(条件②) {
処理
} else {
処理
}
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 85;
printf("あなたの成績は、");
if (a >= 90)
printf("秀です。\n");
else if (80 <= a && a < 90)
printf("優です。\n");
else if (70 <= a && a < 80)
printf("良です。\n");
else if (60 <= a && a < 70)
printf("可です。\n");
else if (a < 60)
printf("落単です。\n");
else
printf("不当な値が入力されています。\n");
return 0;
}
出力
あなたの成績は、優です。
【else】を使った例外処理は記述しなくとも実行可能ですが、念のためエラー処理を書いておく方が良いかと思います。
for文
for文は、繰り返し処理を行う際に使用します。
下記のiのように、for文の繰り返し回数を制御するための変数をカウンタと言います。
処理が一行の場合は、{}は必要ないです。
for(初期値; 繰り返し条件; カウントの増え方;) {
処理
}
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int i;
for (i = 1; i <= 5; i++)
printf("%d\n", i);
return 0;
}
出力
1
2
3
4
5
コーディング例②
事前にカウンタを用意する代わりに、()内に記述することも可能です。
#include <stdio.h> // printf()を使用するために必要
int main()
{
for (int i = 1; i <= 5; i++)
printf("%d\n", i);
return 0;
}
出力
1
2
3
4
5
入れ子【ネスト】
制御文は入れ子にすることが可能です。
入れ子のことをネストとも言います。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int i, j;
for (i = 1; i <= 9; i++)
for (j = 1; j <= 9; j++)
printf("%d×%d=%d\n", i, j, i * j);
return 0;
}
上記のコードで、九九を表示してみました。
出力
1×1=1
1×2=2
1×3=3
1×4=4
1×5=5
~~~~~
9×5=45
9×6=54
9×7=63
9×8=72
9×9=81
ブロック
処理が複数行にわたる場合は、{}で囲む必要があります。
{}でくくった箇所をブロックと言います。
一行だけの処理の場合は、ブロックの利用は任意で行います。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 50;
printf("あなたの点数は%d点です。\n", a);
if (a < 70)
{
printf("残念ですが、不合格です。\n");
printf("合格まであと%d点必要です。\n", 70 - a);
}
else
{
printf("おめでとうございます、合格です!!\n");
}
return 0;
}
出力
あなたの点数は50点です。
残念ですが、不合格です。
合格まであと20点必要です。
while文
while文もfor文と同様に、繰り返し処理を行う際に使用します。
for文との違いは、カウンタがないことです。
キーボードからの入力といった、繰り返す回数が分からない場合に利用します。
while(条件) {
処理
}
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 1;
while (a <= 10)
{
printf("%d\n", a);
a++;
}
return 0;
}
出力
1
2
3
4
5
6
7
8
9
10
do ~ while文
do ~ while文もwhile文と同様に、繰り返し処理を行う際に使用します。
while文と違うのは、条件を下に記述するため、処理が必ず一度実行されるという点です。
do {
処理
} while(条件)
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
char a;
do {
a = getchar();
printf("%c", a);
} while (a != 'v');
return 0;
}
getchar()は、キーボードから入力された半角文字を1つ取得します。
出力
one
one
two
two
three
three
four
four
five
fiv
上記の例では、『one』『two』『three』『four』『five』の順番に入力しています。
『v』を表示してから終了します。
break文
for文・while文といった繰り返し処理を途中で中断したい場合は、break文を使います。
breakにぶつかると、一番近いブロックの終わりにジャンプします。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 1, b;
for (b = 1; b <= 5; b++)
{
if (a + b == 4)
break;
printf("%d+%d=%d\n", a, b, a + b);
}
return 0;
}
出力
1+1=2
1+2=3
continue文
for文・while文といった繰り返し処理を途中で中断したい場合は、continue文を使います。
break文と違い、条件に該当する繰り返し処理のみを中断します。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 1, b;
for (b = 1; b <= 5; b++)
{
if (a + b == 4)
continue;
printf("%d+%d=%d\n", a, b, a + b);
}
return 0;
}
出力
1+1=2
1+2=3
1+4=5
1+5=6
switch文
switch文もif文と同様に、条件分岐をする場合に利用します。
例外処理は【default】に記述します。
switch(式)の式には、値が数値のものだけ使用可能です。
それ以外の場合は、if文を使います。
switch(式)
{
case 値①:
処理
break;
case 値②:
処理
break;
default:
処理
}
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
printf("1~3の間で、お好きな数値を入力してください。\n");
int a = getchar();
switch (a)
{
case '1':
printf("金メダルを差し上げます。\n");
break;
case '2':
printf("銀メダルを差し上げます。\n");
break;
case '3':
printf("銅メダルを差し上げます。\n");
break;
default:
printf("不正な値が入力されています。\n");
}
return 0;
}
出力
1~3の間で、お好きな数値を入力してください。
2
銀メダルを差し上げます。
上記の例では、『2』を入力しています。
break文を付けないと?
break文を記述しないと、条件を素通りしてしまいます。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
printf("1~3の間で、お好きな数値を入力してください。\n");
int a = getchar();
switch (a)
{
case '1':
printf("金メダルを差し上げます。\n");
case '2':
printf("銀メダルを差し上げます。\n");
case '3':
printf("銅メダルを差し上げます。\n");
default:
printf("不正な値が入力されています。\n");
}
return 0;
}
出力
1~3の間で、お好きな数値を入力してください。
1
金メダルを差し上げます。
銀メダルを差し上げます。
銅メダルを差し上げます。
不正な値が入力されています。
上記の例では、『1』を入力しています。
goto文
goto文は、プログラムの可読性が落ちるため、使ってはいけないとされている制御文です。
これを使うと、指定した箇所にジャンプすることが出来ます。
【goto ラベル名】と記述すると、対応した【ラベル名】まで処理が移動します。
コーディング例①
#include <stdio.h> // printf()を使用するために必要
int main()
{
int a = 5, b = 10;
goto labelA;
printf("%d\n", a);
labelA:
printf("%d\n", b);
return 0;
}
出力
10