반복문

2025. 3. 27. 23:05Programming Languages/C++

3.2 반복문

3.2.1 for 문

일정 횟수만큼 코드 블록을 반복 실행합니다.

기본 구문:

for (초기화; 조건식; 증감식) {
    // 반복 실행되는 코드
}

예제:

#include <iostream>

int main() {
    // 1부터 5까지 출력
    for (int i = 1; i <= 5; i++) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    
    return 0;
}

for 문의 구성 요소:

  1. 초기화: 반복문이 시작되기 전에 한 번만 실행됩니다.
  2. 조건식: 각 반복 전에 평가되며, 참이면 반복을 계속하고 거짓이면 종료합니다.
  3. 증감식: 각 반복 후에 실행됩니다.

각 구성 요소는 선택 사항입니다:

// 무한 루프
for (;;) {
    // 무한히 반복
    // break로 탈출 필요
}

// 초기화와 증감식 외부에 배치
int i = 0;
for (; i < 5;) {
    std::cout << i << " ";
    i++;
}

3.2.2 범위 기반 for 문 (C++11)

배열, 벡터 등의 컨테이너를 쉽게 순회할 수 있는 간결한 구문입니다.

기본 구문:

for (요소_타입 변수명 : 컨테이너) {
    // 컨테이너의 각 요소에 대해 반복 실행
}

예제:

#include <iostream>
#include <vector>
#include <string>

int main() {
    // 배열 순회
    int numbers[] = {1, 2, 3, 4, 5};
    
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    
    // 벡터 순회
    std::vector<std::string> fruits = {"apple", "banana", "cherry"};
    
    for (const std::string& fruit : fruits) {  // 참조로 순회하여 복사 방지
        std::cout << fruit << " ";
    }
    std::cout << std::endl;
    
    return 0;
}

참조를 사용한 수정 예제:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    
    // 각 요소를 2배로
    for (int& num : numbers) {  // 참조로 접근하여 수정
        num *= 2;
    }
    
    // 결과 출력
    for (int num : numbers) {
        std::cout << num << " ";  // 2 4 6 8 10
    }
    std::cout << std::endl;
    
    return 0;
}

3.2.3 while 문

조건이 참인 동안 코드 블록을 반복 실행합니다.

기본 구문:

while (조건식) {
    // 조건이 참인 동안 반복 실행
}

예제:

#include <iostream>

int main() {
    int count = 1;
    
    while (count <= 5) {
        std::cout << count << " ";
        count++;
    }
    std::cout << std::endl;
    
    return 0;
}

while 문은 일반적으로 반복 횟수가 미리 정해지지 않은 경우에 사용합니다:

#include <iostream>
#include <random>

int main() {
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 6);
    
    int dice;
    
    // 6이 나올 때까지 주사위 굴리기
    while ((dice = dis(gen)) != 6) {
        std::cout << "주사위: " << dice << " (6이 아님)" << std::endl;
    }
    
    std::cout << "주사위: 6! 종료합니다." << std::endl;
    
    return 0;
}

3.2.4 do-while 문

코드 블록을 한 번 실행한 후, 조건이 참인 동안 계속 반복 실행합니다.

기본 구문:

do {
    // 적어도 한 번은 실행되고, 조건이 참인 동안 반복
} while (조건식);

예제:

#include <iostream>

int main() {
    int count = 1;
    
    do {
        std::cout << count << " ";
        count++;
    } while (count <= 5);
    std::cout << std::endl;
    
    return 0;
}

do-while은 조건을 검사하기 전에 코드 블록을 실행하므로, 최소한 한 번은 실행됩니다:

#include <iostream>
#include <string>

int main() {
    std::string password;
    
    do {
        std::cout << "비밀번호를 입력하세요: ";
        std::cin >> password;
    } while (password != "secret");
    
    std::cout << "로그인 성공!" << std::endl;
    
    return 0;
}

3.2.5 중첩 반복문

하나의 반복문 안에 다른 반복문을 포함할 수 있습니다.

예제 (구구단 출력):

#include <iostream>
#include <iomanip>  // std::setw 등 포맷팅을 위한 헤더

int main() {
    // 구구단 2단부터 9단까지 출력
    for (int i = 2; i <= 9; i++) {
        std::cout << i << "단:" << std::endl;
        
        for (int j = 1; j <= 9; j++) {
            std::cout << i << " x " << j << " = " << std::setw(2) << (i * j) << std::endl;
        }
        
        std::cout << std::endl;
    }
    
    return 0;
}

예제 (별표로 삼각형 출력):

#include <iostream>

int main() {
    int height = 5;
    
    for (int i = 1; i <= height; i++) {
        // 공백 출력
        for (int j = 1; j <= height - i; j++) {
            std::cout << " ";
        }
        
        // 별표 출력
        for (int k = 1; k <= 2 * i - 1; k++) {
            std::cout << "*";
        }
        
        std::cout << std::endl;
    }
    
    return 0;
}

 

'Programming Languages > C++' 카테고리의 다른 글

조건부 컴파일  (0) 2025.03.27
제어 흐름 변경  (0) 2025.03.27
제어문  (0) 2025.03.27
챕터2. 실습 문제  (0) 2025.03.27
타입 별칭 및 auto 키워드  (0) 2025.03.27