본문 바로가기

프로그래밍/Swift

[Swift] 조건문과 반복문

728x90
반응형

조건문에는 ifswitch가 있고, 반복문에는 for-in, while, repeat-while이 있다.

 

if 예시

let myAge = 20
if myAge > 0 && myAge < 20 {
    print("미성년자입니다.")
} else if myAge >= 20 {
    print("성인입니다.")
} else {
    print("올바른 나이가 아닙니다.")
}

// "성인입니다." 출력

myAge가 0보다 크고 19인 경우 위의 if문을 통해 "성인입니다."를 출력할 수 있고 19와 같거나 큰 경우엔 "미성년자입니다."가 출력될 것이다. 만약 0이거나 음수인 경우라면 "올바른 나이가 아닙니다."를 출력한다.

 

switch 예시

let color = "회색"
switch color {
case "빨간색", "초록색", "파랑색":
    print("빛의 삼원색입니다.")
    
case "검은색", "흰색":
    print("흑백입니다.")
    
case let x where x.contains("색"):
    print(color + "입니다.")
    
default:
    print("기타")
}

// "회색입니다." 출력

switch문을 사용하면 다양한 값을 비교처리할 수 있다. 또한 case에 꼭 동일한 값이 아닌 여러가지 조건을 입력할 수 있다. 그 조건이 참일 경우 해당 case의 구문을 실행한다. 해당 case의 구문이 실행 완료되면 switch문에서 빠져나온다.

 

 

for-in 예시

var total = 0
for i in 0..<10 {
    total += i
}
print(total)
// "44” 출력


total = 0
for i in 0...10 {
    total += i
}
print(total)
// "55” 출력

 

0..<10은 0부터 10보다 작은 수 까지 반복한다. 0...10은 0부터 10까지 반복한다.

 

let colorDict = [
    "빛의삼원색": ["빨간색", "초록색", "파랑색"],
    "흑백": ["검은색", "흰색"],
    "기타색": ["보라색"]
]

for (kind, colors) in colorDict {
    for color in colors {
        if color == "빨간색" {
            print("\(color)은 \(kind)입니다.")
        }
    }
}

// "빨간색은 빛의삼원색입니다. 출력

딕셔너리는 for-in에서 각 딕셔너리의 키-값(kind-colors) 쌍을 반환한다. 이때 딕셔너리는 순서가 지정되지 않은 컬렉션이므로 무작위 값을 제공한다. 하지만 딕셔너리의 value인 colors는 배열이므로 for-in에서 순서대로 값을 반환하게 된다.

 

 

while repeat-while 예시

var n = 2
while n < 100 {
    n *= 2
}
print(n)
// "128" 출력

var m = 2
repeat {
    m *= 2
} while m < 100
print(m)
// "128” 출력

while문은 condition을 먼저 확인 후 참인 경우에 구문을 실행하고 거짓이면 종료된다. repeat-while의 경우엔 repeat 구문을 먼저 실행한 후 while의 condition을 확인한다.

 

var n = 2
while n < 2 {
    n *= 2 // 실행 안됨
}
print(n)
// "2" 출력

var m = 2
repeat {
    m *= 2 // 먼저 실행됨
} while m < 2
print(m)
// "4” 출력

 

 

 

참고: Apple Inc. “The Swift Programming Language (Swift 5.3)”. Apple Books. https://books.apple.com/hk/book/the-swift-programming-language-swift-5-4/id881256329?l=en

반응형