본문 바로가기

C Language/Programming Course

4장 반복문(3부 while문) 첫번째 시간


4장 반복문
3부 while문

    이번 시간에는 while문에 대해서 공부 해 보겠습니다.
    이 while문도 for문과 같이 사용이 되는데요.
    먼저 while문에 대해서 알아보고 for문과 while문을
    어떻게 사용을 하는지에 대해서 한번 알아 보겠습니다.

    while문은

    초기값;
    while(조건식)
    {
        조건 변환값(증감식 및 값변환 식);
    }

    이런 구성으로 되어 있습니다.
   
    while문 안에 조건 변환값(증감식 및 값변환 식)이라는 것은
    while문은 for문과 달리 꼭 숫자만의 증감식이 아니라, 문자와
    참,거짓 등 다양한 조건에 맞춰 사용을 할수 있습니다.
    반복하면서 if문을 맞춘다 라고 생각해도 되겠죠!?
    그럼 간단한 형태부터 먼저 설명 드리겠습니다.

    이번 설명에도 for문과 비교형식으로 써보겠습니다.

 for문

while문 

  for(i = 1; i < 5; i++)
    {
        printf("%d", i);
    }
  int i= 1;
    while(i < 5)
    {
        printf("%d", i);
        i++;
    }


   
    이런 식으로 변환이 될 수 있습니다.
    이해 금방 가시죠!?
    뭐 별로 어려운건 아닙니다.

    보시면 초기값을 위에 먼저 적어 두고, while(조건식)에서 조건에 만족하는지
    알아 보고 만족을 한다면 그 안으로 들어가서 원하는 작업을 하고 그리고 나오기 전에
    증감식을 하시고 안하신다면 for문에서 말했던 무한 루프가 걸리겠죠?
    이런식으로 사용은 for문과 동일 합니다.

    그럼 다만 여기에서 알아 두어야 할 것은 while문은 언제 쓰이고 for문은
    언제 쓰이는 지가 중요한 것입니다.
    이것도 그림으로 알아 볼까요!?

     ┏━━━━━━━━ while ━━━━━━━━┓
     ┃                                                             ┃
     ┃               ┏━━  for ━━┓                    ┃
     ┃               ┃                   ┃                     ┃
     ┃               ┗━━━━━━┛                    ┃
     ┃                                                             ┃
     ┗━━━━━━━━━━━━━━━━━━━┛

    이런식으로 for문은  while문 안에 한 부분정도 밖에 안됩니다.
    즉, while문은 반복을 위한 어떤 조건에 모두 다 사용을 할 수있지만,
    for문은 모든 조건이 아닌 for문에 맞는 어떤 조건에 만족할때만 
    사용할 수 있겠다는 거겠죠?
    그래서 보통 while문과 for문의 사용 용도는

    while문은 반복횟수를 모를때
    for문은 반복횟수를 알때

   
    예를 들어 for문 같은 경우는 1부터~5까지의 합을 구할때 사용 할 수 있겠죠!?
    그리고 while문은 결과가 0이 될때까지 반복 구할때 사용하겠죠!?

    그럼 for문의 예는 전시간에 봤으니깐 while문의 예를 보겠습니다.
    for문에서 할 수 없는 반복 예제로 한번 해 보겠습니다.
    int i = -1;

    while(i > 5 && i < 0)
    {
        printf("0~5사이의 숫자를 입력 해 주세요~");
        scanf("%d", &i);       
    }

    이런식으로 사용을 할 수 있습니다.
    위 예제를 보면 전혀 반복 횟수를 모르겠죠!?
    한번만에 빠져 나갈 수도 있고, 아니면 영원히 못 나올 수도 있고
    이럴 때 사용을 하신다고 생각하시면 됩니다.
    
    쉽게 생각 하실려면 for문 사용못하는 건 다 while문으로 사용 할 수 있다고
    생각 하시면 됩니다.
    그리고 다 싫으시다면 for문을 안쓰고 다 while문을 써도 상관은 없습니다.
    하지만 저번에 제어문에서 처럼 어느 부분은 꼭 for문에 좋을 때가 있을 것입니다. 
    언제 그렇다 라고는 말 못하지만 그럴 때는 for문을 사용하시는 것이 편할 것입니다.

   


while문 예제
===========================================   
    #include <stdio.h>
   
    int main()
    {
        int count1 = 1;
        int count2 = 1;

        while(count1 < 5)
        {
            while(count2 < 5)
            {
                printf("%d * %d = %d ", count1, count2, count1*count2);
                count2++;
            }

            printf("\n");
            count1++;
            count2 = 1;
        }
   
        return 0;
    }
===========================================   

문제 : 구구단을 출력 해 보세요~(while문 사용)