プログラム&IT教育

C言語 入門 ~繰り返し編~

C言語で、繰り返しの処理を行う時の文法を学びます。例えば、1から100までの数字を出力する、というプログラムを書く場合、printf文で100行のプログラムを書く必要があります。これを繰り返し文を使えば、3行で表現することが可能になります。こういった単純な繰り返しを行う場合に有効です。

繰り返しには、①for文、②while文、③do~while文の3通りの使い方があります。似ていますが、使いたい時の条件が異なるので文法を見て覚えてください。

スポンサーリンク

for文

for文の規則

for ( "初期化を行う条件式"; "繰り返し判定を行う条件式"; "繰り返し時に行う処理" )

{
"繰り返し行いたい処理(複数行)"
}

Lesson4のサンプルプログラム問題<Lesson4.c>

1から100までの数字を足していき、
“足した数の合計は xxx です。”
と出力するプログラムを作ろう。

1から100までの数字を代入する変数を「int型のnumber」、足した数の合計を代入する変数を「int型のTotal」としてください。

#include <stdio.h>

void main(void)
{
	int number = 0;
	int Total = 0;

	for(number=1; number<=100; number++)
	{
		Total += number;
	}
	printf("足した数の合計は %d です。\n", Total);

	return;
}

Lesson4のサンプルプログラム問題<Lesson4.c>の実行結果

PS C:\Cprogram> gcc lesson4.c -o lesson4.exe
PS C:\Cprogram> .\Lesson4.exe
足した数の合計は 5050 です。

初期化を行う条件式(for文)

プログラムの8行目 “number=1” が初期化を行う条件式です。変数”number”に初期値として、”1″の値を代入します。初期化の処理なので、for文へ突入時の初回のみ1度だけ実行します。

繰り返し判定を行う条件式(for文)

プログラムの8行目 “number<=100” が繰り返し判定を行う条件式です。変数”number”の値が、”100以下の場合”繰り返しの処理を行います。for文の処理が1度実行されたあと、繰り返し処理の判定を行います。

繰り返し処理のあとに行う処理(for文)

プログラムの8行目 “number++” が繰り返し処理のあとに行う処理です。変数”number”の値に、”1を加算”します。繰り返し処理が1度行われるたびに、実行します。

for文の実行イメージ①

for文へ突入時、①のnumber=1の初期化のみ実行します。

次に②のfor文の中にある処理すべてを実行します。

②の処理が終了後に、③の”number++”を行います。そのあとに、”number<=100″の判定を行います。

for文の実行イメージ②

[1] number = 1 で初期化処理を行います。
[2] Total = Total(=0) + number(=1) の処理が行われ、Total = 1になります。
[3] for文の繰り返し処理が終了します。
[4] number++が行われ、number = 1 + 1 = 2になります。
[5] for文の繰り返し判定を行います。
[6] numberが2のときに、条件判定 number<=100 が行われます。
[7] numberが100以下なので、もう一度繰り返しの処理を行います。
[8] Total = Total(=1) + number(=2) の処理が行われ、Total = 3になります。
[9] for文の繰り返し処理が終了します。
[10] number++が行われ、number = 2 + 1 = 3になります。
※以降続く。

[重要]for文は必ず1度、処理を実行する

while文

while文の規則

while ( "条件" )
{
"繰り返し行いたい処理"
}

while文は、”条件”が満たされる間は、処理を繰り返し行います。そのため、”条件”の値が変化しない場合は、ずっと処理が繰り返されてしまいますので注意してください。(同じ処理を繰り返し、条件式から抜けられないため、無限ループと呼びます。)

Lesson4-2のサンプルプログラム問題<Lesson4_2.c>

次のプログラム<Lesson4_2.c>の実行結果はどうなりますか?実行結果を予想してみよう。

#include <stdio.h>

void main(void)
{
	int number = 1;

	while ( number <10 )
	{
		printf("numberの値は、 %d です。\n", number);
	}
	return;
}

while ( number <10 )の条件式のあとに、numberの値が増えるような処理がありませんので、while文の中の処理がずっと繰り返されます(無限ループ)

Lesson4-3のサンプルプログラム問題<Lesson4_3.c>

#include <stdio.h>

void main(void)
{
	int number = 5;

	while ( number > 0 )
	{
		printf("numberの値は、 %d です。\n", number);
		number--;
	}
	return;
}

Lesson4-3のサンプルプログラム問題<Lesson4_3.c>の実行結果

PS C:\Cprogram> gcc lesson4_3.c -o lesson4_3.exe
PS C:\Cprogram> .\Lesson4_3.exe
numberの値は、 5 です。
numberの値は、 4 です。
numberの値は、 3 です。
numberの値は、 2 です。
numberの値は、 1 です。

Lesson4-3のサンプルプログラム問題<Lesson4_3.c>を使って、while文の実行イメージについて説明します。

while文の実行イメージ①

① while文へ突入時、”number > 0″ の判定をはじめに行います。
もし、”number > 0″ ではない場合、while文の中の処理②は実行しません。

② “number > 0” の場合、while文の中の処理を実行します。

③ ②処理を実行中に、”number–“を行います。

④ ②の処理すべてが終わったら繰り返し処理の判定で、”number > 0″を判定します。

while文の実行イメージ②

[1] while文の繰り返し判定を行います。
[2] number > 0 でnumberの値の判定処理(5 > 0)を行います。
[3] 真だったのでwhile文の中の処理を実行します。printfでnumberの値を出力します。
[4] number--が行われ、number = 5 - 1 = 4になります。
[5] while文の繰り返し判定を行います。
[6] number > 0 でnumberの値の判定処理(4 > 0)を行います。
※以降続く。

[重要]while文は最初に条件判定。処理を一度も実行しないときがある。

do~while文

do~while文の規則

do
{
"繰り返し行いたい処理"
}
while ( "条件" ) ;

do~while文は、while文の変形タイプです。while文と同様に”条件”が満たされる間は、処理を繰り返し行います。while文との違いは、doの中で繰り返す処理が、最初に必ず1度実行されてから条件判定を行います。※while文の末尾にセミコロンが入りますが間違えやすい(忘れやすい)ので注意。

Lesson4-4のサンプルプログラム問題<Lesson4_4.c>

#include <stdio.h>

void main(void)
{
	int number = 7;

	do
	{
		printf("numberの値は、 %d です。\n", number);
		number = number - 2;
	}
	while ( number > 0 );
}

Lesson4-4のサンプルプログラム問題<Lesson4_4.c>の実行結果

PS C:\Cprogram> gcc lesson4_4.c -o lesson4_4.exe
PS C:\Cprogram> .\Lesson4_4.exe
numberの値は、 7 です。
numberの値は、 5 です。
numberの値は、 3 です。
numberの値は、 1 です。

[重要]do~while文はdoの中の処理を必ず1度実行する。以降はwhile文と同じ。

はじめに C言語は古くから普及しており、今でもなお利用されているプログラミング言語です。ですが、コンピュータの仕組みを知っていること...
モバイルバージョンを終了