ch06 / exam06-05.php

PHP 조건 순서 논리 오류(Logical Bug) 시각화

조건식 순서가 잘못 작성되어 60점 이상의 모든 점수가 "양"으로 판정되는 버그 분석

🐛
논리적 오류 (Logical Bug) 발생 프로그램:
가장 작은 기준인 $score >= 60을 첫 번째 조건으로 두어, 95점이나 85점도 60점 이상이므로 첫 if문에서 참(True)이 되어 즉시 "양"이 출력되고 종료됩니다! 하위 조건(70, 80, 90)은 절대 실행될 수 없는 데드 코드(Dead Code)입니다.
🎲 점수 변수 $score 설정 (rand(0, 100))
버그 체감 테스트:
0점 100점 95점
📄 exam06-05.php (Line 8 ~ 24)
⚠️ 순서 역전 오류 코드
1-7 <!DOCTYPE html> <html> ... <body>
8<?php
9$score = rand(0, 100);
10
11echo "점수 : {$score}점, ";
12
13if ($score >= 60) {⚠️ 모든 60점 이상 포획 트랩
14echo "평점 : 양";
15} else if ($score >= 70) {🚫 도달 불가(Dead Code)
16echo "평점 : 미";
17} else if ($score >= 80) {🚫 도달 불가(Dead Code)
18echo "평점 : 우";
19} else if ($score >= 90) {🚫 도달 불가(Dead Code)
20echo "평점 : 수";
21} else {
22echo "평점 : 가";
23}
24?>
25-26</body> </html>
초기 대기 단계별 실행 버튼을 눌러 버그 발생 과정을 추적해보세요.
⚖️ 정상 기대 평점 vs 실제 버그 출력 비교 버그 발생 예정
정상 기대 평점
수
실제 코드 출력 평점
양 (오류)
$score
95
60점 이상 ➔ 양 트랩 포획! -
🖥️ 브라우저 화면 출력 (echo Live Preview)
http://localhost/ch06/exam06-05.php
PHP 출력 대기 중...
🪤 조건 평가 트랩 다이어그램 (Trap Diagram)
🔴 1순위: if ($score ≥ 60) [트랩] 60~100점 전체 흡수 ➔ 양
🚫 2순위: else if ($score ≥ 70) 도달 불가능 (이미 위에서 참)
🚫 3순위: else if ($score ≥ 80) 도달 불가능 (이미 위에서 참)
🚫 4순위: else if ($score ≥ 90) 도달 불가능 (이미 위에서 참)
⚪ 5순위: else 0 ~ 59점만 통과 ➔ 가
속도:

💡 exam06-05.php 교훈: 조건문의 순서가 중요한 이유