Nagie's DevStory
[C] 16. 반복문 사용하기 본문
코드를 작성하다 보면 특정 구간에서 여러 번 반복시켜야 할 상황이 온다
예를 들면 변수에 값을 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 문만 쓰지 말고
상황에 따라 유동적으로 이 세 가지 반복문 중 하나를 선택해서 쓰는 게 현명할 거 같다.