Swift 조건문

if문

if 조건식 {
    실행문
}
else if 조건식 {
    실행문
}
else {
    실행문
}

  • 조건문을 소괄호로 묶는 것은 생략할 수 있다.
  • Swift에서 if문 조건식의 값은 반드시 Bool형을 사용해야 한다.

switch문

switch 입력값: {
    case 비교값:
        실행문
    case 비교값:
        실행문
    case 비교값3, 비교값4, 비교값5:
        실행문
    default:
        실행문
}

  • 입력값을 소괄호로 묶는 것을 생략할 수 있다.
  • 입력값으로 정수뿐만 아니라 다양한 타입의 값을 사용할 수 있다. (C/C++은 정수만 가능함)
  • case문 body의 break문을 생략할 수 있다. C와 달리 밑에 것들까지 실행되지 않는다.
  • 다음 case 문의 비교값과 비교하지 않고 다음 case문의 body를 실행하려면 fallthrough문을 사용한다. C처럼 하고 싶을 때 사용한다.
  • case문의 body에는 반드시 실행문이 있어야 한다.

Swift 반복문

for-in문

for 상수 in 변수 {
    실행문
}

  • 상수는 for-in문 내에서만 사용되는 지역 상수이다. (i 말하는 거임)
  • break문과 continue문을 사용할 수 있다.

for i in 0...2 {
  print("i: \(i)")
}
/*실행결과
i: 0
i: 1
i: 2
*/

  • for-in문 내에서 i에 변화를 주면 상수이기 때문에 에러가 발생하므로 var로 정의해주어야 한다.

for var i in 0...10 {
  i += 1
  if i<5 {
    print("i: \(i)")
    continue
  } else if i == 5 {
    break
  }
}
/*실행결과
i: 1
i: 2
i: 3
i: 4
*/

  • 상수 대신 와일드 카드를 사용할 경우, for문의 반복 횟수를 정의한다고 생각하면 된다.

var result: Int = 1

for _ in 0...2 {
  result *=10
}
print("result: \(result)")

/*실행결과
result: 1000
*/

  • 문자열과 배열은 파이썬처럼 출력할 수 있다.

var str: String = "abc"

for i in str {
  print("\(i)")
}

/*실행결과
a
b
c
*/

  • 딕셔너리의 각 item은 튜플로 분해된다.

var dic: Dictionary<String, Int> = ["A": 20, "B": 30, "C": 40]
for i in dic {
  print("\(i)")
}
/*
(key: "A", value: 20)
(key: "B", value: 30)
(key: "C", value: 40)
*/
for (name, age) in dic {
  print("\(name): \(age)")
}
/*
A: 20
B: 30
C: 40
*/

while문

while 조건식 {
    실행문
}

repeat {
    실행문
} while 조건식

C의 do-while문은 repeat-while문으로 구현할 수 있다.

Fortran

반복문명: for 상수 in 변수 {
    실행문
}

반복문명: while 조건식 {
    실행문
}

  • 중첩된 반복문을 구분하기 위해 반복문에 이름을 지정할 수 있다.
  • 근데 반복문 많이 중첩하는 거 프로그래머들이 엄청 싫어한다고 들었음.

numbersLoop: for num in numbers {
  if num > 5 || num < 1 {
    continue numbersLoop
  }
  var count: Int = 0
  printLoop: while true{
    print(num)
    count += 1
    if count == num {
      break printLoop
  }
}
  removeLoop: while true {
    if numbers.first != num {
      print("numbers: \(numbers)")
      break numbersLoop
    }
    numbers.removeFirst()
  }
}