본문 바로가기
스파르타코딩 클럽/사전 캠프

6. 스파르타 코딩클럽 [사전캠프 - 조건문 이해하기]

by UDDT 2025. 2. 5.

 

조건문

  1. 조건문 비교하기

구 분 특 징 코 드
if - else문 조건이 하나이고, 그 조건이 참인지 거짓인지에 따라
두 가지 경우로 나뉘는 상황에 사용
let temperature = 30
if temperature > 25 {
       print("더운 날씨입니다.")
} else {
       print("시원한 날씨입니다.")
else - if문 여러 개의 조건을 우선순위에 따라
순차적으로 검사할 때 사용
(추가적인 조건을 확인할 때)
let score = 85

if score >= 90 {
    print("A 등급입니다!")
} else if score >= 80 {
    print("B 등급입니다!")
} else {
    print("더 노력하세요!")
}
switch문 여러 개의 고정된 값을 검사할 때 사용
(범위 값을 지원하기 때문에 유용함)
let day = "화요일"

switch day {
case "월요일":
    print("한 주의 시작입니다!")
case "금요일":
    print("주말이 다가오고 있어요!")
case "토요일", "일요일":
    print("주말입니다! 푹 쉬세요!")
default:
    print("일상적인 하루입니다.")
}

 

조건문 사용 예시

  1. if-else문 

/*
나이가 19세 이상이면 "청소년 관람 불가 영화를 볼 수 있습니다." 출력
나이가 13세 이상이면 "일반 영화는 볼 수 있지만 청소년 관람 불가 영화는 볼 수 없습니다." 출력
그 외에는 "보호자 동반이 필요합니다." 출력
*/

let old = 20
print("나이 : \(old)")

if old >= 19 {
    print("청소년 관람 불가 영화를 볼 수 없습니다.")
} else if old >= 13 {
    print("일반 영화는 볼 수 있지만, 청소년 관람 불가 영화는 볼 수 없습니다.")
} else {
    print("보호자 동반이 필요합니다.")
}

 

  2. else - if문

/*
90점 이상 → "A 학점"
80점 이상 → "B 학점"
70점 이상 → "C 학점"
60점 이상 → "D 학점"
60점 미만 → "F 학점"
*/

let score = 85
print("점수: \(score)")

let score = 85

if score >= 90 {
    print("A 학점")
} else if score >= 80 {
    print("B 학점")
} else if score >= 70 {
    print("C 학점")
} else if score >= 60 {
    print("D 학점")
} else {
    print("F 학점")
}

 

  3. switch문

/*
90점 이상 → "A 학점"
80점 이상 → "B 학점"
70점 이상 → "C 학점"
60점 이상 → "D 학점"
60점 미만 → "F 학점"
*/

let score = 85
print("점수: \(score)")

switch score {
case >= 90:
	print("A 학점")
case >= 80:
	print("B 학점")
case >= 70:
	print("C 학점")
case >= 60:
	print("D 학점")
default:
	print("F 학점)
}

// 오류 발생
//switch문에서는 >=과 같은 조건 연산자를 사용하지 않음.

오류해결 : Switch문에서는 범위 연산자를 쓸 수 없다.

switch문으로 코드 작성을 했는데, 컴파일 오류가 났다.

'>=' is not a prefix unary operator (접두에 붙일 수 있는 단항 연산자가 아님)
/*
90점 이상 → "A 학점"
80점 이상 → "B 학점"
70점 이상 → "C 학점"
60점 이상 → "D 학점"
60점 미만 → "F 학점"
*/

let score = 85
print("점수: \(score)")

switch score {
case >= 90:
	print("A 학점")
case >= 80:
	print("B 학점")
case >= 70:
	print("C 학점")
case >= 60:
	print("D 학점")
default:
	print("F 학점)
}
//switch문에서는 >=과 같은 조건 연산자를 사용하지 않음.

 

생각해보니 switch문에서는 조건을 비교할 때 범위연산자(...)를 사용했다.

범위연산자(...)를 사용해 코드를 수정한다면, 아래와 같다.

let score = 85
print("점수: \(score)")

switch score {
case 90...:
    print("A 학점")
case 80 ..< 90:
    print("B 학점")
case 70 ..< 80:
    print("C 학점")
case 60 ..< 70:
    print("D 학점")
default:
    print("F 학점")
}

 

+ 아래처럼 쓰는 것은 어떤 문제가 있을까?

switch score {
case 90...:
    print("A 학점")
case 80 ... 90:
    print("B 학점")
case 70 ... 80:
    print("C 학점")
case 60 ... 70:
    print("D 학점")
default:
    print("F 학점")

}

 

 먼저 90...은 90 이상의 모든 숫자를 말하기 때문에 score의 범위보다 지나치게 크다. 

따라서 굳이 수정하자면 90 ... 100 으로 범위를 지정해주는 것이 좋다.

 

 또한 80 ... 90으로 작성하면 80~90의 숫자를 의미하는데,

여기서 숫자 90이 중복되게 된다. 이렇게 되면 불필요한 숫자를 2번 확인하는 것이므로

80 ..< 90 : 으로 범위를 명확히 지정해주는 것이 좋다.

 

  아래와 같이 코드를 작성하면 가독성을 더 높일 수 있다.

let score = 85
print("점수: \(score)")

switch score {
case 90 ... 100:
    print("A 학점")
case 80 ..< 90:
    print("B 학점")
case 70 ..< 80:
    print("C 학점")
case 60 ..< 70:
    print("D 학점")
default:
    print("F 학점")
}

 

최근댓글

최근글

skin by © 2024 ttuttak