【C言語】第2章第6回:while文とdo-while文の違いと使い方
while
文とdo-while
文は、条件が満たされる間、処理を繰り返すための制御構文です。この章では、それぞれの基本構造や違いについて解説し、実用的な例を示します。
1. while文の基本構造
while
文は、条件が真(true
)である間、ループを繰り返します。
基本構文
while (条件式) {
// 繰り返し処理
}
例:1から5までの数を出力
#include <stdio.h>
int main() {
int i = 1; // 初期化
while (i <= 5) { // 条件が真の間ループ
printf("%d\n", i);
i++; // カウンタを増加
}
return 0;
}
解説:
int i = 1;
:カウンタ変数を1に初期化。i <= 5;
:条件が真である間、ループを繰り返します。i++;
:各ループの最後にカウンタを増加させます。
2. do-while文の基本構造
do-while
文は、必ず1回はループを実行し、その後条件をチェックします。
基本構文
do {
// 繰り返し処理
} while (条件式);
例:1から5までの数を出力
#include <stdio.h>
int main() {
int i = 1; // 初期化
do {
printf("%d\n", i);
i++; // カウンタを増加
} while (i <= 5); // 条件が真の間ループ
return 0;
}
解説:
do
ブロック内の処理が最初に実行されます。while
条件をチェックし、真の場合に次のループを実行します。- 少なくとも1回は必ずループを実行します。
3. while文とdo-while文の違い
両者の主な違いは、条件のチェックタイミングにあります:
構文 | 条件チェックのタイミング | 最小実行回数 |
---|---|---|
while | ループの開始前 | 0回 |
do-while | ループの実行後 | 1回 |
4. 実用的な例
例1:ユーザー入力を検証
#include <stdio.h>
int main() {
int number;
do {
printf("Enter a number greater than 0: ");
scanf("%d", &number);
} while (number <= 0); // 入力が0以下の場合は再入力
printf("You entered: %d\n", number);
return 0;
}
解説:
- 少なくとも1回は入力を促します。
- 入力が0以下の場合、再度入力を求めます。
5. 練習問題
以下の課題に挑戦し、while
文とdo-while
文の使い方を練習してください。
- 1から10までの偶数を
while
文で出力するプログラムを作成してください。 - ユーザーに文字列を入力させ、「exit」と入力されるまで繰り返すプログラムを
do-while
文で作成してください。 - ユーザーに数値を入力させ、その数値の階乗を計算するプログラムを
while
文で作成してください。
6. 練習問題の解答と解説
問1の解答
#include <stdio.h>
int main() {
int i = 2;
while (i <= 10) {
printf("%d\n", i);
i += 2; // 偶数を出力
}
return 0;
}
問2の解答
#include <stdio.h>
#include <string.h>
int main() {
char input[100];
do {
printf("Enter a string (type 'exit' to quit): ");
scanf("%s", input);
} while (strcmp(input, "exit") != 0); // 入力が'exit'でない場合ループ
printf("Program exited.\n");
return 0;
}
問3の解答
#include <stdio.h>
int main() {
int number, factorial = 1;
printf("Enter a positive integer: ");
scanf("%d", &number);
int i = 1;
while (i <= number) {
factorial *= i; // 階乗を計算
i++;
}
printf("The factorial of %d is %d.\n", number, factorial);
return 0;
}
7. まとめ
while
文とdo-while
文を使い分けることで、柔軟な繰り返し処理を実装できます。それぞれの特徴を理解し、必要に応じて適切な構文を選択しましょう。練習問題を通じてスキルを磨いてください!