Topic 4: 중첩 조건문과 삼항 연산자 🎯
🎯 학습 목표
- 중첩 조건문의 구조와 활용법을 이해할 수 있다
- 삼항 연산자의 문법과 사용법을 익힐 수 있다
- 복잡한 조건 로직을 효율적으로 구현할 수 있다
🔄 중첩 조건문
조건문 안에 또 다른 조건문을 넣는 것을 중첩 조건문이라고 합니다.
기본 구조
if (외부조건) {
if (내부조건1) {
// 외부조건 true && 내부조건1 true일 때 실행
} else if (내부조건2) {
// 외부조건 true && 내부조건2 true일 때 실행
} else {
// 외부조건 true && 내부조건들이 모두 false일 때 실행
}
} else {
// 외부조건이 false일 때 실행
}
실전 예제 - 나이에 따른 할인
#include <iostream>
using namespace std;
int main() {
int age;
bool isMember;
cout << "나이를 입력하세요: ";
cin >> age;
cout << "회원이신가요? (1: 예, 0: 아니오): ";
cin >> isMember;
cout << "\n=== 할인 정보 ===" << endl;
if (age < 14) {
cout << "🎈 어린이 할인: 50%" << endl;
if (isMember) {
cout << "🎁 회원 추가 할인: 10%" << endl;
cout << "총 할인율: 60%" << endl;
}
} else if (age >= 65) {
cout << "👴 경로 할인: 30%" << endl;
if (isMember) {
cout << "🎁 회원 추가 할인: 10%" << endl;
cout << "총 할인율: 40%" << endl;
}
} else {
cout << "👥 일반 요금" << endl;
if (isMember) {
cout << "🎁 회원 할인: 10%" << endl;
}
}
return 0;
}
❓ 삼항 연산자 (Ternary Operator)
간단한 조건문을 한 줄로 표현할 수 있는 연산자입니다.
기본 문법
조건 ? 참일때_값 : 거짓일때_값
기본 사용 예제
#include <iostream>
using namespace std;
int main() {
int age = 20;
// 일반적인 if-else
string status;
if (age >= 18) {
status = "성인";
} else {
status = "미성년자";
}
// 삼항 연산자로 같은 표현
string status2 = (age >= 18) ? "성인" : "미성년자";
cout << "상태: " << status2 << endl;
// 숫자 비교
int a = 10, b = 20;
int max = (a > b) ? a : b; // 더 큰 수 선택
cout << "더 큰 수: " << max << endl;
return 0;
}
삼항 연산자 활용 예제
#include <iostream>
using namespace std;
int main() {
int score = 85;
// 간단한 삼항 연산자 활용
string result = (score >= 60) ? "합격" : "불합격";
cout << "결과: " << result << endl;
// 다른 예제
int temperature = 25;
string weather = (temperature > 30) ? "더움" :
(temperature < 10) ? "춥움" : "시원함";
cout << "날씨: " << weather << endl;
return 0;
}
🎮 실전 예제 - 간단한 점수 판정
#include <iostream>
using namespace std;
int main() {
int score;
int bonusPoints;
cout << "기본 점수를 입력하세요 (0-100): ";
cin >> score;
cout << "보너스 점수를 입력하세요 (0-10): ";
cin >> bonusPoints;
int totalScore = score + bonusPoints;
cout << "\n=== 점수 판정 ===" << endl;
cout << "총점: " << totalScore << endl;
// 중첩 조건문 예제
if (totalScore >= 90) {
cout << "학점: A" << endl;
if (totalScore >= 95) {
cout << "특별 우수상 대상자!" << endl;
}
} else if (totalScore >= 80) {
cout << "학점: B" << endl;
} else if (totalScore >= 70) {
cout << "학점: C" << endl;
} else if (totalScore >= 60) {
cout << "학점: D" << endl;
} else {
cout << "학점: F" << endl;
cout << "다음 학기에 다시 도전하세요!" << endl;
}
// 삼항 연산자로 간단한 판정
string result = (totalScore >= 60) ? "통과" : "재수강";
cout << "\n결과: " << result << endl;
return 0;
}
💡 활용 팁
1. 언제 삼항 연산자를 사용할까?
적합한 경우:
- ✅ 간단한 값 선택 (
max = (a > b) ? a : b
) - ✅ 조건부 출력 (
cout << (pass ? "합격" : "불합격")
)
피해야 하는 경우:
- ❌ 복잡한 로직이 필요할 때
- ❌ 가독성이 떨어질 때
- ❌ 여러 줄의 코드가 필요할 때
2. 중첩 조건문 작성 팁
// 좋은 예: 명확한 구조
if (로그인성공) {
if (관리자권한) {
if (시스템점검시간_아님) {
// 관리자 기능 실행
}
} else {
// 일반 사용자 기능
}
} else {
// 로그인 실패 처리
}
// 개선 예: 조기 반환으로 중첩 줄이기
if (!로그인성공) {
// 로그인 실패 처리
return;
}
if (!관리자권한) {
// 일반 사용자 기능
return;
}
if (시스템점검시간) {
// 점검 중 메시지
return;
}
// 관리자 기능 실행
🎯 도전 과제
과제 1: 간단한 등급 계산기
점수를 입력받아 등급을 출력하는 프로그램을 작성하세요.
- 90점 이상: A
- 80점 이상: B
- 70점 이상: C
- 60점 이상: D
- 60점 미만: F
- 삼항 연산자를 사용하여 합격/불합격도 표시
힌트 보기
int score;
cin >> score;
char grade;
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
}
// ... 계속
string result = (score >= 60) ? "합격" : "불합격";
과제 2: 온도에 따른 옵바간 지표
온도를 입력받아 옵바간 지표를 알려주는 프로그램을 작성하세요.
- 30도 이상: “더위 - 반팔 추천”
- 20~29도: “따뜻함 - 긴팔 추천”
- 10~19도: “선선함 - 가디건 추천”
- 10도 미만: “춥움 - 패딩 추천”
- 중첩 조건문과 삼항 연산자를 활용
🔑 중첩 조건문 사용 팁
1. 적절한 수준 유지하기
// ❌ 너무 많은 중첩은 피하세요
if (condition1) {
if (condition2) {
if (condition3) {
// 3단계 이상은 복잡해집니다
}
}
}
// ✅ 2단계 정도가 적당합니다
if (condition1) {
if (condition2) {
// 적절한 수준
}
}
3. 삼항 연산자 활용 시기
// ✅ 단순 값 할당
string result = (score >= 60) ? "합격" : "불합격";
// ✅ 함수 인자로 사용
setColor(isDarkMode ? "#000000" : "#FFFFFF");
// ❌ 복잡한 로직 - if문 사용이 더 좋음
result = (a > b) ? (c > d ? e : f) : (g > h ? i : j); // 혼란스러움!
📝 핵심 정리
- 중첩 조건문: 조건문 안에 조건문을 사용하여 복잡한 로직 구현
- 삼항 연산자:
조건 ? 참_값 : 거짓_값
형식의 간단한 조건 표현 - 가독성: 너무 깊은 중첩은 피하고, 복잡한 삼항 연산자는 if문으로 대체
- Early Return: 예외 상황을 먼저 처리하여 중첩 깊이 감소
- 성능: 가장 가능성 높은 조건을 먼저 검사하여 성능 향상
축하합니다! Unit 3 (제어문)의 모든 토픽을 완료했습니다. 다음 Unit 4에서는 반복문에 대해 학습하게 됩니다!
Last updated on