본문 바로가기
C언어

C언어 while문을 공부하자! 반복문

by 여름코딩 2023. 3. 25.
반응형

안녕하세요 판타지코딩입니다!

 

C언어로 작성할 수 있는 반복문은 for문과 while문이 있습니다. 오늘은 while문의 문법을 알아보고, while문을 활용한 반복문을 작성해 보도록 하겠습니다!

while문

 

while문 문법

while문은 'while'의 뜻인 '~동안' 처럼 조건이 만족하는 동안에만 수행하는 반복문입니다! 조건은 다음과 같이 작성합니다.

int cnt = 0;

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

while의 오른쪽 괄호 안에 있는 'cnt<10'가 바로 조건입니다. cnt가 10보다 작을 동안에만 {} 이 괄호 안의 코드가 반복합니다. 반드시 이렇게 작성하는 것은 아니고, 원하는 조건을 직접 작성하시면 됩니다.

 

int cnt = 0;

cnt의 값을 0으로 초기화 했으므로 'cnt<10'을 만족하므로 먼저 한 번 내부의 코드를 실행합니다.

 

cnt++;
printf("%d", cnt);

cnt는 1이 되고, printf로 출력시 1이 출력됩니다. 여기까지 코드가 실행되면 다시 while문 내의 코드를 반복합니다. cnt가 1이 되었으므로 'cnt<10'을 만족하므로 이렇게 몇 차례 더 반복합니다.

 

위의 코드가 반복된 후 cnt가 9가 되었을 때를 가정해보겠습니다.

while(cnt<10)  //cnt가 9이므로 만족
{
    cnt++;     //cnt가 10이 됨
    printf("%d", cnt);     //10이 출력됨
}

cnt가 9일 때 'cnt<10'을 만족하므로 반복을 수행합니다. cnt++로 10이 되고, printf로 10을 출력합니다. 

 

이렇게 cnt가 10이 되고, 다시 while문이 반복될 수 있는지 알아보겠습니다.

while(cnt<10)    //cnt가 10이므로 조건 만족x, 아래 코드 실행하지 않고 while문 나감
{
    cnt++;
    printf("%d", cnt);
}

cnt<10일 때에만 실행되므로 cnt가 10이라면 while문은 더 이상 반복하지 않습니다. 그러므로 while문을 나가게 됩니다.

 

코드 실행 결과, cnt는 1부터 10까지 출력되게 됩니다. 그리고 다시 while문을 실행할 수 있는지 조건을 확인할 때 cnt가 10이므로 더 이상 코드를 실행하지 않고 while문을 나가게 됩니다.

 

while문 활용하기

while문은 특정 조건을 만족할 때만 같은 코드가 반복될 때 활용할 수 있습니다. while문 내의 코드의 조건이 변경될 수도 있기 때문에 정적이기 보다는 다소 동적인 반복문입니다. 그래서 코드 내의 변수가 변화하여 특정 수에 도달했을 때 반복을 멈추고 싶다면 적절한 코드가 되겠습니다.

int st = 0;
int ed = 10;

while(st<ed)
{
    if(st<ed)
    {
        printf("st : %d ed : %d", st, ed);
        st++;
    }
    else
    {
        printf("st : %d 는 ed : %d 와 같음", st, ed);
    }
}

 

이 코드는 st의 값이 ed보다 작을 때에만 반복됩니다. 다시 말하면, st가 ed와 같거나 넘을 때 반복문이 중단됩니다. 한 줄씩 분석해 보겠습니다.

 

int st = 0;
int ed = 10;

st와 ed의 초기값을 0과 10으로 초기화 했습니다. while문을 통해서 st의 값이 ed와 같아지도록 st값을 증가시킬 것입니다.

 

while(st<ed)  //st = 0, ed = 10 이므로 만족
{
}

while문의 괄호 안에는 st<ed라는 조건이 작성되어 있습니다. st가 ed보다 작을 경우 조건을 만족하므로 괄호 안의 코드를 반복하게 됩니다.

 

if(st<ed)  //st : 0, ed : 10 이므로 조건 만족
{
    printf("st : %d ed : %d", st, ed);
    st++;  //st = 1
}
else
{
    printf("st : %d 는 ed : %d 와 같음", st, ed);
}

st가 0이고, ed는 10이므로 if문의 'st<ed'를 만족하므로 st++을 수행하여 st는 1이 됩니다. 그럼 while문 내의 코드가 종료되고 다시 한 번 while문의 조건을 확인하게 됩니다.

 

while(st<ed)  //st = 1이므로 만족

st가 1이 되었으므로 조건을 만족하게 됩니다. 그러므로 내부의 코드를 한 번 더 실행하게 되고, st가 9일 때까지 코드를 반복하게 됩니다. st가 9일 때를 가정하여 다음 코드를 보겠습니다.

 

while(st<ed)  //st = 9, ed = 10 이므로 만족
{
    if(st<ed)  //st = 9, ed = 10 이므로 만족
    {
        printf("st : %d ed : %d", st, ed);
        st++;  //st = 10이 되므로 다음번 while문은 수행하지 않음
    }
    else
    {
        printf("st : %d 는 ed : %d 와 같음", st, ed);
    }
}

st가 9이므로 st<ed를 만족하여 내부의 코드를 수행합니다. 그러나 if문 내에서 st++를 수행하면서 st는 10이 됩니다. 그러므로 다음번 while문 시작 지점에서 st<ed를 만족하지 않으므로 while문을 종료합니다.

 

이처럼 while문은 변수의 값이 변경될 때 특정 조건을 만족하지 않게 될 경우 코드를 중단시키는 방법을 활용해서 특정 구간의 반복을 하는 코드를 작성할 수 있습니다. 그럼 오늘은 while문의 문법과 활용 방법을 알아보았습니다.

 

감사합니다!

반응형