반복문 제어 - break

반복문이 무한루프에 빠지지 않게 하기 위해 반복문을 제어하는 명령어가 있는데, breakcontinue이다.

for i in 10...15{
    print("break \(i) 시작-----")
    if(i==13){  //13이면 for문 탈출.
        break   //반복문 탈출 -> 13끝이 출력되지 않고 반복문 종료.
    }
    print("break \(i) 끝-----")
    
}
print("break 종료-----")

"break 13 끝"이 출력되지 않은 채 반복문이 종료되었다. 이와 같이 break는 반복문을 종료하는 데에 사용된다.


반복문 제어 - continue

continue 명령문은 반복문의 실행구문을 수행하지않고 다음 반복문으로 넘어가는데에 사용된다.

for i in 10...15{
    print("break \(i) 시작-----")
    if(i==13){
        continue   //다음 반복순서로 넘김 -> 13끝이 출력되지 않고 14로 넘어간다.
    }
    print("break \(i) 끝-----")
    
}
print("break 종료-----")

break 명령문과 달리, "break 13 끝"의 출력을 건너뛰고 나머지 반복문을 수행하였다.


반복문 - while

조건을 만족하는 동안 실행구문을 반복한다. 

while 조건 {

   실행구문

}

var i = 10			//초기값

while i < 20 {			//i가 20미만이면 반복수행
    print("while 실행 \(i)")
    i += 1			//i 1증가
}

주의 해야 할 점은 while문을 사용할 때 에는 조건을 false로 만들어줄 구문이 없다면 무한루프에 빠지게 된다는 점이다. 

var i = 0
while true {
    print("break start \(i)")
    
    if i == 5 {
        break   //i가 5가 되면 종료
    }
    
    print("break finish \(i)")
    i += 1      //i 증가
}

예시와 같이 종료 시점을 정해주는 것을 잊지 말자


readLine()

사용자의 입력을 받는 함수이다. 옵셔널 형태의 String을 반환한다.

print("입력:",terminator: "")

var text = readLine()
print(text)


while문과 readLine()을 통해 간단한 프로그램을 작성해보자. 사용자의 입력을 받고 그 중 짝수만 선택하여 합계와 평균을 구해본다.

var sum = 0			//합계를 저장할 변수 선언
var cnt = 0			//평균 계산을 위한 변수 선언 
var avg = 0			//평균 값을 저장할 변수 선언 

while true {			//반복문 수행
    print("입력:",terminator: "")
    let input = readLine()!     //사용자의 입력을 input변수에 담는다. 옵셔널 형태로 반환하기에 느낌표를 붙여준다.
    
    if input == "x"{    	//사용자의 입력이 x라면 반복문 종료.
        break
    }
    
    let num = Int(input)!	//사용자의 입력을 정수형태로 num에 대입
    if num % 2 == 0{		//넘어온 사용자의 입력이 짝수인지 확인
        cnt += 1		//평균을 구하기 위해 갯수 파악
        sum += num		//사용자의 입력 합산
        avg = sum/cnt		//평균 계산
    }
    print("number:\(num), total:\(sum), avg:\(avg)")
    
}
print("----------종료되었습니다. 합계:\(sum), 평균:\(avg)----------8")

사용자가 무엇을 입력했는지 보여주기 위해 변수 num은 계속 출력되지만 짝수일 경우에만 sum, avg에 반영되어 출력된다.

'iOS > TJ' 카테고리의 다른 글

day08_multiArray, tuple  (0) 2021.06.03
day07_array  (0) 2021.06.02
day05_control flow_loop  (0) 2021.05.25
day04_control flow_conditional  (0) 2021.05.22
day03_operator, casting  (0) 2021.05.18

+ Recent posts