상세 컨텐츠

본문 제목

[Day5] 흐름 제어 구문(3) : Control Transfer Statements

Swift&SwiftUI

by (방울)도마토 2024. 4. 10. 23:11

본문

제어 전달문 

- 코드의 한 부분에서 다른 부분으로 제어 흐름을 전달하여 코드가 실행되는 순서를 변경해주는 구문 

- break, continue, fallthrough, return

 

* fallthrough : switch 구문의 흐름을 제어할 때, 일치된 case 블록의 실행을 다음 case 블록으로 전달시 사용 

<참조>https://bangul-domato.tistory.com/28

 

[Day4] 흐름 제어 구문(2) : Conditional Statements(Branch Statements)

조건문 - 프로그램에서 하나 또는 그 이상의 조건값에 따라 특정 구문을 시행하도록 프로그램의 흐름을 분기하는 역할 if 문 1. if 구문 if { } - 조건문은 반드시 Bool 타입의 true or false을 판단할 수

bangul-domato.tistory.com

 

* return : 함수와 메소드 내에서 값을 반환하면서 실행을 종료하거나 단순히 코드의 실행을 종료 

 


break 

- 실행 흐름이나 반복 실행 중인 루프를 조건식의 결과에 상관없이 즉각적으로 종료하는 데 사용 

    - switch 구문 : 개별 case 블록에 사용되어 전체 switch 구문의 실행 종료 

    - 반복문 : 반복 실행 블록에 사용, 조건식이 false를 반환하기 전 미리 반복문 종료 

for row in 0...5 {
	// row의 값이 2보다 커지는 4번째 반복에서 if 구문 실행
    if row > 2 {
    	// 실행되면, 반복문 전체가 종료
        break
    }
    print("\(row) was executed")
} // 0 was executed
// 1 was executed 
// 2 was executed

 


continue

- continue 구문 아래에 있는 실행 구문들을 건너뛰고 다음 반복을 시작하는 역할 

- 반복문의 조건을 다시 평가하고 그 결과에 따라 다음 반복을 실행함 

- 전체 반복은 계속 유지된다는 것이 break 문과의 결정적 차이 

 

for row in 0...5 {
    // row 가 2보다 작을 경우 실행을 멈추고 다시 루프를 시작함 
    if row < 2 {
        continue
    }
    print("executed data is \(row)")
} // executed data is 2
// executed data is 3
// executed data is 4
// executed data is 5
var text = "This is a swift book for Apple's programming language"
var result = "" 

for char in text.characters {
    if char == " " { // 공백은 _로 변경 
    	result.append(Character("_"))
        continue
    } else if char == "o" { // 소문자 o는 대문자 O로 변경 
    	result.append(Character("O"))
        continue    
    }
    result.append(char)
}
print(result)
	// This_is_a_swift_bOOk_fOr_Apple's_prOgramming_language

 


구문 레이블과 break, continue

- 중첩된 구문에서 continue 나 break 를 사용하면 어떤 구문을 멈추게 하거나 다시 시작하게 할 지 명확하지 않은 문제가 있음 

    → 특정 구문에 레이블을 붙여 break or continue를 사용할 때 해당 레이블을 명시하여 원하는 구문 위치에 정확히 흐름 제어가 적용될 수 있도록 함 

 

<레이블 이름> : while / for~in / switch 등 <조건식> {
    <실행할 구문>
}

break <레이블 이름>
continue <레이블 이름>
outer : for i in 1...5 {
    inner : for j in 1...9 {
        // j == 3일 때 break 실행 
        if (j == 3) {
            break outer
        }
        
        print("\(i) x \(j) = \(i * j)")
    }
} // 1 x 1 = 1
// 1 x 2 = 2
	// 바깥쪽 루프까지 한꺼번에 종료

 

 

관련글 더보기

댓글 영역