스위프트에서 반복문을 표현하는 방법을 알아보자.
for loopConstant in Range{ //반복할 코드 }
설정한 범위만큼 반복이 일어난다. 여기서 loopConstant(반복 상수)는 이름이 '상수'이니만큼 반복문 내에서 값을 변경할 수 없다. 또한 loopConstant의 자료형은 반복 범위로 무엇을 두었느냐에 따라 정해진다.
for num in 1...5{
print(num)
}
결과 : 1
2
3
4
5
정수형으로 범위가 지정되었기 때문에 num의 자료형이 정수형으로 선언된다. 1부터 5까지(5 포함) 총 다섯 번 반복하며, 현재 범위의 값이 num에 대입된다.
for index in 1..<3 {
print("hello")
}
결과 : hello
hello
위 코드는 단순히 hello라는 문자를 두 번 출력하는 코드기에 반복 상수인 index가 활용이 안된 모습이다. Swift에서는 이렇게 반복 상수를 쓸 일이 없을 때는 아래와 같은 Wildcard Pattern 형식으로 반복 상수를 선언하길 권장한다.
for _ in 1..<3{
print("hello")
}
결과 : hello
hello
사용할 일 없는 index를 빼고, Wildcard Pattern인 _로 표현한 모습이다.
for loopConstant in Collection{ //반복할 코드 }
이번에는 배열 등의 Collection을 활용하여 반복하는 방법이다. 바로 예제를 통해 이해해 보자.
list = ["Cat","Dog","Pig"]
for animal in list{
print(animal)
}
결과 : Cat
Dog
Pig
Cat,Dog,Pig를 담은 문자열 배열 list를 선언하고, 이것을 for문에 활용한 모습이다. list의 원소 개수인 3만큼 반복되며, 매 반복마다 반복 상수인 animal에는 list가 열거되면서 list에 속한 원소 값이 차례대로 하나씩 담긴다.
몇가지의 추가 예제들을 통해 For 문의 활용을 익혀보자.
<0부터 10 이전 까지의 정수 중 짝수 출력하기>
for num in stride(from: 0, to: 10, by: 2){
print(num)
}
결과: 0
2
4
6
8
stride 함수를 이용하여 짝수를 구한 모습이다. stride는 from부터 to까지(to의 범위는 포함하지 않는다. 만일 범위를 포함하고 싶다면 to 대신 through를 사용한다), by씩 증가한다.
<2의 10제곱 출력하기>
let power = 10
var result = 1
for _ in 1...power{
result = result * 2
}
print(result)
결과 : 1024
위와 같이 상수나 변수를 반복 범위를 설정에 활용할 수 있다.
<구구단 출력>
for i in 2...9{
for j in 1...9{
print("\(i) * \(j) = \(i * j)")
}
}
결과 : 2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
.
.
.
9 * 8 = 72
9 * 9 = 81
for문 속에 또다른 for 문을 중첩시켜 위와 같은 활용도 가능하다.
범위나 Collection 등을 활용했던 For - in 반복문과 달리 While 반복문은 조건에 따라서 반복을 한다.
while loop condition { //반복할 코드 }
loop condition이 true일 동안 블록 내부의 코드가 실행된다. 아래에서 while문을 활용한 기본적인 예시를 살펴보자.
<1에서부터 100까지의 합 구하기>
var num = 1
var sum = 0
while num <= 100 {
sum += num
num += 1
}
print(sum)
결과 : 5050
repeat while문은 조건을 먼저 판단하고, 코드를 실행하는 일반 While문과 다르게 코드를 먼저 실행하고 조건을 판단한다.
repeat { //반복할 코드 } while loop condition
위와 같이 코드가 먼저 등장하고, 후에 while 과 반복 조건이 쓰여지는 형식이다. 코드를 일단 한번 실행시킨 후 loop condition이 true 이면 repeat 블록 내부의 코드를 반복하고, false 라면 그대로 반복을 종료시킨다.
일반 While 문과 repeat - While 문의 차이를 아래의 예시를 통해 확인해보자.
//While
var num = 10
while num < 10 {
num += 1
}
print(num)
결과 : 10
//repeat - While
var num = 10
repeat {
num += 1
} while num < 10
print(num)
결과 : 11
이제 확실히 이해가 될 것이다. 두 방식 모두 반복 조건은 num < 10 이지만, 일반 While 문은 조건을 먼저 판단하여 이 조건이 false 이므로 코드를 실행하지 않는다. 반면 repeat - While 문은 처음에는 조건과 관계없이 일단 코드를 실행시키기 때문에 num += 1 코드가 한번 실행되어 num이 11이 되고, 후에 종료 조건을 따져 false로 판별되자 반복이 종료되는 것이다.