주어진 조건에 의해 특정 코드 블록을 반복적으로 실행 할 수 있게 해주는 구문이다.
루프(Loop)
: 코드 블록의 반복
루프 횟수
: 반복되는 횟수
반복문 내에서 흐름을 제어할 때는 break 구문, continue 구문을 사용한다.
(제어 전달문: 적절한 시점에 사용되어 코드 블록의 실행 흐름을 옮겨주는 역할)
in 키워드와 함께 사용되어 정해진 횟수만큼 주어진 코드 블록을 반복해서 실행한다.
for <루프 상수> in <순회 대상> {
<실행할 구문>
}
for row in 1 ... 5 {
print(" 2 X \(row) = \(row * 2)")
}
// 출력값
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
// 루프 상수 생략
let size = 5
let padChar = "0"
var keyword = "3"
for _ in 1...size {
keyword = padChar + keyword
}
print("\(keyword)")
// 출력값 : 000003
// 이중루프
for i in 1..<3 {
for j in 1..<3 {
print("\(i) * \(j) = \(i * j)")
}
}
// 출력값
1 * 1 = 1
1 * 2 = 2
2 * 1 = 2
2 * 2 = 4
주어진 조건이 false가 될 때까지 계속해서 구문을 반복을 반복 실행한다.
미리 반복 횟수를 정하지 않아도 된다는 장점이 있기 때문에 실행 횟수가 명확하지 않거나, 알 수 없거나 실행 횟수를 기반으로 할 수 없는 조건의 반복문에서 주로 사용한다.
매번 루프를 시작할 때 조건식을 평가하여 루프를 돌지 말지를 결정한다.
while <조건식> {
<실행할 구문>
}
// 무한루프 (break문을 넣어서 멈춰줘야함)
while true {
...
}
코드 블록을 일단 실행한 다음 조건식을 평가하여 반복 여부를 결정한다.
이에 따라 repeat ~ while 구문은 실행 블록의 수행을 최소 한 번은 보장하는 특성을 가진다. (while 구문과 결정적 차이)
var n = 1024
while n < 1000 {
n = n * 2
}
print("n = \(n)")
// 출력값 : n = 1024
(구문이 한번도 실행되지 않고 종료, 변수 값 유지됨)
repeat {
n = n * 2
} while n < 1000
print("n = \(n)")
// 출력값 : n = 2048
(구문이 최소 한번은 실행됨)