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
// 실행 블록이 한 번 실행된 상태
[Day5] 흐름 제어 구문(3) : Control Transfer Statements (0) | 2024.04.10 |
---|---|
[Day4] 흐름 제어 구문(2) : Conditional Statements(Branch Statements) (0) | 2024.04.09 |
[Day3-1] Operator (0) | 2024.04.08 |
[Day2] Types of Data (0) | 2024.04.07 |
[Day1] Variables and Constants (1) | 2024.04.06 |
댓글 영역