조건문 (if, else if, else)
조건문 개요
조건문은 프로그램의 흐름을 제어하는 핵심적인 구조입니다. 특정 조건에 따라 다른 코드를 실행하고 싶을 때 사용합니다.
C++에서는 if
, else if
, else
키워드를 사용하여 조건문을 구성합니다.
if 문
기본 구조
if (조건) {
// 조건이 참일 때 실행되는 코드
}
조건은 불리언 표현식이어야 합니다. 즉, 결과가 true 또는 false여야 합니다.
#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 {
// 조건이 거짓일 때 실행되는 코드
}
#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 {
// 모든 조건이 거짓일 때 실행되는 코드
}
여러 개의 조건을 순차적으로 검사할 때 사용합니다.
#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. 부동소수점 비교 : 부동소수점 숫자를 직접 비교할 때는 주의가 필요합니다. 작은 오차로 인해 예상치 못한 결과가 나올 수 있습니다.
연습 문제
- 사용자로부터 정수를 입력받아 양수, 음수, 0인지 판별하는 프로그램을 작성하세요.
- 윤년을 판별하는 프로그램을 작성하세요. (윤년 : 4로 나누어 떨어지고, 100으로 나누어 떨어지지 않거나 400으로 나누어 떨어지는 해)
- 세 개의 정수를 입력받아 가장 큰 수를 출력하는 프로그램을 작성하세요.
- 간단한 계산기 프로그램을 작성하세요. 두 수와 연산자
+
,-
,*
,/
를 입력받아 결과를 출력하세요. - 학생의 점수를 입력받아 학점(A, B, C, D, F)을 출력하는 프로그램을 작성하세요.
- A : 90-100
- B : 80-89
- C : 70-79
- D : 60-69
- F : 0-59
참고자료
- C++ 공식 문서의 조건문 섹션 : C++ if statements
- C++ 17의
if
문 초기화 구문 : If statement with initializer - C++ Core Guidelines의 조건문 관련 규칙 : ES.78 : Always initialize an object
- Effective C++ : 항목 3 "가능한 한 항상 const를 사용하라" - Scott Meyers