- while문은 C언어의 반복문 중에서 가장 간단하면서, 중요한 구문임.
- while문은 다음과 같은 구조를 가짐.
while ( expression ) statement
- 괄호 내의 표현식이 제어식이고, 괄호 이후 나오는 구문이 루프 본문임.
- while문이 실행되면, 우선 제어식이 평가됨.
- 제어식 값이 0이 아니라면(참) ➡ 루프 본문이 실행된 다음 제어식을 평가함.
- 이런 방식으로, 우선 제어식을 확인하고 루프 본문으로 넘어가는 방식이 제어식의 값이 0이 될 때까지 반복됨.
예제) 어떤 수 n보다 크거나 같은 수 중, 가장 작은 2의 제곱수를 찾아보자.
n의 값이 10이라고 가정할 때, while문이 실제로 어떻게 동작하는지 논리를 따라가보자.
i = 1;
while (i < n)
i = i * 2;
- 제어식 (i < n)이 참이면, 루프는 계속해서 돌아감.
- 식이 거짓이 될 때 루프는 종료되며, i의 값은 우리가 의도했던 것처럼 n보다 크거나 작을 것임.
예제) 카운트다운
i = 10;
while (i > 0) {
printf("T 빼기 %d, 세는 중\n", i);
--i;
}
- 이 예제를 통해 알아보는 while문의 특징
- 제어식이 거짓이면 while문의 루프가 종료된다. 그러므로 루프가 제어식 i > 0에 의해 종료되었다는 것은 i가 반드시 0보다 작거나 같아야한다. (그렇지 않다면 루프는 종료되지 않고 계속해서 실행될 것이다!)
- while문의 루프 본문이 아예 실행되지 않을 수도 있다. 제어식이 루프 본문이 실행되기 이전에 판별되므로 루프 본문이 단 한 번도 실행되지 않을 수도 있다. 만약 카운트다운 루프에서 i의 값이 음수나 0이였다면 루프는 아무 것도 하지 않을 것이다.
- while문은 다양한 방식으로 작성될 수 있다. 예를 들어 카운트다운 루프를 다음과 같이 i를 printf 함수의 호출 내에서 감소시켜주어 루프의 길이를 압축시킬 수 있다.
📌 무한루프
- 제어식이 언제나 0이 아닌 값을 갖는다면, while문은 종료되지 않음.
- 많은 C언어 프로그래머들은 0이 아닌 상수를 제어식으로 사용해 무한루프를 의도적으로 만들어냄.
🌐 [프로그래밍] 제곱표 출력하기
🌐 square.c
/* while문을 활용해 제곱수 표를 출력하라 */
#include <stdio.h>
int main(void)
{
int i;
int n;
printf("본 프로그램은 제곱수 표를 출력합니다.\n");
printf("본 표의 크기를 결정해주세요: ");
scanf("%d", &n);
i = 1;
while (i <= n) {
printf("%10d%10d\n", i, i * i);
++i;
}
return 0;
}
🌐 [프로그래밍] 수열의 합 구하기
🌐 sum.c
/* 수열의 합을 구한다 */
#include <stdio.h>
int main(void)
{
int n;
int sum = 0;
printf("본 프로그램은 정수열의 합을 출력한다.\n");
printf("정수 여러 개를 입력하라 (수열을 끝내려면 0을 입력하라): ");
scanf("%d", &n);
while (n != 0) {
sum += n;
scanf("%d", &n);
}
printf("정수열의 합: %d", sum);
return 0;
}
💡 본 내용은 K.N.King의 C Programming: A Modern Approach 책을 참고하였습니다.
'📚 STUDY > 🔥 C' 카테고리의 다른 글
[6-3] for문 (1) | 2024.09.05 |
---|---|
[6-2] do문 (0) | 2024.09.05 |
Q&A (들여쓰기 방식, switch 문 작성 방식) (0) | 2024.09.05 |
[5-3] switch문 (0) | 2024.09.05 |
[5-2] if문 (2) | 2024.09.05 |