상세 컨텐츠

본문 제목

[Day3-2] 흐름 제어 구문(1) : Loop Statements

Swift&SwiftUI

by (방울)도마토 2024. 4. 8. 17:42

본문

Loop Statements 

- 주어진 조건에 따라 특정 코드 블록을 반복적으로 실행할 수 있게 하는 구문 

 

1. For 반복문(for ~ in 구문)

- 횟수에 의한 반복 

for <루프 상수> in <순회 대상> {
    <실행할 구문>
}

 

순회 대상

- 순회 대상의 길이나 포함하고 있는 아이템의 개수만큼 구문 반복 수행  

    - 순회 대상 : Array, Dictionary, Set, 범위 데이터, String 

 

루프 상수 

- 구문이 반복될 때마다 순회 대상이 포함하고 있는 개별 아이템들을 차례로 넘겨받아 임의로 저장, 실행 블록 내에서 사용할 수 있도록 해주는 역할 

- 순회할 때마다 자동으로 재선언되므로 직접 선언할 필요가 없음 

- 오직 for 블록 내에서만 사용 가능 

 

실행 구문(Code Block)

- { } 사이에 작성되는 구문 

for row in 1...5 {
    print(row)
} // 1, 2, 3, 4, 5

 

 

cf. 문자열의 문자 순회하는 방법

- String 타입 자체는 순회 처리를 지원하지 않으므로 characters 속성을 사용해야 함 

var lang = "swift"
for char in lang.characters {
    print(char)
}	// s, w, i, f, t

 

 

루프 상수의 생략 

- 순회 대상의 크기만큼 반복하는 것이 목적인 경우 언더바(_)를 사용하여 루프 상수를 생략할 수 있음 

let size = 5
let padChar = "0"
var keyword = "3"

for _ in 1...size {
    keyword = padChar + keyword
}

print(keyword) // 000003

 

 

다중 루프

- 바깥쪽의 루프가 한 번 실행될 때마다 안쪽의 루프는 매번 모두 반복 

    → 전체 반복 횟수는 각 루프 실행 횟수를 곱한 만큼 (9 * 9 = 81)

- 다중 루프 사용시 최대한 간결하고 읽기 좋게 코드를 작성할 수 있도록 신경써야 함 

// 이중 루프 (구구단)
for i in 1..<10 {
	for j in 1..<10 {
    	print("\(i) x \(j) = \(i * j)")	
    }
}

 

 

 

2. While 반복문 

- 조건에 의한 반복

 

while 구문을 사용해야 하는 경우

- 실행 횟수가 명확하지 않을 때 

- 직접 실행해보기 전까지 실행 횟수를 알 수 없을 때 

- 실행 횟수를 기반으로 할 수 없는 조건일 때 

while <조건식> {
    <실행할 구문>
}

 

- 조건식은 반드시 true or false로 반환

    - true인 경우 실행 블록 내의 코드가 반복해서 수행, false 반환시 그 즉시 반복문이 종료되고 코드 블록을 빠져가나 다음 구문을 실행

 

이벤트 루프

- 무한 루프 

- 모바일 앱은 특성상 사용자의 액션을 기다리는 동안 입력 대기 상태를 유지 

- 앱이 종료되지 않은 채로 대기 상태를 유지하기 위해 이벤트 루프라고 불리는 무한루프를 만들어 실행 

- 이 때 무한 루프를 만들기 위해 while 구문 사용 

 

cf. 이벤트

- 의미 있는 특정 사건이 발생하는 것 

   - 예 : 사용자가 버튼을 클릭하는 사건, 사용자가 화면을 위아래로 미는 사건, 특정 영역을 손가락으로 터치하는 사건 

- 이벤트 주도 프로그래밍(Event Driven Programming)

    -  특정 상황에서 실행할 구문을 작성해두고 이를 사용자 이벤트와 연결하여 프로그래밍 하는 방식 

 

 

reapeat~while 구문

repeat {
    <실행할 구문>
}
while <조건식>

 

- 실행 블록의 수행을 최소 한 번을 보장 

var n = 1024
while n < 1000 {
    n = n * 2
}

print("n = \(n)") // n = 1024
			// while 문이 실행되지 않음 
                    
repeat {
    n = n * 2
}
while n < 1000

print("n = \(n)") // n = 2048
			// 실행 블록이 한 번 실행된 상태

관련글 더보기

댓글 영역