Notice
Recent Posts
Recent Comments
Link
大器晩成
반복문 (While문) 본문
while 반복문은 조건이 참인 동안 코드를 반복 실행합니다. 조건이 처음부터 거짓이면 한 번도 실행되지 않습니다.
기본 구문
while 조건 {
// 실행할 코드
*조건에 변화를 주는 문장
}
var i = 1
while i <= 5 {
print(i)
i += 1
}
// 출력: 1, 2, 3, 4, 5
# while 구문에 조건식 대신 true 값을 직접 넣으면 무한 루프가 만들어진다.
while true {
}
- 조건(Condition)에는 참과 거짓을 판단할 수 있는 문장이 들어가야 합니다.
- 실행할 코드에는 조건에 변화를 주는 문장이 포함되어야 합니다.
- 조건에 변화를 주지 않으면 중괄호 안의 코드가 무한대로 실행될 가능성이 있습니다.
for문과 비교
- 반복이 시작되기 전에, 반복 횟수가 정해져 있지 않을 때 사용합니다. (조건에 의해 반복)
- 조건이 거짓이 될 때까지 일련의 명령문 수행합니다. (반드시 while문 내부에서 조건을 변화시키는 일이 일어나야 함)
repeat-While문
repeat-While 반복문은 코드를 먼저 한 번 실행한 후, 조건이 참인 동안 반복합니다. 최소한 한 번은 실행됩니다.
기본 구문
repeat {
// 실행할 코드
*조건에 변화를 주는 문장
} while 조건
var i = 1
repeat {
print(i)
i += 1
} while i <= 5
// 출력: 1, 2, 3, 4, 5
# repeat ~ while문과 while문의 차이
var num = 5
repeat {
print(num)
} while num < 5
// 출력: 5
while num < 5 {
print(num)
} // 출력 X
- 조건(Condition)에는 참과 거짓을 판단할 수 있는 문장이 들어가야 합니다.
- while문과 동일하지만, 조건의 관계없이 일단 문장을 실행하고 난 뒤, 조건에 따라 반복적으로 실행할지 여부 확인 후 다시 실행합니다.
for | while | |
사용 용도 | 반복횟수를 미리 알고 있거나, 컬레션, 범위 등을 이용할 때 (또는 반복상수를 사용하는 작업을 해야할 때) |
1. 실행 횟수가 명확하지 않을 때 2. 직접 실행해보기 전까지는 실행 횟수를 결코 알 수 없을 때 3. 실행 횟수를 기반으로 할 수 없는 조건일 때 |
초기화와 조건 검사 | - 반복 변수를 초기화하고 조건 검사 - 범위, stride, 컬렌션, 문자열 등 |
- 조건만을 검사 - 반복 변수를 초기화하고 증감하는 부분은 명시적으로 작성합니다. |
가독성 | 반복 횟수가 명확한 경우 더 간결하고 가독성이 좋습니다. |
조건에 따라 반복을 계속해야할 때 저 직관적 |
반복문 제어 구문(제어전달문)
반복문 내에서 쓰이는 제어전송 명령문(흐름 제어)이며 가장 인접한 범위의 반복문에 영향을 미친다.
break
break 구문은 반복문을 즉시 종료합니다. (스위치문에서 사용하는 break 구문과 동일)
#1 기본적인 break 활용방법
for i in 1...5 {
if i == 3 {
break
}
print(i)
}
// 출력: 1, 2
#2 while 루프 탈출
var num = 0
while true {
num += 1 // num = num + 1
if num > 5 { // num이 5가 넘으면 반복문 탈출
break
}
print(num)
} //출력: 1,2,3,4,5
continue
continue 구문은 현재 반복을 건너뛰고 다음 반복을 시작합니다.
for i in 1...5 {
if i == 3 {
continue
}
print(i)
}
// 출력: 1, 2, 4, 5
# 2단부터 9단까지의 짝수 구구단만 출력
for i in 2...9 {
if i % 2 != 0 {
continue
}
for j in 1...9 {
print("\(i) * \(j) = \(i*j)")
}
}
# 3
for i in 1...5 {
for j in 1...5 {
if j == 3 {
continue
}
print(j)
}
}
// 출력: 1,2,3,4 반복
#4 빈 문자 대신 언더바 삽입
var text = "This is a swift book for Apple's programming language"
var result = ""//결과를 저장할 변수
for char in text {
if char == " " {
result.append(Character("_"))
continue
} else if char == "o" {
result.append(Character("O"))
continue
}
result.append(char)
}
print(result)
// 출력: This_is_a_swift_bOOk_fOr_Apple's_prOgramming_language
키워드 | 사용법 | 공통 |
continue | - 반복문에서 다음 주기로 넘어가서 계속함(continue)을 의미 (continue를 만나면 아래의 문장들을 무시하고 다음 싸이클로 넘어갑니다) |
- 중첩사용시 가장 인접한 반복문에 영향을 미칩니다. - labeled문 사용가능합니다. (중첩의 사용에서, 인접 이외의 범위에서도 제어 가합니다.) |
break | - 반복문을 아예 중지(break) (break를 만나면 반복문의 모든 싸이클을 중지하고 가장 인접한 범위의 반복문을 벗어나고 다음 문장으로 넘어갑니다.) |
Labeled Statements (구문 레이블)
레이블이 매겨진 문장(Labeled Statements)과 continue, break 사용합니다.
- 반복문을 중첩적으로 사용할 때, 각 반복문에 이름을 붙여서, 가장 인접한 범위 이외의 반복문도 제어 가능합니다.
기본 구문
레이블은 반복문이나 조건문 앞에 콜론(':')을 사용하여 붙입니다.
<레이블 이름> : while <조건식> {
<실행할 구문>
}
break <레이블 이름>
continue <레이블 이름>
#1 예제
var loopFlage = true
for i in 1...5 {
for j in 1...9 { // j가 3이면 해당 반복문 탈출
if (j==3) {
loopFlage = false
break
}
print("\(i) * \(j) = \(i*j)")
}
if (loopFlage == false) { //loopFlage가 Fals일 경우 전체 반복문 탈출
break
}
}
//레이블을 사용하여 위에 코드를 간결하게
outer : for i in 1...5 {
inner : for j in 1...9 { //inner를 제거해도 문제 없음
if(j==3){
break outer // 레이블명 outer에 해당하는 반복문 탈출
}
print("\(i) * \(j) = \(i*j)")
}
}
#2 중첩된 반복문에서 구문레이블 사용
outerLoop: for i in 1...3 {
for j in 1...3 {
if i == 2 && j == 2 {
break outerLoop
//break outerLoop문은 레이블이 붙은 for 루프를 종료합니다.
}
print("i = \(i), j = \(j)")
}
}
// 출력:
// i = 1, j = 1
// i = 1, j = 2
// i = 1, j = 3
// i = 2, j = 1
#3 continue와 레이블 사용
outerLoop: for i in 1...3 {
for j in 1...3 {
if i == 2 && j == 2 {
continue outerLoop
// continue outerLoop문은 outerLoop레이블이 붙은 for 루프의 다음 반복으로 건너뜁니다.
}
print("i = \(i), j = \(j)")
}
}
// 출력:
// i = 1, j = 1
// i = 1, j = 2
// i = 1, j = 3
// i = 2, j = 1
// i = 2, j = 3
// i = 3, j = 1
// i = 3, j = 2
// i = 3, j = 3
728x90
'iOS > Swift 문법' 카테고리의 다른 글
함수의 활용 (0) | 2024.11.07 |
---|---|
함수(Function) (0) | 2024.11.07 |
반복문 (For문) (0) | 2024.11.05 |
삼항연산자 (0) | 2024.11.01 |
튜플(Tuple) (0) | 2024.11.01 |