Skip to Content
💻 코리아IT아카데미 신촌 - 프로그래밍 학습 자료
C++ 프로그래밍Unit 3: 제어문Topic 4: 중첩 조건문과 삼항 연산자

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