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

+ Recent posts