제어문

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

제어문

제어문은 프로그램의 실행 흐름을 제어하는 구문으로, 조건에 따라 코드를 실행하거나 반복 실행하는 데 사용됩니다. C++에서는 조건문(if, switch)과 반복문(for, while, do-while)의 두 가지 주요 유형의 제어문을 제공합니다.

3.1 조건문

3.1.1 if 문

if 문은 주어진 조건이 참(true)일 때 코드 블록을 실행합니다.

기본 구문:

if (조건식) {
    // 조건이 참일 때 실행되는 코드
}

예제:

#include <iostream>

int main() {
    int num = 10;
    
    if (num > 0) {
        std::cout << "양수입니다." << std::endl;
    }
    
    return 0;
}

3.1.2 if-else 문

if-else 문은 조건이 참일 때와 거짓일 때 각각 다른 코드 블록을 실행합니다.

기본 구문:

if (조건식) {
    // 조건이 참일 때 실행되는 코드
} else {
    // 조건이 거짓일 때 실행되는 코드
}

예제:

#include <iostream>

int main() {
    int num = -5;
    
    if (num > 0) {
        std::cout << "양수입니다." << std::endl;
    } else {
        std::cout << "양수가 아닙니다." << std::endl;
    }
    
    return 0;
}

3.1.3 if-else if-else 문

여러 조건을 순차적으로 검사하고 해당하는 조건의 코드 블록을 실행합니다.

기본 구문:

if (조건식1) {
    // 조건식1이 참일 때 실행되는 코드
} else if (조건식2) {
    // 조건식1이 거짓이고 조건식2가 참일 때 실행되는 코드
} else if (조건식3) {
    // 조건식1, 조건식2가 거짓이고 조건식3이 참일 때 실행되는 코드
} else {
    // 모든 조건식이 거짓일 때 실행되는 코드
}

예제:

#include <iostream>

int main() {
    int score = 85;
    
    if (score >= 90) {
        std::cout << "A 학점" << std::endl;
    } else if (score >= 80) {
        std::cout << "B 학점" << std::endl;
    } else if (score >= 70) {
        std::cout << "C 학점" << std::endl;
    } else if (score >= 60) {
        std::cout << "D 학점" << std::endl;
    } else {
        std::cout << "F 학점" << std::endl;
    }
    
    return 0;
}

3.1.4 중첩 if 문

if 문 안에 다른 if 문을 포함하여 더 복잡한 조건 검사를 구현할 수 있습니다.

기본 구문:

if (외부_조건) {
    // 외부 조건이 참일 때 실행
    if (내부_조건) {
        // 외부 조건과 내부 조건이 모두 참일 때 실행
    } else {
        // 외부 조건은 참이지만 내부 조건은 거짓일 때 실행
    }
} else {
    // 외부 조건이 거짓일 때 실행
}

예제:

#include <iostream>

int main() {
    int age = 25;
    bool hasLicense = true;
    
    if (age >= 18) {
        std::cout << "성인입니다." << std::endl;
        
        if (hasLicense) {
            std::cout << "운전이 가능합니다." << std::endl;
        } else {
            std::cout << "면허증이 필요합니다." << std::endl;
        }
    } else {
        std::cout << "미성년자입니다." << std::endl;
    }
    
    return 0;
}

3.1.5 조건 연산자 (삼항 연산자)

조건에 따라 값을 선택하는 간결한 구문입니다.

기본 구문:

결과 = (조건) ? 참일_때_값 : 거짓일_때_값;

예제:

#include <iostream>

int main() {
    int a = 10, b = 20;
    int max = (a > b) ? a : b;  // b가 더 크므로 max = 20
    
    std::cout << "더 큰 값: " << max << std::endl;
    
    // if-else와 동일한 결과
    if (a > b) {
        max = a;
    } else {
        max = b;
    }
    
    return 0;
}

3.1.6 switch 문

여러 가능한 값 중 하나를 기반으로 다른 코드 블록을 실행합니다.

기본 구문:

switch (표현식) {
    case 값1:
        // 표현식이 값1과 같을 때 실행
        break;
    case 값2:
        // 표현식이 값2와 같을 때 실행
        break;
    // 더 많은 case...
    default:
        // 표현식이 어떤 case와도 일치하지 않을 때 실행
}

예제:

#include <iostream>

int main() {
    int day = 3;
    
    switch (day) {
        case 1:
            std::cout << "월요일" << std::endl;
            break;
        case 2:
            std::cout << "화요일" << std::endl;
            break;
        case 3:
            std::cout << "수요일" << std::endl;
            break;
        case 4:
            std::cout << "목요일" << std::endl;
            break;
        case 5:
            std::cout << "금요일" << std::endl;
            break;
        case 6:
            std::cout << "토요일" << std::endl;
            break;
        case 7:
            std::cout << "일요일" << std::endl;
            break;
        default:
            std::cout << "잘못된 입력" << std::endl;
    }
    
    return 0;
}

switch 문 특징:

  • switch 표현식은 정수 타입(int, char, enum 등)이어야 합니다.
  • case 값은 상수 표현식이어야 합니다.
  • break가 없으면 다음 case로 "폴스루(fall-through)"됩니다.
  • default 케이스는 선택 사항이지만 일반적으로 권장됩니다.

의도적인 폴스루 예제:

#include <iostream>

int main() {
    int day = 6;  // 토요일
    
    switch (day) {
        case 1:  // 월요일
        case 2:  // 화요일
        case 3:  // 수요일
        case 4:  // 목요일
        case 5:  // 금요일
            std::cout << "평일입니다." << std::endl;
            break;
        case 6:  // 토요일
        case 7:  // 일요일
            std::cout << "주말입니다." << std::endl;
            break;
        default:
            std::cout << "잘못된 입력" << std::endl;
    }
    
    return 0;
}

 

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

제어 흐름 변경  (0) 2025.03.27
반복문  (0) 2025.03.27
챕터2. 실습 문제  (0) 2025.03.27
타입 별칭 및 auto 키워드  (0) 2025.03.27
문자열 다루기  (0) 2025.03.27