大器晩成

반복문 (While문) 본문

iOS/Swift 문법

반복문 (While문)

zerobugpark 2024. 11. 6. 00:50

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