ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SWIFT] 조건문과 반복문#2
    iOS/SWIFT 2022. 6. 30. 03:00
    728x90
    반응형

    요즘 개인적인 사정으로 많이 바빠서 포스팅을 많이 못하게 되었었다.. 백수다보니 알바도 해야하고 공부와 운동까지 하면서 하니 사람이 자꾸 본인의 휴식에 대해 관대해짐을 느낀다.. 정신차리자.. 나는 백수다,,

    자 쓸데없는 소리는 집어치우고 오늘은 변수와 상수 다음으로 조건문과 반복문에 대해서 알아볼 것이다.
    기본적으로 우리가 가장 많이 쓰는 if문,switch문,for문,while문 위주로 스위프트에서의 사용법에 대해서 알아보려고 한다.
    (오늘 내용은 개발하는 정대리님의 강의를 공부하며 정리한 내용임을 먼저 알린다.)

     

    조건문(conditional)

    절대 우리의 코딩인생에서 없어서는 안되는 제어문중 하나인 조건문이다. 간략히 설명하자면 특정 조건을 부여하여 코드를 실행시키는 제어문을 말한다.(기본적으로 조건문애 대한 개념을 알고 있다는 가정하에 작성하겠다..)
    먼저

    if문

    var grade = 4     //자료형 생략 가능
    
    if grade > 3 && grade <= 6{     //연산자와 숫자를 붙여놓으면 오류가 남
        print("고학년입니다")
    }
    else if grade >= 1 && grade <= 3{
        print("저학년입니다")
    }
    else {
        print("초등학생이 아닌데요..?")
    }

    아주 쉬운 예제를 작성해보았다. 변수의 값에 따라 학년을 판별해 주는 예제이다. 원래는 if뒤에 ()로 구분을 하지만 생략이 가능하다. 하지만 문제가 있다 조건적으로만 친절한지 연산자와 숫자가 붙은 상태로 컴파일을 할경우

    expression failed to parse:

    이렇게 구문 오류가 뜨게 된다. 파이썬을 경험하신 분은 익숙하실 것 같다. 되도록 그런 실수는 사전에 방지하도록 하자..
    나머지는 우리가 알던 if문과 같다.

    다음 예제를 살펴보자

    var boy:Bool = true
    
    if boy {    //true일 경우 간단식 false일경우 !boy
        print("남자입니다")
    }else{
        print("여자입니다")
    }

    스위프트에서는 조건을 굳이 붙이지 않아도 Bool형태로 선언 되어있는 값은 저렇게 if 다음에 변수나 상수만 와도 조건문이 실행이 된다.
    간단하게 편리하게 사용해보도록 하자
    그리고 위의 식을 좀더 간편하게 사용할 수 있는데 여러분이 많이 쓰는 삼항연산자이다.

    var gender : Void = !boy ? print("남자입니다") : print("여자입니다")
    //삼항 연산자로 바로 표현 가능

    솔직히 if문은 그닥 별거 없다. 본인이 이것들 가지고 활용을 얼마나 하는 것이 중요할 것이다.


    switch문

    그다음 조건문인 switch문이다. if문처럼 포괄적인 조건을 부여하는 것이 아닌 특정한 값의 조건을 부여할 때 많이 쓴다.
    자 말보단 코드다.

    switch grade {      
    case 1 ..< 4 :
        print("저학년입니다")
    case 4 ... 6 :
        print("고학년입니다")
    default :
        print("초등학생이 아닌데요..?")
    }

    위의 if문과 같은 코드이다. 살짝 이쁘장하게 바뀐느낌이다. (개인적인 생각이니.. 넘어가 주자..)
    switch문도 우리가 원래 알던것이랑 변함은 없다. 하지만 새로운걸 분명 발견한 분이 있을 것이다.

    1..<4		//1부터 4전까지
    3...6		//3부터 6까지

    바로 이것인데, 처음보기만 그럴것이지 되게 단순한 연산자이다. 스위프트에서는 이렇게 범위연산자라는 것이 존재한다.

    위의 코드들을 종합하여 실행하면 아래와 같은 결과가 나온다.

     

    - 결과 -

    고학년입니다
    남자입니다
    여자입니다
    고학년

     

     

    반복문(iteration)


    자 이제 신나는 반복문시간이다.

    반복문은 우리가 하나하나씩 해야하는 작업을 보다 효율성있게 할 수 있도록 도와준다. (이것도 그냥 넘어가자..)

    for문

    for문도 우리에게 매우 친숙한 제어문이다. 그런만큼 바로 예제로 들어가 버리자

    let i:Int
    let j:Int
    
    for i in 1...5{             //i를 굳이 사용하지 않고 단순반복문만 사용하고 싶으면 _를 i 대신에 써줄 수 있다.
        for j in 1...i{
            print("*",terminator: "")
        }
        print("")
    }

    우리가 for문이라는 벽을 처음 느끼게 해주는 고마운 별찍기 예제이다.
    for문은 위의 예제처럼 반복변수를 따로 선언해준 뒤에 범위를 지정해주며 사용이 되는데 굳이 단순반복만 하고 싶으면 변수를 선언하지 않고 _라는 문자를 삽입하여 사용할 수 있다.
    그리고 기본적으로 print()라는 메서드는 문장을 출력한뒤 개행을 하게 되는데, 출력할 문자를 입력한뒤 terminator: "" 를 입력하면 개행이 되지 않는다.

    - 결과 -

    *
    **
    ***
    ****
    *****

     

    var ranInt:[Int] = [Int]()
    
    for _ in 0..<25{
        let ranNum = Int.random(in: 0...100)        //랜덤수를 생성하여 프로퍼티에 저장
        ranInt.append(ranNum)           //배열에 랜덤 프로퍼티값을 저장
    }
    print("랜덤한 수 : ",ranInt)

    다음은 배열의 for문이다. 배열은 나중에 따로 포스팅을 할 예정이다. 배열을 저렇게 선언하는구나만 알고 넘어가버리자
    for문을 25번 돌아갈때 0부터 100사이의 정수를 랜덤으로 상수에 저장한 뒤 그 값을 배열에 추가하는 과정이다.

    - 결과 -

    랜덤한 수 :  [94, 15, 68, 38, 39, 27, 78, 85, 77, 3, 33, 12, 20, 45, 91, 73, 87, 81, 28, 64, 51, 52, 59, 21, 6]

     

    var arr : [Int] = [1,2,3,4,5,6,7,8,9,10]
    
    for i in arr where i % 2 == 0 {     //where이 붙으면 조건 첨가 가능
        print("짝수 : \(i)")
    }

    다음은 특정 조건이 부여된 for문이다.
    보면 for과 in 말고도 where이란 키워드가 보일 것이다. 말 그대로 반복문이 실행되기 위한 조건을 부여한 것이다. arr배열에 있는 값들 중 조건의 부합한 짝수만 출력이 되는것이다.

    - 결과 -

    짝수 : 2
    짝수 : 4
    짝수 : 6
    짝수 : 8
    짝수 : 10

    while문

    마지막 while문이다. while문도 뭐.. 다를건 없으니 바로 가보자

    var a:Int = 0
    
    while a < 10{
        a += 1
        print(a)
    }

    코드가 워낙 쉽다보니 설명할 게 없지만.. 그래도 보자
    while 뒤에 조건이 붙고 그 조건이 성립이 되면 실행이 된다. 그래서 a가 10이 되는 순간 반복문에서 빠져나온다.

    - 결과 -

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10



    나는 자바,c,파이썬 등을 공부 해봤는데 스위프트가 그 중에서 가장 어려운것 같다.. 언어는 항상 기본이기 때문에 기본에 충실하며 본인의 공부 로드맵을 짜서 그것을 실행할 필요성을 많이 느꼈다.

    이상 포스팅을 마치겠다. 모두 즐코딩 바란다.

    'iOS > SWIFT' 카테고리의 다른 글

    [SWIFT] 연산프로퍼티 #6  (0) 2022.09.29
    [SWIFT] 클래스/구조체 #5  (0) 2022.09.13
    [SWIFT] Enum #4  (0) 2022.09.06
    [SWIFT] Optional #3  (0) 2022.08.29
    [SWIFT] 저장 프로퍼티#1  (0) 2022.06.17
Designed by Tistory.