본문 바로가기
쿤즈 Dev/C

[C언어] 반복문 두 번째 - while 구문

by :)Koon 2020. 9. 14.

지난 포스팅에서는 반복문의 첫 번째인 for 구문에 대해서 알아보았습니다. for 구문은 변수의 초기값 설정부터 증가량 및 반복횟수를 모두 직접 정해주기 때문에 매우 직관적인 반복문입니다.

 

 

이번 포스팅에서는 반복문의 두 번째인 while 구문에 대해서 알아보도록 하겠습니다.


반복문 while 구문을 알아보자!

반복문 while은 for 문법과 달리 표현식 또는 조건식 하나만 입력받습니다. while 은 아래와 같이 사용합니다.

while ( 표현식 ) {

...

}

표현식에는 참인지 거짓인지를 나타내는 true / false 의 조건을 입력할 수 있습니다. 반복문 while 에 접근하면 표현식을 확인하고 true 일 경우에는 내부 block 에 있는 로직을 실행합니다. 그리고 블록이 끝나면 다시 처음으로 돌아와서 표현식이 true인지 false 인지를 확인합니다.

만약 이 표현식을 잘못 작성해서 계속 true가 된다면 무한루프를 돌게 되기 때문에 반드시 확인해야 할 부분입니다. 그럼 소스코드를 통해서 더 자세히 알아보겠습니다.


소스코드1 while.c

#include <stdio.h>

int main(int argc, const char* argv[]) {
    int i = 0;

    while (i < 10)
    {
        printf("%d ", i);
        ++i;
    }

    return 0;
}

결과1

0 1 2 3 4 5 6 7 8 9

프로그램이 시작에 i 값을 0 으로 초기화해서 선언해주었습니다. 그리고 while 반복문에서 조건을 i 값에 따라서 반복여부를 결정하도록 한 것입니다. 변수 i 가 10보다 작은 경우에는 while 값의 조건이 true 이므로 계속 반복해서 while 함수 내부 블록을 실행하는 프로그램입니다.

 

여기서 주의할점은 i 값이 ++i 로 1씩 증가하도록 내부에서 설정되어있습니다. 만약 이것이 빠지게 된다면 i 값의 증가가 없기때문에 무한루프에 빠질 수 있다는 점입니다.

 

 

앞서 작성해본 구구단 프로그램을 while 구문으로 작성해보겠습니다.


소스코드2 gugudan_while.c

#include <stdio.h>

int main(int argc, const char* argv[]) {
    int dan = 2;
    int i = 1;

    while (dan < 10)
    {
        while (i < 10)
        {
            printf("%d * %d = %d\n", dan, i, dan * i);
            ++i;
        }
        ++dan;
        i = 1;
        printf("\n");
    }

    return 0;
}

결과2

2 * 1 = 2
2 * 2 = 4
2 * 3 = 6


9 * 8 = 72
9 * 9 = 81

반복문 while 을 중복으로 사용하기 위해서 단을 담을 변수 dan 과 1에서 9까지 증가할 변수 i 를 선언하고 초기값을 설정하였습니다. 단은 2단부터 9단까지, 곱하는 수 i 는 1부터 9까지 변화할 수 있게 프로그래밍 해주면 됩니다.

 

첫번째 while의 조건은 dan 이 10보다 작을때까지 반복하며 10이 되는 순간 while 문을 벗어나도록 하였습니다. 그리고 바로 두번째 while 역시 10보다 작은 조건에서만 반복하도록 하였습니다. print() 함수가 끝나면 i 값은 증감연산자를 이용해서 1씩 증가시킵니다.

 

2020/08/07 - [쿤즈 Dev/C] - [C언어] 연산자의 종류에 대해서 알아보자

 

내부 while 반복문이 9번 반복 이후 10이 되었을 때, 조건 i < 10 의 값이 false 가 나오면서 구문 밖으로 나오게 됩니다. 그럼 dan 값이 1 증가하게 되고 i 값은 다시 1로 초기화를 시켜줍니다.

 

이와같은 과정을 2단부터 9단까지 반복하고 dan < 10 의 값이 false 가 되었을때 비로소 최종 while 구문을 나와 프로그램을 종료하게 됩니다.


이번 포스팅에서는 반복문 while 에 대해서 알아보았습니다. 반복문은 for 문과 함께 while 문도 매우 많이 사용합니다. 사실 모든 언어가 그렇듯 조건문과 반복으로 프로그래밍을 하기 때문에 구문의 장단점을 이용해서 개발을 진행합니다. 다음엔 while 문에 추가된 do while 반복문을 알아보도록 하겠습니다.

댓글