본문 바로가기

Code.D IT 강좌/C언어

[C언어 강좌] 제어문 - 반복문(while문, for문, do~while문)

C언어 강좌

제어문

제어문의 간단한 분류에 대해 알아보실 분은 아래의 링크를 확인해주세요!

[C언어 강좌] 제어문 - 조건문(if문, switch문)



반복문

코드상에서 동일한 문장을 여러 번 반복해서 출력해야 하는 경우라든가 1~100까지의 수를 1씩 증가하게 만들어야 하는 등의 반복작업을 해야 하는 경우가 있습니다. 이럴 때는 printf함수 100번을 사용하여 코드를 짜야 할까요? 이는 굉장히 비효율적이며 코드의 가독성이 상당히 떨어집니다. 그래서 나타난 것이 반복문입니다. 반복문의 종류에는 while문, for문, do~while문이 있습니다.



while문

'~하는 동안'의 의미입니다.

조건 값이 true인지 false인지 확인한 후, 조건식이 참인 동안 '수행 구문'을 반복해서 실행합니다.

반복문 사용 시 필수 요소는 세 가지가 있습니다.

1) 초기식, 2) 조건식, 3) 증감식



while문의 형식

초기식;

while(조건식){

반복문 수행 구문;

반복문 수행 구문;

증감식;

}

//반복문 끝



while 무한 반복문

종료되지 않고 무한히 실행되는 반복문을 말합니다.

반복 조건이 참(true)인 경우 수행 구문을 무한 반복합니다.

Ex) 초기식;

while(1){

수행 구문;

증감식;

}



//while 반복문을 통한 곱셈
//1*2*3*4*5*6*7*8*9

#include <stdio.h>

int main(void){

     //초기식
     int i = 1;
     int mult = 1;

           //조건식
     while(i<10){

         mult *= i;
         //mult = mult * i

         printf("i: %d, mul: %d \n", i, mult);

         //증감식
         i+=1;
     }

     printf("반복문 종료 후 결과 값: %d \n", mult);

     return 0;

}



다음은 출력 결과입니다.






초기식

→ 1씩 증가할 변수(i)와 곱한 값을 저장할 변수(mult)를 선언합니다.

조건식

 while 반복문을 사용하여 i가 10보다 작을 때까지(i<10)을 수행합니다.

수행 구문: mult * i의 결과 값을 mult에 저장합니다.

증감식

 한 번 반복문이 끝날 때마다 i를 1씩 증가시켜줍니다.

1~9까지 곱한 값을 출력합니다.



for문

for문도 while문과 마찬가지로 초기식, 조건식, 증감식이 필요합니다.

그러나 위치가 다릅니다. 형식을 살펴보겠습니다.



for문 형식

for(초기식; 조건식; 증감식){

수행 구문;

}



#include <stdio.h>

int main(void){

     int num;

             //초기식; 조건식; 증감식
     for(num=1; num<7; num++){

         printf("num: %d \n", num);

     }

     printf("반복문 후 결과 값: %d", num);

     return 0;

}



다음은 출력 결과입니다.






저는 개인적으로 반복문을 사용할 때 while문보다 for문을 많이 사용합니다.

초기식, 조건식, 증감식이 한곳에 모여있어 가독성이 좋기 때문이죠.

위의 코드는 num이 1부터 num<7이 될 때까지

num을 1씩 증가(num++)시키고 반복될 때마다 num을 출력합니다.

조건식은 num<7인데 마지막에 7이 출력되는 이유는, 7이 된 이후에 반복문을 들어가지 못하기 때문이죠.



do~while문

한 번 실행한 후, while문의 조건과 비교해서 반복할지를 결정합니다.

while문의 조건이 참이거나 거짓의 여부에 관계없이 무조건 한 번은 수행 구문을 실행합니다.

그 이유는 while문과 비교했을 때, 조건식이 수행 구문 뒤에 있기 때문이죠.

while문과 for문에 비해 사용 빈도가 낮습니다.



do~while문 형식

do{

수행 구문;

}while(조건식)



#include <stdio.h>

int main(void){

     int num;
     num =7;

     //최소한 한번은 실행
     do{ 
         printf("%d \n", num);
         num ++;
     }while(num < 7);

     printf("while문 종료 \n");
     printf("%d \n", num);

     return 0;

}



다음은 출력 결과입니다.






변수 num을 정수형(int)으로 선언한 뒤, 7로 초기화합니다.

do~while 반복문에서 num<7이라는 조건식을 두었지만 이미 num은 7이네요.

그럼 수행 구문을 실행하면 안 되겠죠.

그런데 do~while문은 조건과 관계없이 무조건 한 번은 실행해야 합니다.

따라서 num=7에 num++을 수행하니 8이라는 숫자가 출력됩니다.