Swift - 반복문

이한솔·2023년 7월 25일
0

Swift 문법 🍎

목록 보기
4/32

반복문

주어진 조건에 의해 특정 코드 블록을 반복적으로 실행 할 수 있게 해주는 구문이다.

루프(Loop): 코드 블록의 반복
루프 횟수: 반복되는 횟수

반복문 내에서 흐름을 제어할 때는 break 구문, continue 구문을 사용한다.
(제어 전달문: 적절한 시점에 사용되어 코드 블록의 실행 흐름을 옮겨주는 역할)



For 반복문 (횟수에 의한 반복)

for ~ in 구문

in 키워드와 함께 사용되어 정해진 횟수만큼 주어진 코드 블록을 반복해서 실행한다.

  1. 순회 대상
    주로 순번을 가지는 집단 자료형이나 범위를 가지는 데이터를 순회한다.
    순회 대상으로 사용할 수 있는 데이터 타입 : 배열, 딕셔너리, 집합, 범위 데이터, 문자열

  2. 루프 상수
    구문이 반복될 때마다 순회 대상이 포함하고 있는 개별 아이템들을 차례로 넘겨받아 임의로 지정하고, 실행 블록 내에서 사용할 수 있도록 한다.
    (이 객체는 루프 구문이 순회할 때마다 자동으로 재선언되므로 let 키워드를 사용하여 직접 선언할 필요가 없다.)

  3. 실행할 구문
    { } 사이에 작성, for 루프에 의해 반복 실행될 구문의 범위를 표시한다.

  4. 루프 상수 생략 가능
    순회 대상 자체보다는 단순히 순회 대상의 크기만큼 반복하는 것이 목적인 경우 언더바(_)를 사용해 생략 가능하다. (와일드카드 패턴)

  5. for ~ 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


While 반복문 (조건에 의한 반복)

주어진 조건이 false가 될 때까지 계속해서 구문을 반복을 반복 실행한다.
미리 반복 횟수를 정하지 않아도 된다는 장점이 있기 때문에 실행 횟수가 명확하지 않거나, 알 수 없거나 실행 횟수를 기반으로 할 수 없는 조건의 반복문에서 주로 사용한다.

While 구문

매번 루프를 시작할 때 조건식을 평가하여 루프를 돌지 말지를 결정한다.

  1. 조건식
    조건식은 반드시 참(true)이나 거짓(false)을 결과값으로 반환해야 하기 때문에 주로 비교 연산자를 사용한다.
    조건식의 값이 true인 동안은 실행 블록 내의 코드가 반복해서 수행되지만, false를 반환하면 그 즉시 반복문의 실행은 종료되고 코드 블록을 빠져나가 바로 다음에 이어지는 구문을 실행한다.
while <조건식> {
  <실행할 구문>
}

// 무한루프 (break문을 넣어서 멈춰줘야함)
while true {
    ... 
}

repeat ~ while 구문

코드 블록을 일단 실행한 다음 조건식을 평가하여 반복 여부를 결정한다.
이에 따라 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
(구문이 최소 한번은 실행됨)

0개의 댓글