C & C++

[C언어] while문 반복문 예제 : 기본 사용법, continue/break, do~while문, for문과의 용도 차이

jimmy_AI 2022. 4. 12. 21:50
반응형

C언어 while문 사용법 정리

C언어의 대표 반복문 구문 중 하나인 while문을 사용하는 예시에 대해서

가장 기본적인 케이스부터 continue/break 활용 및 do~while문의 심화 구문까지

총정리해보고, for문과 장점을 비교해보는 시간을 가져보도록 하겠습니다.

 

 

while문 기본 사용법

기본적인 C언어의 while문 골격은 while(조건){조건 만족 시 실행할 코드} 형태로 구성됩니다.

조건은 소괄호 () 내에 들어가며, 반복하여 실행할 코드는 중괄호인 {} 내에 적어주시면 됩니다.

 

() 안의 조건 만족 시, {} 내의 코드를 1회 실행 후, 조건 검사부인 () 내로 다시 돌아가서

조건을 재검사 후 {} 내 코드 재실행 여부를 결정하는 방식입니다.

 

기본 예시로, 아래 코드 실행 결과를 생각해보도록 하겠습니다.

#include <stdio.h>

int main(){

int i = 10;

while(i > 0){
  printf("%d\n", i);
  i--;
}

}

초기 조건인 i = 10일 때는 i > 0 조건을 만족하기에 내부의 printf문이 실행될 것입니다.

 

이후 i가 1씩 감소하면서 i = 1인 경우까지 printf문이 실행되고, i = 0으로 감소한 상태로

조건을 검사하면 0 > 0이 아니므로, while문이 멈춘다는 것을 알 수 있습니다.

 

따라서, 위 코드의 실행 결과는 10, 9, 8, ..., 2, 1이 한줄씩 나눠서 출력된 결과가 나타납니다.

 

 

continue 사용법

특수한 형태로 while문을 제어할 수 있는 continue 및 break에 대해서 살펴보겠습니다.

 

먼저, continue는 아랫 부분의 코드를 더이상 실행하지 않고 조건 검사부로 되돌아가라는

명령을 내리는 제어 역할을 수행합니다.

 

이해를 돕기 위하여, 아래 예시 코드의 결과를 살펴보겠습니다.

#include <stdio.h>

int main(){

int i = 10;

while(i > 0){
  i--;
  
  if(i % 2 == 0){ // i가 짝수이면 조건 검사부로 되돌아감
    continue;
  }
  
  printf("%d\n", i);
}

}

코드 실행부는 i를 감소시키는 부분과 if문, 그리고 printf문으로 구성되어 있습니다.

 

그러나, 감소된 i가 짝수인 경우, if문 내의 코드가 실행되면서 continue 구문을 만나게되고,

밑 부분의 printf문 실행을 건너뛰고 조건 검사부로 되돌아가게 됩니다.

 

따라서, 위 코드의 실행 결과는 9, 7, 5, 3, 1만이 한줄씩 차지하면서 출력된 결과가 나타납니다.

반응형

break 사용법

위에서 다룬 continue와 달리, break는 while문 전체의 작동을

완전히 중지시키는 제어 역할을 수행합니다.

 

참고로, while(1)처럼 작성 시, 조건 검사 결과가 항상 참이되게 만들어주는데,

이 경우 break를 통해서만 해당 while문을 종료시킬 수 있습니다.

 

이 점을 참고하여, 아래 코드의 실행 결과를 살펴보겠습니다.

#include <stdio.h>

int main(){

int i = 10;

while(1){ // 항상 while문 실행 명령
  i--;

  if(i < 5){ // i가 5보다 작아지면 while문 종료
    break;
  }

  printf("%d\n", i);
}

}

감소된 i가 5보다 큰 경우에는 지속적으로 while(1)에 의하여 {} 내의 코드가 실행되다가

i = 5로 while문 진입 시, i가 4로 감소하면서 if문 내의 break를 만나 해당 반복문이

종료된다는 점을 확인하실 수 있습니다.

 

따라서, 위 코드의 실행 결과는 9, 8, 7, 6, 5까지 한 줄씩 출력된다는 것을 확인할 수 있습니다.

 

 

do~while문

기존 while문은 선 조건검사 후 코드실행 순서였다면, 선 코드실행 후 조건검사의 형태의

반복 실행을 지원하는 do~while문의 예시에 대해서 살펴보겠습니다.

 

이 경우, 코드의 골격은 do{코드 실행 부}(조건) 형태가 됩니다.

 

예시로, 아래 코드의 결과를 생각해보겠습니다.

#include <stdio.h>

int main(){

int i = 100;

do{

  printf("%d\n", i);
  i += 1;

}while(i < 10);

}

처음에 i가 100으로 i < 10 조건을 만족하지 않지만, 일단 do 내의 printf가 1회 실행되고,

이후 증가된 i = 101에서 101 < 10의 조건 검사로 while문이 종료되는 것을 알 수 있습니다.

 

따라서, 위 코드의 실행 결과로 100이 일단 출력되고 반복문이 끝나는 것을 확인할 수 있습니다.

 

 

while문 vs for문 용도 차이

그렇다면, C언어의 두 반복문 구문인 while문과 for문은 각각 언제 사용하는 것이 유리할까요?

 

요약하면, while문은 반복 횟수가 정해져있지 않지만 특정 조건을 만족할 때까지 반복하는 경우

에 유리하며, for문은 반복 횟수가 일정 횟수로 정해진 경우에 유리합니다.

 

while문을 사용하면 좋은 예시 : 복권 당첨 시까지 구매, 사용자가 원할때까지 프로그램 반복 등

for문을 사용하면 좋은 예시 : 복권 50장 구매, 프로그램 10000번 반복 등

 

실제로, while문은 아래 코드처럼 사용자가 원할때까지 입력을 받아 실행하는

터미널 방식 프로그램 구현에 자주 사용됩니다.

#include <stdio.h>

int main(){

int i;
int money = 0;
  
while(1){
  printf("1 : 1000원 추가\n2 : 100원 추가\n3 : 종료 :");
  scanf("%d", &i);

  if(i == 1){
    money += 1000;
    printf("1000원이 추가되었습니다.\n");
  }
  else if(i == 2){
    money += 100;
    printf("100원이 추가되었습니다.\n");
  }
  else if(i == 3){
    break;
  }
  else{
    printf("잘못된 입력입니다.\n");
  }
}

printf("총 %d원 입니다.\n", money);
  
}

위 코드 내의 프로그램을 직접 실행해본 예시 결과는 아래와 같았습니다.

추가로, C언어에서의 for문 사용 방법이 궁금하신분들은 이전 글에서 따로 다룬 적이 있으니

아래 링크의 포스팅의 내용을 참고해보세요.

 

C언어 for문 케이스 정리 : 사용 방법, continue/break, 이중 for문

C언어 반복문 : for문 개요 이번 글에서는 C언어에서 for문을 사용하는 방법과 케이스에 대해 정리를 해보는 시간을 가지도록 하겠습니다. 기본 문법을 정리한 뒤, for문을 중단하는 continue/break 문

jimmy-ai.tistory.com

여기까지 C언어의 while문 사용법에 대해 정리한 글을 마무리하도록 하겠습니다. 감사합니다.