C++ 초급 - 3. 제어문 (1 - 조건문 (Conditional Statements))
2025. 2. 12. 12:28ㆍ프로그래밍 언어/C++
3. 제어문 (Control Statements)
제어문은 프로그램의 흐름을 조정하는 역할을 하며,
조건에 따라 실행 경로를 변경하거나 특정 코드를 반복적으로 실행하는 데 사용된다.
📌 3.1 조건문 (Conditional Statements)
조건문(Conditional Statements)은 주어진 조건을 평가하여 코드 실행을 결정하는 역할을 한다.
즉, 특정 조건이 참(true)이면 실행하고, 거짓(false)이면 실행하지 않는 구조이다.
C++에서 대표적인 조건문은 다음과 같다.
- if-else 문
- switch-case 문
(1) if-else 문
if-else 문은 특정 조건이 true일 때 코드를 실행하고, false일 때 다른 코드를 실행하도록 제어한다.
📌 기본 구조
if (조건) {
// 조건이 true일 때 실행되는 코드
} else {
// 조건이 false일 때 실행되는 코드
}
📌 예제 1: 기본적인 if-else 사용
#include <iostream>
int main() {
int age;
std::cout << "나이를 입력하세요: ";
std::cin >> age;
if (age >= 18) {
std::cout << "성인입니다." << std::endl;
} else {
std::cout << "미성년자입니다." << std::endl;
}
return 0;
}
🔹 입력 예시
나이를 입력하세요: 20
🔹 출력 결과
성인입니다.
📌 else if를 사용하여 여러 개의 조건 검사
else if를 사용하면 여러 개의 조건을 순차적으로 검사할 수 있다.
#include <iostream>
int main() {
int score;
std::cout << "점수를 입력하세요: ";
std::cin >> score;
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 {
std::cout << "F 학점입니다." << std::endl;
}
return 0;
}
🔹 입력 예시
점수를 입력하세요: 85
🔹 출력 결과
B 학점입니다.
💡 설명
- 조건을 위에서부터 순서대로 검사하며 처음으로 true인 조건이 실행된다.
- 한 번 실행된 이후에는 아래 조건을 더 이상 평가하지 않는다.
📌 중첩 if 문 (Nested if)
if 문 안에 또 다른 if 문을 작성하여 복잡한 조건을 처리할 수도 있다.
#include <iostream>
int main() {
int age;
bool hasID;
std::cout << "나이를 입력하세요: ";
std::cin >> age;
std::cout << "신분증이 있습니까? (1: 예, 0: 아니오): ";
std::cin >> hasID;
if (age >= 18) {
if (hasID) {
std::cout << "입장 가능합니다." << std::endl;
} else {
std::cout << "신분증이 필요합니다." << std::endl;
}
} else {
std::cout << "미성년자는 입장할 수 없습니다." << std::endl;
}
return 0;
}
🔹 입력 예시
나이를 입력하세요: 20
신분증이 있습니까? (1: 예, 0: 아니오): 0
🔹 출력 결과
신분증이 필요합니다.
💡 설명
- if 문 안에 또 다른 if 문을 포함하여 두 가지 조건을 동시에 검사할 수 있다.
(2) switch-case 문
switch-case 문은 여러 개의 값과 변수를 비교할 때 사용된다.
if-else 문과 달리, switch 문은 정확한 값과 비교할 때 유용하다.
📌 기본 구조
switch (변수) {
case 값1:
// 값1일 때 실행할 코드
break;
case 값2:
// 값2일 때 실행할 코드
break;
default:
// 모든 case가 만족하지 않을 때 실행할 코드
}
💡 주의
- case 뒤에는 변수 대신 상수(숫자, 문자)만 사용할 수 있다.
- break;를 사용하지 않으면 다음 case 문까지 실행됨(의도하지 않은 결과 발생 가능).
📌 예제 1: switch-case를 이용한 메뉴 선택
#include <iostream>
int main() {
int choice;
std::cout << "메뉴를 선택하세요:\n";
std::cout << "1. 피자\n";
std::cout << "2. 햄버거\n";
std::cout << "3. 치킨\n";
std::cin >> choice;
switch (choice) {
case 1:
std::cout << "피자를 선택하셨습니다." << std::endl;
break;
case 2:
std::cout << "햄버거를 선택하셨습니다." << std::endl;
break;
case 3:
std::cout << "치킨을 선택하셨습니다." << std::endl;
break;
default:
std::cout << "올바른 번호를 입력하세요." << std::endl;
}
return 0;
}
🔹 입력 예시
2
🔹 출력 결과
햄버거를 선택하셨습니다.
📌 예제 2: switch-case를 이용한 문자 비교
#include <iostream>
int main() {
char grade;
std::cout << "학점(A, B, C, D, F)을 입력하세요: ";
std::cin >> grade;
switch (grade) {
case 'A':
std::cout << "훌륭합니다!" << std::endl;
break;
case 'B':
std::cout << "좋은 성적입니다." << std::endl;
break;
case 'C':
std::cout << "괜찮은 성적입니다." << std::endl;
break;
case 'D':
std::cout << "조금 더 노력하세요." << std::endl;
break;
case 'F':
std::cout << "재수강이 필요합니다." << std::endl;
break;
default:
std::cout << "올바른 학점을 입력하세요." << std::endl;
}
return 0;
}
🔹 입력 예시
A
🔹 출력 결과
훌륭합니다!
💡 설명
- switch-case 문에서 문자(char)도 비교할 수 있다.
- default를 사용하면 어떤 case에도 해당하지 않을 때 실행되는 기본 동작을 지정할 수 있다.
📌 if-else vs switch-case 비교
구분 | if-else 문 | switch-case 문 |
사용 방식 | 논리 연산을 사용한 조건 검사 | 정확한 값과 변수 비교 |
조건 | score >= 90, age < 18 | case 1:, case 'A': |
사용 예시 | 범위 검사 (나이, 점수 등) | 메뉴 선택, 키 입력 검사 |
가독성 | 복잡한 조건에서 불리함 | 값이 많을 때 가독성 높음 |
💡 if-else는 논리식을 비교할 때 적합하고, switch-case는 여러 값을 비교할 때 더 적합하다.
정리
조건문 | 설명 | 사용 예제 |
if-else | 특정 조건이 true일 때 실행 | if (score >= 90) {...} |
else if | 여러 개의 조건 검사 | else if (score >= 80) {...} |
중첩 if | 조건 안에 또 다른 조건 검사 | if (age >= 18) { if (id) {...} } |
switch-case | 여러 개의 값과 비교 | switch (choice) {...} |
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 초급 - 3. 제어문 (3 - if constexpr (C++17, Compile-Time If Statement)) (0) | 2025.02.12 |
---|---|
C++ 초급 - 3. 제어문 (2 - 반복문 (Loops)) (0) | 2025.02.12 |
C++ 초급 - 2. 기본 문법 (6 - 형 변환 (Type Conversion)) (0) | 2025.02.12 |
C++ 초급 - 2. 기본 문법 (5 - 연산자 (Operators)) (0) | 2025.02.12 |
C++ 초급 - 2. 기본 문법 (4 - 주석 (Comments)) (0) | 2025.02.12 |