[KR-DEV] 다시 시작하는 Swift - 조건문

in #kr-dev7 years ago (edited)

안녕하세요! @geunwoong0624 Decoy입니다.

오늘은 조건문에 대해 알아보도록 하겠습니다!
조건문은 반복문,제어문 과 함께 크게 흐름제어구문으로 거론이 되며
조건문은 이전에 배웠던 반복문과 함께 많이 쓰이는 문법입니다.
오늘도 설명에 눈을 크게 뜨고 잘 익혀두시기 바랍니다
그럼 시작합니다


흐름제어구문 : 프로그램이 실행될때 프로그램의 실행 흐름을 제어 하기 위한 구문

조건문

  • 조건을 설정하고 조건에 맞다면 소스를 실행
If문
    if 조건{
        실행구문
    }
  • 조건을 설정하고 해당 조건이 성립이 되면 if문의 실행구문이 실행됩니다.
    ex) 
    var i = 1 
    if i<2 {
        print(“i가 2보다 작습니다.”)
    }

  • 조건은 결과값이 true 또는 false 둘중 하나로 나타나야 합니다.
    그이유는 if 문은 조건이 참이냐 거짓이냐에 따라서 실행구문을 실행할지 말지를 결정하기 때문입니다.

  • Q) 조건에 항상 참값을 걸면 어떻게 되나요? 또는 항상 거짓값을 걸면 어떻게 되나요?
    A) 당연히 항상 참값을 걸면 실행구문이 항상 실행되고 항상 거짓인 값을 걸면 실행이 반드시 안되겠죠

  • 조건문은 스위프트에서 제일 중요한 부분중 하나라고 생각이 듭니다. 그이유는 사람마다 휴대폰이 다릅니다. 모든사람이 같은 휴대폰을 쓰진 않죠 그렇기 때문에 조건문은 여러유형의 휴대폰에서 작동이 다르게 되는것을 가능하게 해줍니다.

  • if문에는 항상 따라오는 구문이 있습니다. 바로 else구문입니다. else 구문은 if문에서 조건이 맞지 않을 때 실행됩니다.

    ex)
    var i = 1
    if i<2 {
        print(“i가 2보다 작습니다.”)
    }
    else{
        print(“i가 2보다 큽니다.”)
    }
  • 해당 예시에서 만약 i가 2보다 작으면 if구문이 실행되고 i가 2보다 크면 else 구문이 실행됩니다.

  • 물론 else문을 반드시 작성해야 할 의무는 없습니다. 조건이 맞을때만 생각하면 될때는 굳이 else문을 쓰지 않아도 됩니다.

  • 한번에 처리하고 싶은 조건이 많다면 앞서 배운 논리 연산자를 사용하면됩니다. 특정 조건들이 전부 맞아야 할때는 &&(And)를 하나 이상 맞으면 되는것은 ||(Or)을 쓰면 됩니다.

  • 이번에는 여러 경우를 알아보겠습니다.

ex)
    var i = 15
    if i<10{
        print(“i가 10미만 입니다.”)
    }
    else if i<20{
        print(“i가 10이상 20미만 입니다.”)
    }
    else{
        print(“i가 20이상 입니다.”)
    }
  • 위의 예시를 보면 총 3가지로 나누어진 것을 볼 수 있습니다.
    만약 i가 10미만이라면 처음 if문이 실행됩니다. 그러나 i가 10이상 이라면 우선 처음 if문은 넘어가고 다시 조건을 확인합니다. 이때 20미만이라면 두번째 if문이 실행되고 20이상이라면 else문이 실행됩니다.

짚고넘어가기! - "{   }"의 활용

if문과 else 등 “{“와 “}” 로 둘러싸여지는 문법에서 “{“,”}”가 없다면 바로 다음줄 하나만 묶어집니다.
즉 위의 소스는

    var i = 15
    if i<10
        print(“i가 10미만 입니다.”)
    else if i<20
        print(“i가 10이상 20미만 입니다.”)
    else
        print(“i가 20이상 입니다.”)

로 작성될 수 있습니다. 그러면 혹시 무언가가 보이시나요?

몇몇분들은 발견하셨을텐데 사실 if~else if~ else 구문은 없습니다.(두둥)
존재하는것은 if~else 구문이죠 처음 if에서 조건이 맞지 않으면else구문으로 가는데 그 안에 다시 if문이 있는 형태 입니다.
즉, 위의 소스는

    var i = 15
    if i<10{
        print(“i가 10미만 입니다.”)
    }
    else{ 
        if i<20{
            print(“i가 10이상 20미만 입니다.”)
        }
        else{
            print(“i가 20이상 입니다.”)
        }
    }

로 작성된 것입니다. 이때 처음 else의 “{“와”}”를 없애면 처음 소스처럼 되는것이죠.
-> 물론 이것이 어렵다면 if문을 그냥 if ~ else if ~else로 생각하셔도 무방합니다.

Switch 문
    switch 비교대상 {
        case 기준1 :
            기준1에 부합될때 실행구문
        case 기준2 :
            기준2에 부합될때 실행구문
        default:
            기준1,기준2에 부합되지 않을때 실행구문
    }
  • 비교대상을 기준을 가지고 나누어서 프로그램을 실행하는 조건문입니다.
 ex)
    var i = 1
    switch i {
        case 1 :
            print(“1입니다.”)
        case 2 :
            print(“2입니다.”)
        case 3 :
            print(“3입니다.”)
        default :
            print(“1,2,3 외의 숫자입니다.”)
   }

  • 위의 소스에서 비교대상은 i 입니다. 그리고 기준은 i의 값이 1인지,2인지,3인지 그외의 숫자인지 입니다. 해당기준에 부합되면 해당 실행구문이 실행되고 조건문은 종료됩니다.

  • 각 case 사이는 " { "," } "와 비슷하게 엮여있습니다. 즉, " { "," } "를 사용하지 않고도 다양한 구문을 작성 할 수 있습니다.

  • 다른 기준의 같은 내용일경우 " , "를 통해 하나로 묶을수 있습니다.

ex)
   var i = 1
   switch i {
       case 1,2 :
           print("1 또는 2입니다.")
      default :
           print(“1,2 외의 숫자입니다.”)
   }
  • 또한 기준의 경우 범위 연산자를 통해서도 가능합니다.
 ex)
    var i = 1
    switch i {
        case 1...10 :
            print("1이상 10이하 입니다.")
       default :
            print(“1미만 10초과 입니다.”)
    }
주의하자!!!
  • 각 case의 경우 해당 내용이 비어있으면 안됩니다. 비어있을 경우 에러로 판별합니다.

  • Switch의 경우 어떤 case 중 하나이상은 반드시 만족되어야 합니다. 비교대상이 기준들중 어디에도 속하지 않을경우 에러로 판별합니다. (포함되는지 안되는지 모를땐 default 를 사용하자!)

Guard 문
using) guard 조건식 else {
           실행구문
       }
  • if문 과 비슷하게 조건을 지정하고 해당 조건이 참인지 거짓인지에 따라 실행되는 조건문 입니다.

  • if문 과의 차이점 : guard문에서는 if문에서 if영역에 해당하는 부분이 없습니다. 또한 guard문에서는 else문이 반드시 필요합니다.

  • guard문의 경우 프로그램에서 실행이 될수 없는걸 실행 시켰을 경우 프로그램을 종료시키거나 문제가 발생한 부분을 종료시키는데 사용됩니다.
    (따라서 guard문의 경우는 이후에 다시 소개하고 배워보겠습니다.)


오늘 준비한 조건문에 대한 설명은 여기까지입니다.

조건문은 제가 생각하기에 기초 프로그래밍에서 제일 중요한부분입니다.
조건문은 서로다른 환경에서 여러가지를 동시에 처리가 가능하게 해주기 때문이죠

그렇기에 조금더 많은 노력을 드려야 한다고 생각합니다.

남들보다 조금의 노력을 더 들인다면 분명히 좋은 프로그래머가 될 수 있다고 생각합니다.

다음은 제어전달문에 대해 포스팅하겠습니다.


이전 포스팅

  1. Swift란?
    https://steemit.com/kr/@geunwoong0624/kr-swift-1
  2. Xcode 사용법
    https://steemit.com/kr/@geunwoong0624/kr-swift-2
  3. 변수와 상수
    https://steemit.com/kr/@geunwoong0624/kr-dev-swift-3
  4. 자료형
    https://steemit.com/kr/@geunwoong0624/kr-dev-swift-4
  5. 연산자
    https://steemit.com/kr-dev/@geunwoong0624/kr-dev-swift-5
  6. 반복문
    https://steemit.com/kr-dev/@geunwoong0624/kr-dev-swift

선 100일만 1일 1포스팅 버텨 보세요
[Ourselves 캠페인]
셀프보팅을 하지 않고 글을 올리시고
ourselves 테그를 달아 주시면
어떤 일이 일어날까요?
긴 젓가락으로 서로 먹여주는 천국이 이뤄지지 않을까요?

Sort:  

시간날때 천천히 공부해 보겠습니다.
감사합니다.

댓글 감사합니다ㅎ
지금은 기초적인것들을 하지만 나중에는 다양한것들을 만드는것을 올리도록 노력하겠습니다!!

switch 구문이 파워풀하네요. 잘 쓰면 라인을 꽤 줄일 수 있을 것 같네요. ^^

그렇죠ㅎ
스위프트의 switch는 타언어와는 달리 해당 case가 끝나면 종료되고 범위연산자까지 사용이 가능하니까요ㅎ