Swift 8. 반복문
Swift 8. 반복문
같거나 비슷한 명령을 반복 실행
배열과 같은 시퀀스, 순서가 있는 데이터를 더욱 편리하게 처리 가능
continue, break 등의 제어 키워드 사용 가능
1. for-in 문
반복적인 데이터나 시퀀스를 다룰 때 많이 사용
for [임시 상수] in [시퀀스 아이템]{
[실행문]
}
* 예시 - 임시 상수 i와 범위 연산자 사용
for i in 1...3{
print(i)
}
<실행결과>
1
2
3
* 예시 - 조건문 활용
for i in 1...5{
// .isMultiple() 는 ()안의 수의 배수인지 확인해 주는 인스턴스 메소드
if i.isMultiple(of: 2){
print(i)
continue
}
print("\(i)는 홀수")
}
<실행결과>
1는 홀수
2
3는 홀수
4
5는 홀수
* 예시 - 문자열 활용
let str: String = "HelloWorld"
for char in str{
print(char)
}
<실행결과>
H
e
l
l
o
W
o
r
l
d
* 예시 - 시퀀스에 해당하는 값이 필요 없다면 와일드카드 식별자 (_) 사용
var num: Int = 10
for _ in 1...3{ // 와일드카드 식별자 (_) 사용
num *= 10
}
print(num)
<실행결과>
10000
for-in 문은 스위프트의 기본 컬렉션 타입에서도 유용하게 쓰임
* 예시 - 딕셔너리 활용1 -> 딕셔너리로 넘겨받기
// 딕셔너리 생성
let friends: [String: Int] = ["Kim": 24, "Lee": 25, "Park": 21]
for dic in friends{
print(dic)
}
<실행결과>
(key: "Park", value: 21)
(key: "Kim", value: 24)
(key: "Lee", value: 25)
* 예시 - 딕셔너리 활용2 -> 키와 값을 따로 받아오기
// 딕셔너리 생성
let friends: [String: Int] = ["Kim": 24, "Lee": 25, "Park": 21]
for (name, age) in friends{
print("이름 : \(name) 나이 : \(age)")
}
<실행결과>
이름 : Kim 나이 : 24
이름 : Lee 나이 : 25
이름 : Park 나이 : 21
* 예시 - 세트 활용
// 세트 생성
let name: Set<String> = ["Kim", "Lee", "Park", "Choi", "Son"]
for setName in name{
print(setName)
}
<실행결과>
Kim
Choi
Park
Son
Lee
2. while 문
특정 조건이 성립하는 한 블록 내부의 코드 반복 실행
조건은 반드시 Bool 타입이어야 함
continue, break 등의 제어 키워드 사용 가능
while [조건]{
[실행문]
}
* 예시 - 배열이 텅 빌 때 까지 반복
var name: [String] = ["Kim", "Lee", "Park", "Son", "Choi"]
while name.isEmpty == false{ // 배열이 비어있지 않으면 계속 반복
print("Good bye \(name.removeFirst())")
// .removeFirst()는 배열의 첫 요소를 반환하고 삭제
}
<실행결과>
Good bye Kim
Good bye Lee
Good bye Park
Good bye Son
Good bye Choi
3. repeat-while 문
다른 프로그래밍 언어의 do-while 문과 동일
repeat 블록의 코드를 최초 1회 실행한 후, while 다음의 조건이 성립하면 블록 내부의 코드 반복 실행
repeat{
[실행문]
} while [조건]
* 예시 - 배열이 텅 빌 때 까지 반복
var name: [String] = ["Kim", "Lee", "Park", "Son", "Choi"]
repeat{
print("Good bye \(name.removeFirst())")
// .removeFirst()는 배열의 첫 요소를 반환하고 삭제
}
while name.isEmpty == false // 배열이 비어있지 않으면 계속 반복
<실행결과>
Good bye Kim
Good bye Lee
Good bye Park
Good bye Son
Good bye Choi
3. 반복문 이름표
반복문을 중첩으로 장성할 경우 반복문을 제어하는 키워드(continue, break 등)가 어떤 범위에 적용되어야 하는지 애매하거나 큰 범위의 반복문을 종료하고 싶은데 작은 범위의 반복문만 종료되는 경우 발생
-> 반복문 앞에 이름과 함께 콜론 (:) 을 붙여 반복문에 이름을 붙여주면 해결
이름이 지정된 반복문을 제어할 때는 제어 키워드와 이름을 함께 작성
* 예시 - 정수가 들어있는 배열에서 값을 하나씩 꺼내서 1부터 해당 값 까지 출력하는데 5를 출력하면 전체 반복 종료
let numbers: [Int] = [3, 2, 7, 4]
bigLoop: for num in numbers{ // 반복문 이름 지정
smallLoop: for i in 1...num{ // 반복문 이름 지정
print(i)
if i == 5{
print("5를 출력해서 반복 종료")
break bigLoop // bigLoop 종료
}
}
}
<실행결과>
1
2
3
1
2
1
2
3
4
5
5를 출력해서 반복 종료
-> 이름표를 사용하지 않았다면..
let numbers: [Int] = [3, 2, 7, 4]
for num in numbers{
for i in 1...num{
print(i)
if i == 5{
print("5를 출력해서 반복 종료")
break
}
}
}
<실행결과>
1
2
3
1
2
1
2
3
4
5
5를 출력해서 반복 종료
1
2
3
4
댓글
댓글 쓰기