control flow
제어 흐름(control flow)이란 코드의 진행 순서를 바꾸는 것이다. 크게 조건문(conditional)과 반복문(loop)으로 나뉘는데, 오늘은 조건문에 대해 적어본다.
조건문 - if
if문에는 크게 3가지 형태가 있다.
if [조건식] {
[조건이 참일 때 실행 구문]
}
var a:Int = 5
if a >= 5 {
a = 10
}
print("a:",a)
조건식이 참이기에 a변수에 10이 대입되어 10이 출력된다. 조건식이 성립하지 않았다면 5가 그대로 출력된다.
if [조건식] {
[조건이 참일 때 실행 구문]
} else {
[조건이 거짓일 때 실행 구문]
}
var a:Int = 5
if a > 6 {
a = 1000
} else {
a = 2000
}
print("a:",a)
이번엔 else를 통하여 조건식이 거짓일 경우 실행할 구문을 따로 지정하였다. 조건식 a > 6은 거짓이므로 a에 2000이 대입되어 2000이 출력되었다.
if [조건식1] {
[조건1이 참일 때 실행 구문]
} else if [조건식2]{
[조건1이 거짓, 조건2가 참일 때 실행 구문]
} else {
[조건1, 조건2가 모두 거짓일 때 실행 구문]
}
let score = 70
if score >= 80 {
print("우수")
} else if score >= 60 {
print("정상")
} else{
print("미달")
}
이번에는 조건식을 두개를 적었다. if문의 조건을 판단 후 거짓일 경우 else-if 문의 조건을 판단하여 참일 경우, 거짓일 경우 실행 할 구문을 적었다.
let score = 50
if score >= 80 {
print("우수")
} else if score >= 60 {
print("정상")
} else if score >= 40{
print("미흡")
} else {
print("탈락")
}
else-if 문은 원하는 만큼 추가할 수 있다. 단, 선행으로 적은 조건이 거짓일 경우에만 다음 조건으로 넘어가 비교를 하게 되니 순서에 유의하며 작성해야 한다.
조건문 - switch
switch문은 대상이 정해진 값과 같은지 비교하여 구문을 실행하는 조건문이다. defualt는 대상이 비교할 값에 모두 해당 하지 않았을시에 실행되는 구문이다.
switch 대상(값) {
case 값1:
실행구문
case 값2:
실행구문
...
default:
실행구문
}
스위프트의 switch구문은 다른 언어와 많이 다른 모습을 보이는데, 기본적으로 break키워드가 생략되어 따로 적을 필요가 없어진다. case를 연속실행하기 위해서는 fallthrough 키워드를 사용한다.
var score = 70
switch score {
case 80:
print("80입니다.")
case 70:
print("70입니다.")
case 40:
print("40입니다.")
default:
print("기본값입니다.")
}
score의 70이라는 값이 case 70:에 해당되어 "70입니다"문장이 출력되었다.
var a = 10
switch a {
case 88:
print("88")
case 10,20,30: //다중 값을 적을 수 있다. 하나라도 해당되면 구문을 실행한다.
print("10,20,30입니다.")
case 70...80: //70이상 80이하 범위 값
print("70...80입니다.")
case 50..<60: //50이상 60미만 범위 값
print("50..<60입니다.")
case 200...: //200이상
print("200...입니다.")
case ...150: //150 이하
print("...150입니다.")
case ..<170: //170미만
print("..<170입니다.")
default:
print("기본값입니다.")
}
스위프트의 switch문은 또 다른 차별점이 있는데, 바로 case문에 다중 값, 범위, 조건절 등 을 추가할 수 있다는 것이다.
let score = 85
let color = "red"
switch color{
case "red" where score % 2 == 0: //score가 짝수이면서, color가 red인 경우
print("red 짝수")
case "red" where score >= 80: //score가 80이상이면서, color가 red인 경우
print("red 우수")
case "blue":
print("blue")
case "green":
print("green")
case "red" where score >= 60: //score가 60이상이면서, color가 red인 경우
print("red 정상")
case "red":
print("red")
default:
print("default")
}
스위프트의 switch에는 where절을 통해 조건을 걸수 있는 것이 큰 특징이다. 단, switch문을 사용할 때 알아 두어야 할 점은 대상이 두 개 이상의 case에 부합하더라도, 먼저 적힌 case의 실행구문만 실행 된다는 점이다.
범위연산자
앞서 나온 범위표현에 대해서 적어본다. 값의 범위를 나타내고자 할 때 사용한다.
연산자 | 부호 | 설명 |
폐쇄 범위 연산자 | A ... B | A이상 B이하 |
반폐쇄 범위 연산자 | A ..< B | A이상 B미만 |
단방향 범위 연산자 | A ... | A이상 |
... A | A이하 | |
..< A | A미만 |
'iOS > TJ' 카테고리의 다른 글
day06_control flow_loop (0) | 2021.05.27 |
---|---|
day05_control flow_loop (0) | 2021.05.25 |
day03_operator, casting (0) | 2021.05.18 |
day02_var (0) | 2021.05.18 |
day01_print() (0) | 2021.05.13 |