for 반복문
for 반복문 개요
for 반복문은 특정 조건이 만족되는 동안 코드 블록을 반복적으로 실행하는 제어 구조입니다.
주로 횟수가 정해진 반복 작업에 사용되며, 배열이나 컬렉션을 순회할 때 자주 활용됩니다.
for 반복문의 기본 구조
for (초기화; 조건; 증감) {
// 반복 실행될 코드
}
- 초기화 : 반복문이 시작될 때 한 번만 실행됩니다.
- 조건 : 각 반복 시작 시 평가되며, 참이면 반복을 계속하고 거짓이면 반복을 종료합니다.
- 증감 : 각 반복이 끝날 때마다 실행됩니다.
기본 예제 : 1부터 10까지 출력
#include <iostream>
int main() {
for (int i = 1; i <= 10; i++) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
1 2 3 4 5 6 7 8 9
for 반복문의 다양한 형태
여러 변수 사용
#include <iostream>
int main() {
for (int i = 0, j = 10; i < j; i++, j--) {
std::cout << "i: " << i << ", j: " << j << std::endl;
}
return 0;
}
이 예제는 두 개의 변수를 동시에 조작하며 반복합니다.
무한 루프
for (;;) {
// 무한히 반복되는 코드
if (조건) break; // 루프 탈출 조건
}
무한 루프는 특정 조건이 만족될 때까지 계속 실행되어야 하는 경우에 사용됩니다.
범위 기반 for 문 (C++ 11 이상)
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
범위 기반 for 문은 컨테이너의 모든 요소를 순회할 때 매우 편리합니다.
중첩된 for 반복문
#include <iostream>
int main() {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
std::cout << i << "," << j << " ";
}
std::cout << std::endl;
}
return 0;
}
1,1 1,2 1,3
2,1 2,2 2,3
3,1 3,2 3,3
중첩된 for 문은 2차원 배열이나 행렬을 다룰 때 유용합니다.
continue와 break 문
continue
: 현재 반복을 즉시 종료하고 다음 반복으로 진행break
: 반복문을 완전히 종료하고 빠져나옴
#include <iostream>
int main() {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) continue; // 짝수면 건너뜀
if (i > 7) break; // 7보다 크면 반복문 종료
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
1 3 5 7
for 반복문과 배열
#include <iostream>
int main() {
int arr[] = {10, 20, 30, 40, 50};
int size = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
이 방법은 배열의 인덱스를 직접 사용해야 할 때 유용합니다.
C++ 11 초기화 구문
#include <iostream>
int main() {
for (int i = 0; int arr[] = {1, 2, 3, 4, 5}; i < 5; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
이 형태는 반복문 내에서만 사용되는 배열을 초기화할 때 유용합니다.
주의사항
- 무한 루프에 빠지지 않도록 주의해야 합니다. 조건문이 항상 참이 되지 않도록 해야 합니다.
- 반복 횟수가 많을 경우 성능에 영향을 줄 수 있으므로, 필요한 만큼만 반복하도록 설계해야 합니다.
- 부동소수점 변수를 카운터로 사용할 때는 주의가 필요합니다. 부동소수점의 정확성 문제로 예상치 못한 결과가 발생할 수 있습니다.
- 반복문 내에서 반복 변수를 수정하는 것은 피해야 합니다. 의도치 않은 결과를 초래할 수 있습니다.
연습 문제
- 1부터 100까지의 합을 계산하는 프로그램을 작성하세요.
- 구구단을 출력하는 프로그램을 작성하세요. (중첩 for문 사용)
- 피보나치 수열의 처음 20개 항을 출력하는 프로그램을 작성하세요.
- 사용자로부터 입력받은 수의 팩토리얼을 계산하는 프로그램을 작성하세요.
- 1부터 100까지의 숫자 중 3의 배수와 5의 배수를 모두 출력하는 프로그램을 작성하세요. (continue 사용)
참고자료
- C++ 공식 문서의 for 문 섹션 : C++ for statement
- 범위 기반 for 문 : Range-based for loop
- C++ Core Guidelines의 반복문 관련 규칙 : ES.71 : Prefer a range-for-statement to a for-statement when there is a choice
- Effective C++ : 항목 3 "가능한 한 const를 사용하라" - Scott Meyers (for 문에서의 const 사용)