Nagie's DevStory

[C] 16. 반복문 사용하기 본문

Programming/C

[C] 16. 반복문 사용하기

Nagie 2023. 9. 6. 00:24
728x90

코드를 작성하다 보면 특정 구간에서 여러 번 반복시켜야 할 상황이 온다

 

예를 들면 변수에 값을 1씩 더하고 변숫값을 출력시켜야 한다는 상황이라 가정해 보자

 

#include <stdio.h>

int main () {

    int a = 0;
    
    a++;
    printf_s("%d" , a);
    
    a++;
    printf_s("%d" , a);
    
    (...)
    
    a++;
    printf_s("%d" , a); // a를 20번 더함...
}

 

위의 코드처럼 작성한다면 분명히 소스 코드의 길이도 불필요하게 늘어날 것이고

 

늘어난 소스 코드의 길이 덕에 유지보수도 힘들 거다.

 

이러한 단순 작업을 편하게 해주는 녀석이 반복문이다.

 

위의 코드를 간단히 9줄로 축약할 수 있다.

 

#include <stdio.h>

int main() {

	for (int a = 0; a <= 20; a++) {

		printf_s("%d\n",a);
	}
}

 

눈으로 보기에도 편해졌고 괴물 같던 소스 코드의 길이도 줄었다.

 

반복문의 종류는 총 3가지가 있다.

 

for(;;) , while() , do while()

 

첫 번째로 for 문의 사용법을 알아보자

 

for(변수선언 및 초기화 ; 조건식 ; 증감식) {

    반복 수행할 코드;
}

//사용 예시

#include <stdio.h>

int main() {

	for (int a = 0; a <= 20; a++) {

		printf_s("%d\n",a);
	}
}

 

개인적으로 for 문이 가장 직관적인 반복문인 거 같다.

 

for(;;) 한 줄에 변수 선언 또는 변수 초기화와 조건식 그리고 증감식 까지 한눈에 볼 수 있으니까 말이다.

 

 

두 번째로 while 문의 사용법을 알아보자

 

증감에 사용할 변수 = 0;

while(조건식){

    반복 수행할 코드;
    증감식;
}

//사용 예시

#include <stdio.h>

int main() {

	int a = 0;
    
	while (a < 20) {

		printf_s("%d\n",a);
        a++;
	}
}

 

while 문은 루프를 돌 때 for 문과 차이점이 있다.

 

조건식에 사용할 변수의 초기화 부분이 따로 없어서 초기화는 while 문밖에서 이루어져야 하고

 

조건 평가 부분이 루프의 시작 부분에 있으며 조건이 참(true)일 때만 반복되고 거짓(false)일 때 루프가 멈춘다.

 

그리고 루프를 제어하기 위해선 증감 식을 while 문 안에 명시적으로 작성해 줘야 한다는게  앞서 본 for 문과의 차이점이다.

 

 

마지막으로 do while 문의 사용법이다.

 

증감에 사용할 변수 = 0;

do {

    반복 수행할 코드;
    증감식;
    
} while(조건식);

//사용 예시

#include <stdio.h>

int main() {

	int a = 0;

	do {

		printf_s("%d\n",a);
        a++;
	
	} while (a <= 20);
}

 

while 문이 가지는 특성을 똑같이 가지고 있지만 거기에 하나 더 추가된다.

 

do while 문은 조건식의 결과를 무시하고 무조건 1회는 루프를 돈다.

 

즉 1회 루프를 무조건 돌고 나서 조건식의 결과에 따라 루프를 돌지 말지 결정을 내린다는 것이다.

 

이렇게 세 가지의 반복문을 전부 살펴봤다 제일 쓰기 편한 건 for 문이지만 무조건 for 문만 쓰지 말고

 

상황에 따라 유동적으로 이 세 가지 반복문 중 하나를 선택해서 쓰는 게 현명할 거 같다.

728x90
Comments