본문 바로가기
📚 STUDY/🔥 C

[6-1] while

by 엄지잉 2024. 9. 5.

- 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