[Swift] 반복문 (For - in , While)

Geon·2022년 11월 13일

Swift 기초

목록 보기
9/10
post-thumbnail

스위프트에서 반복문을 표현하는 방법을 알아보자.

For - in 반복문

For - in Range

for loopConstant in Range{
//반복할 코드
}

설정한 범위만큼 반복이 일어난다. 여기서 loopConstant(반복 상수)는 이름이 '상수'이니만큼 반복문 내에서 값을 변경할 수 없다. 또한 loopConstant의 자료형은 반복 범위로 무엇을 두었느냐에 따라 정해진다.

for num in 1...5{
    print(num)
}

결과 : 1
	 2
     3
     4
     5

정수형으로 범위가 지정되었기 때문에 num의 자료형이 정수형으로 선언된다. 1부터 5까지(5 포함) 총 다섯 번 반복하며, 현재 범위의 값이 num에 대입된다.


Wildcard Pattern

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 - in Collection

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씩 증가한다.

<210제곱 출력하기>

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 문을 중첩시켜 위와 같은 활용도 가능하다.

While

범위나 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

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로 판별되자 반복이 종료되는 것이다.

profile
별에 별 지식 저장해놓고 꺼내먹기📚

0개의 댓글