원래는 6편을 스위프트 언어 공식문서에 Ternary Conditional Operator 라 소개되어있는 연산자에 대해 쓰려고 했으나

해당 내용에 들어갈 조건문부분을 따로 쓰는게 좋을듯하여 본편은 조건문을 다룬다.

 

조건문은 별 다른게없다 분기문이라고 할 수 있다.

 

1~5편 사이의 예제문을 실행해봤다면 알겠지만

여태 실행은 위에서 아래로 차례차례 한줄한줄 실행이 되었다.

 

그런데 모든일이 그렇듯 순서대로 해결하려하면 일이 제대로 처리되지않는 일이 있다.

이를 조건문으로 해당 일들을 분기하여 처리한다.

 

 

조건문

 

1. if 

우선 다룰 if문은 단순하다

네이버사전에서 if에 대해 검색하면 " 만약 ~ 한다면 " 이라는 뜻으로 나온다.

예시도 If you see him ~ 그를 만난다면 으로 예시를 들고있다

 

스위프트에서의 if의 취급도 동일하다

단 if 뒤에 붙는녀석은 이전의 비교연산자와 같은 Bool형태의 값이 붙어서 사용된다.

 

형식-

if 조건  {

  실행문

}

 

이전편에서 나온 비교연산자를 이용해 if문의 예시를 들자면 아래와같다.

 

예시1)

    if 41 {

      print("1번 출력")

    }

    

    print("2번 출력")

결과:

2번 출력

 

해당 소스는 프린트 출력이

2번 출력 

으로 나오게 될것인데

if 4 < 1 의 대괄호 안에 들어가 있는 애는 출력이 되지않는다.

if다음에 나오는 비교연산 4 < 1 이 거짓이기에 해당 if문 안의 내용은 실행되지 않는다.

 

이와 같이 어떠한 조건에 따라 실행 유무를 가리는게 if문 이고 조건문이다.

 

예시2)

    let a = 30

    let b = 40

    

    if a < b {

      print("1번 출력")

    }

    

    print("2번 출력")

 

결과:

1 출력

2 출력

 

 

2. if - else if - else

1번에서 if문은 if뒤에 나오는 조건에 따라 실행 여부를 가렸다.

조건에 따라 실행여부가 두가지 이상일때는 계속 if문만 쓰기에는 힘들다 

 

if문 만을 사용해 두 수를 비교했을때의 경우 아래와 같이 할 수 있다.

 

예시3)

    let a = 30

    let b = 30

    

    if a < b {

      print("1")

    }

    if a > b {

      print("2")

    }

    if a == b {

      print("3")

    }

결과:

3

 

이를 줄이려면 else 와 elseif 를 사용하면된다.

 

 

형식)

if 조건1 {

   실행문1

} else if 조건2 {

  실행문2

} else if 조건3 {

  실행문3

} else {

  실행문4

}

 

 

else if는 연속되게 이전 if 조건이 거짓일경우 확인해보는 것이고

else 는 위의 if들이 전부 거짓일때 실행되는 경우이다

위의 소스를 아래와같이 변경할 수 있다.

 

예시4)

    let a = 30

    let b = 30

    

    if a < b {

      print("1")

    } else if a > b {

      print("2")

    } else {

      print("3")

    }

결과:

3

 

위 예시4는 예시3과 비교했을때 라인수에 대한 이득은 없다.

코드로만 보면 단순히 조건문이 연결되어 가독성이 조금 좋아질뿐이다.

하지만 실제로 돌려보면 예시4에선 저 조건문 총 세번 결과를 보지만

만약 첫번째 조건문이 참일경우 뒤의 연결된 조건은 보지않는다.

실행하는쪽에서 연산을 아끼는 이득이된다.

 

3. swich 문

switch문은 조건문 이라고 부르기가 좀 이상했는데 일단 이곳에 포함시켰다.

스위치문은 조건이 되는 어느 한 값이 어떠한 값을 가질때 이를 실행해라와 같은 느낌이다

예를 들어

let a = "바나나" 라는 a가 있을때

이 a가 바나나가 저장되어 있을 수 잇고.

사과, 또는 멜론 등의 여러가지가 있을 수 있을때 해당 내역을 적는 조건문이다.

 

형식)

 

switch 대상 {

  case 대상과 일치하는지 비교하는 값1: 

    실행문1

  case 대상과 일치하는지 비교하는 값2:

    실행문2

  case 대상과 일치하는지 비교하는 값3:

    실행문3

  default: //위의 모든 case들이 대상과 다를경우 실행

    실행문4

}

 

예시 5)

    var a = "banana"

    switch a {

      case "banana" : print("banana")

      case "apple" : print("apple")

      case "melon" : print("melon")

      case "lemon" : print("lemon")

      case "peach" : print("peach")

      default: print("다른 종류이다.")

    }

결과:

banana

 

이 스위치문은 enum타입의 변수일때 정말 편함을 느낄 수 있는 좋은 녀석인데 이전 3편의 데이터형에서 깜빡한건지 enum에 대한걸 다루지 않았다.

나중에 다루게될것같다. 

 

 

 

 

 

반복문 

반복문은 말그대로 반복하는데 사용한다.

여러 가지 계산에대해 반복적으로 해야하는 사항이 있을때 사용한다.

 

1. while

대상 조건이 거짓이 될때까지 반복하고자 할때 사용한다.

 

형식)

while 조건 { //조건은 시작할땐 참이여야 한다. 참이 아닐경우 시작을 안하고 넘어간다.

  반복할 실행문

  조건을 변화시킬 실행문

} // while문 내부 블록의 조건을 변화시킬 실행문은 없어도 된다. 단 블록 외부에서도 조건에 대한 변화가 없다면 무한루프에 빠지게된다.

 

간략히 어느한 값을 30번정도 반복시키는 while문의 예시를 들어본다.

 

예시6)

    var count = 0

    

    while count < 5 {

      count += 1

    }

    print(count)

결과: 

30

 

count에 계속 +1 식하면서 count값이 30보다 작은지에 대해 검사한다.

해당 루프문은 5보다 작으면 실행하라 인데 실 결과는 30인 이유는

순서가

1. count가 5보다 작은가

2. count에 1 더하기

이런순으로 하기에 그렇다.

 

 

2. repeat - while

위에 while은 순서가 count의 조건을 먼저 확인했는데

반대로 실행먼저하고 조건을 보고싶을 경우도 있다

이럴땐 repeat while문을 쓰면된다.

 

형식)

repeat {

실행문

} while 조건

 

 

위와 결과는 같으나 실행순서만 다른 예제를 들면

 

예시7)

    var count = 0

    

    repeat {

      count += 1

    } while count < 5

    print(count)

 

결과: 5

 

예시6번을 뒤집어본 소스이다

실제로 일단 count값을 먼저 증가시키고 

그후에 다시 실행시킬것인가에 대해 검사를한다.

 

 

3. for문

for문은 주로 인덱스에 해당하는 변수와 같이 사용할때 쓴다.

위에서 count를 사용한것과 비슷한데

while은 사실 저렇게 단순히 +1할때 쓰지는 않는다. for문이 이러한 순서대로 증가하는 값이 필요할때 사용한다.

 

형식)

for 변수1 in 변수1에 담을것 {

  실행문

}

 

예를 들어

1 부터 10까지의 합을 구하려고한다 그러면 아래와 같다

 

예시8)

    var sum = 0

    for i in 1 ... 10 {

      sum += i

    }

    print(sum)

결과:

55

 

sum에 1부터 10까지 변하는 i의 값을 모조리 더하는 반복문이다.

 

1 ... 10 은 Range 타입의 변수를 바로 정의하면서 사용하는것이다.

이 부분은 배열이 들어가도 좋고, 실제로 배열을 넣어서 많이 사용한다.

배열을 넣어서 사용하자면

 

예시9)

    let exArray = ["banana", "apple", "melon","lemon" ,"peach"]

    for i in exArray {

      print(i)

    }

결과:

banana
apple
melon
lemon
peach

 

와 같이 된다.

오른쪽에 있는 값이 여러가지를 가지고있는 녀석을 왼쪽의 변수에 하나씩 차례대로 넣어서 활용하는것이다.

 

Range에 대해서는 나중에 좀더 다뤄볼 수도 있고 없을 수도 있으니 만약 이글로 swift를 공부중이라면 따로 찾아보는것을 권한다.

 

 

 

+ Recent posts