반복문
- 프로그램 흐름을 제어하는 구성 중 하나다.
- 예) FPS : 프레임 단위마다 루프
- 횟수가 정해진 반복을 쓸때는 for문, 횟수가 정해지지 않은 반복이면 while문을 쓴다.
While 문
while (조건식) {
// 조건식이 참인 동안 반복 실행될 코드
}
- 주어진 조건식이 참인 동안 코드 블록을 반복 실행한다.
- 코드가 끝나면 다시 조건식을 확인한다.
- 조건식이 true가 계속되면 무한루프가 걸린다.
- 무한 루프 : 조건식이 항상 참이면 무한히 반복한다.
do-while 문
do {
// 먼저 한 번 실행되고, 조건식이 참인 동안 반복 실행될 코드
} while (조건식); // 세미콜론(;) 필수
- 코드 블록을 한번 실행한 후, 조건식을 검사하여 참이면 반복한다.
- 조건과 관계없이 본문이 최소 한 번은 실행됨.
for 문
for (초기식; 조건식; 증감식) {
// 조건식이 참인 동안 반복 실행될 코드
}
- 초기식, 조건식, 증감식을 이용하여 특정 횟수만큼 반복 실행한다.
- 초기식: 반복 시작 전 한 번만 실행 (주로 반복 제어 변수 초기화).
- 조건식: 매 반복 시작 전 검사, 참이면 반복, 거짓이면 종료.
- 증감식: 매 반복 본문 실행 후 실행 (주로 반복 제어 변수 값 변경).
- for문 내에 정의한 ‘초기식’의 변수는 for문이 끝나면 메모리에서 삭제되어서 for문 외부에서 사용이 불가능하다.
for문의 형태
int n;
printf("자연수 입력: ");
scanf("%d", &n);
int sum = 0;
for (int i = 1; i <= n; i++) { // i를 1로 초기화, i가 n 이하인 동안 반복, 매 반복 후 i를 1 증가
sum += i;
}
printf("1부터 %d까지의 합: %d\\\\n", n, sum);
- 초기식 생략 가능 (단, 세미콜론 유지).
- 반복문 외부에서 변수를 선언했을 시 생략할 수 있다.
- 조건식 생략 시 무한 루프 (단, 세미콜론 유지).
- 증감식 여러 개 사용 가능 (쉼표로 구분).
- 모든 식 생략 가능 (for(;;) -> 무한 루프).
- 반복문 본체가 비어있을 수도 있음.
- i가 n보다 커질때까지 pow를 2씩 곱하는 식이다.
- int i, pow; for(i = 1, pow = 1; i < n; i++, pow *= 2);
루프 제어문
break 문
for (int i = 1; ; i++) { // 조건식 생략 (무한 루프 의도)
int k;
scanf("%d", &k);
if (k == 0) { // 입력받은 k가 0이면
break; // for 문 탈출
}
printf("%d번째 입력 결과: %d\\\\n", i, k);
}
- 현재 실행 중인 반복문 또는 switch 문을 즉시 종료한다.
- for문이 2개라면?
- 해당 break문이 있는 for문 또는 switch 문만 종료된다.
- 그 for문 안에 switch 또는 for문이 있다면?
- break문은 주로 특정 조건을 만족했을 때 반복을 중단하기 위해 사용.
continue 문
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
if (i % 3 == 0) { // i가 3의 배수이면
continue; // 현재 루프(printf)를 건너뛰고 다음 i로 진행
}
printf("%d \\\\n", i);
}
- 반복문의 나머지 부분을 건너뛰고, 다음 반복을 시작한다.
- 특정 조건에서 현재 반복만 건너뛰고 싶을 때 사용한다.
- while문 do-while 문에서는?
중첩 반복문
- 하나의 반복문 안에 다른 반복문이 포함된 형태다.
- 바깥쪽 루프가 한 번 반복할 때마다 안쪽 루프는 전체 반복을 수행.
- 2차원 배열 처리, 특정 패턴 출력 등에 유용.
팩토리얼