icon안동민 개발노트

조건문 (if, else if, else)


조건문 개요

 조건문은 프로그램의 흐름을 제어하는 핵심적인 구조입니다. 특정 조건에 따라 다른 코드를 실행하고 싶을 때 사용합니다.

 C++에서는 if, else if, else 키워드를 사용하여 조건문을 구성합니다.

if 문

 기본 구조

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

 조건은 불리언 표현식이어야 합니다. 즉, 결과가 true 또는 false여야 합니다.

if 문 예제
#include <iostream>
 
int main() {
    int number = 10;
    
    if (number > 0) {
        std::cout << "Number is positive." << std::endl;
    }
    
    return 0;
}

 이 예제에서 number > 0은 true이므로, "Number is positive."가 출력됩니다.

if-else 문

 기본 구조

if (조건) {
    // 조건이 참일 때 실행되는 코드
} else {
    // 조건이 거짓일 때 실행되는 코드
}
if-else 문 예제
#include <iostream>
 
int main() {
    int number = -5;
    
    if (number >= 0) {
        std::cout << "Number is non-negative." << std::endl;
    } else {
        std::cout << "Number is negative." << std::endl;
    }
    
    return 0;
}

 이 예제에서 number >= 0은 false이므로, "Number is negative."가 출력됩니다.

if-else if-else 문

 기본 구조

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

 여러 개의 조건을 순차적으로 검사할 때 사용합니다.

if-else if-else 문 예제
#include <iostream>
 
int main() {
    int score = 85;
    
    if (score >= 90) {
        std::cout << "Grade: A" << std::endl;
    } else if (score >= 80) {
        std::cout << "Grade: B" << std::endl;
    } else if (score >= 70) {
        std::cout << "Grade: C" << std::endl;
    } else if (score >= 60) {
        std::cout << "Grade: D" << std::endl;
    } else {
        std::cout << "Grade: F" << std::endl;
    }
    
    return 0;
}

 이 예제에서는 점수에 따라 학점을 출력합니다. 85점이므로 "Grade: B"가 출력됩니다.

중첩된 if 문

 조건문 안에 다른 조건문을 넣을 수 있습니다.

#include <iostream>
 
int main() {
    int x = 10, y = 20;
    
    if (x > 0) {
        if (y > 0) {
            std::cout << "Both x and y are positive." << std::endl;
        } else {
            std::cout << "x is positive, but y is not." << std::endl;
        }
    } else {
        std::cout << "x is not positive." << std::endl;
    }
    
    return 0;
}

 이 예제에서는 "Both x and y are positive."가 출력됩니다.

조건식

 비교 연산자

  • == (같다)
  • != (같지 않다)
  • < (작다)
  • > (크다)
  • <= (작거나 같다)
  • >= (크거나 같다)

 논리 연산자

  • && (AND) : 두 조건이 모두 참일 때 참
  • || (OR) : 두 조건 중 하나라도 참이면 참
  • ! (NOT) : 조건의 결과를 반전
조건식 예제
#include <iostream>
 
int main() {
    int age = 25;
    bool hasLicense = true;
    
    if (age >= 18 && hasLicense) {
        std::cout << "You can drive." << std::endl;
    } else {
        std::cout << "You cannot drive." << std::endl;
    }
    
    return 0;
}

 이 예제에서는 나이가 18세 이상이고 운전면허가 있으므로 "You can drive."가 출력됩니다.

주의사항

 1. 블록 사용 : 조건문 뒤에 오는 코드 블록이 한 줄이라도 중괄호를 사용하는 것이 좋습니다. 이는 가독성을 높이고 오류를 방지합니다.

 2. else if vs 중첩된 if : else if를 사용하면 코드의 가독성이 향상되고, 조건 검사의 효율성이 높아집니다.

 3. 조건식의 평가 순서 : &&|| 연산자는 단락 평가(short-circuit evaluation)를 수행합니다. 이를 이용하여 효율적인 코드를 작성할 수 있습니다.

 4. 부동소수점 비교 : 부동소수점 숫자를 직접 비교할 때는 주의가 필요합니다. 작은 오차로 인해 예상치 못한 결과가 나올 수 있습니다.

연습 문제

  1. 사용자로부터 정수를 입력받아 양수, 음수, 0인지 판별하는 프로그램을 작성하세요.
  2. 윤년을 판별하는 프로그램을 작성하세요. (윤년 : 4로 나누어 떨어지고, 100으로 나누어 떨어지지 않거나 400으로 나누어 떨어지는 해)
  3. 세 개의 정수를 입력받아 가장 큰 수를 출력하는 프로그램을 작성하세요.
  4. 간단한 계산기 프로그램을 작성하세요. 두 수와 연산자+, -, *, /를 입력받아 결과를 출력하세요.
  5. 학생의 점수를 입력받아 학점(A, B, C, D, F)을 출력하는 프로그램을 작성하세요.
  • A : 90-100
  • B : 80-89
  • C : 70-79
  • D : 60-69
  • F : 0-59

 참고자료