PR

【C・C++】制御文とは?【if・for・while・switch】

アイキャッチ C++
この記事は約9分で読めます。

制御文に関しての記事です。
用語の意味や注意点などについても解説しています。

のんびり丸

WEBアプリの開発等をしています。
日々の学習の備忘録として運営していこうと思います。

のんびり丸をフォローする

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
タイトルとURLをコピーしました