궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
SWIFT/Grammar

Swift : 기초문법 [While 루프]

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

While 루프

루프를 작성하는 두 번째 방법while문을 사용하는 것입니다.

 

확인할 조건을 지정하면 해당 루프 코드가 조건이 실패 할 때까지 계속반복하게 됩니다.

 

예를 들어, 우리는 1부터 20까지 카운트 한다음 마지막에 "준비 됐으면 시작하겠습니다!" 라는 텍스트를 출력 하려고 합니다. 그렇다면 아래와 같이 While문을 사용하면 됩니다.

var number = 1

while number <= 20 { //number이 20보다 작거나 같으면 실행
    print(number)
    number += 1
}
print("준비 됐으면 시작하겠습니다!")

언제 While 문을 사용하고 언제 For문을 사용하나요?

Swift는 For루프While루프를 제공하며, 둘 다 일반적으로 사용됩니다. 어떤 방법을 사용해야 하고, 그 이유는 무엇일까요?

 

주요 차이점For루프는 일반적으로 유한 시퀀스와 함께 사용된다는 점입니다.

 

예를 들어 숫자 1에서 10까지 또는 배열의 항목을 통해 순환합니다. 반면에, While루프는 어떠한 상태가 false가 될 때까지 반복될 수 있으며, 이것은 우리가 그것에게 멈추라고 말할 때까지 그것이 반복되게 합니다. 아래 처럼 말이죠.

…서버에서 중지하라고 합니다.
…우리가 찾고 있는 답을 찾았습니다.
…데이터를 충분히 생성했습니다.

만약 우리가 10개의 주사위를 굴려서 결과를 프린트하라고 요청했다면, 1부터 10까지 세는 간단한 For루프로 할 수 있습니다.

 

하지만 이전 주사위들의 결과가 같다면(중복이 됐다면) 자동적으로 다시 주사위를 굴리도록 요구 한다고 가정해봅시다. 그렇다면 우리는 얼마나 많은 주사위를 굴려야 할지 미리 알 수 없습니다.

 

아마 운이 좋아서 10번만 굴릴 수 도 있겠지만, 운이 나빠서 15번을 굴릴 수 도 있죠. 이럴때 While루프를 사용합니다!

 

예시

let colors = ["빨간색", "주황색", "노랑색", "초록색", "파란색"]
var colorCounter = 0
//colorCounter가 5보다 작을때 까지 반복 ( 0부터 카운트 )
while colorCounter < 5 {
    print("\(colors[colorCounter])는 가장 인기 있는 색상입니다.")
    colorCounter += 1
}
//빨간색는 가장 인기 있는 색상입니다.
//주황색는 가장 인기 있는 색상입니다.
//노랑색는 가장 인기 있는 색상입니다.
//초록색는 가장 인기 있는 색상입니다.
//파란색는 가장 인기 있는 색상입니다.
var counter = 2
//counter가 64보다 작을때까지 반복
while counter < 64 {
    print("\(counter)는 2의 제곱입니다.")
    counter *= 2
}
//2는 2의 제곱입니다.
//4는 2의 제곱입니다.
//8는 2의 제곱입니다.
//16는 2의 제곱입니다.
//32는 2의 제곱입니다.
var cats: Int = 0
while cats < 10 {
    cats += 1
    //cats가 10보다 작을때까지 아래 텍스트를 프린트 하지만,
    print("아이스크림을 더 많이 사고 싶습니다.")
    //만약 cats가 4가 되었을때는 아래와 같은 조건을 실행시킵니다.
    if cats == 4 {
        print("충분해!")
        //실행되면 cats는 10이 되고 while문은 종료됩니다.
        cats = 10
    }
}
//아이스크림을 더 많이 사고 싶습니다.
//아이스크림을 더 많이 사고 싶습니다.
//아이스크림을 더 많이 사고 싶습니다.
//아이스크림을 더 많이 사고 싶습니다.
//충분해!
var number: Int = 10
while number > 0 {
    number -= 2
    if number % 2 == 0 {
        print("\(number) is an even number.")
    }
}
//8 is an even number.
//6 is an even number.
//4 is an even number.
//2 is an even number.
//0 is an even number.

잘못된 예시

만약 5개의 페이지를 프린트 해야한다면 아래는 잘못된 예시입니다.

var page: Int = 0
while page <= 5 {
    page += 1
    print("저는 \(page)번째 페이지를 읽고 있습니다.")
}
//6번이 반복됨.
let bottles = 10
while bottles > 0 {
    bottles -= 2
    print("\(bottles) green bottles.")
}
//let 상수는 수정 할 수 없습니다.

 

While TEST: 문제를 풀려면 이곳을 클릭해주세요.

While문으로 무한 루프 후, 빠져나오기

무한 루프를 만들기위해 While문을 사용하는 것이 일반적입니다. 끝이 없거나 모든것을 마쳤을 때만 끝나는 루프입니다.iPhone의 모든 앱은 실행되기 시작하기 때문에 무한 루프를 사용하고 종료하기로 선택할 때까지 이벤트를 계속 감시합니다.

 

무한 루프를 만들려면 true 조건으로사용 합니다. true는항상 true이므로 While루프가 영원히 반복됩니다.

TIP
 
 

예를 들어 Life Goes On이라는 3분 30초 짜리 음악을 재생하려고 합니다. 3분 30초 동안 이것은 무한으로 루프해야 되겠죠? 그렇기때문에 while문을 true로 할당해주고 3분 30초가 지나면 빠져나와야합니다. break를 사용하는것이죠.

(break에 대해 알고싶으시면 여기를 눌러주세요)

var counter = 0

while true {
    print(" ")
    counter += 1
          //198초 뒤에 멈춤
    if counter == 198 {
        break
    }
}

다시한번 기억해야 할것은 iPhone에서 사용하는 모든 앱에는 무한 루프가 있다는 것입니다. 앱이 시작되면 그만하라는 메시지가 표시 될 때까지 명령을 수행 하고 반복해야합니다.사용자 입력 확인

  1. 필요한 코드 실행
  2. 화면 다시 그리기
  3. 반복

예를들어 Twitter를 확인하는 경우에는 10초 동안 지속될 수 있지만, 게임을하는 경우에는 몇 시간 동안 지속될 수도 있고 훨씬 더 오래 실행될 수도 있습니다. 요점은 루프가 언제 멈출 지 모르기 때문에 1에서 10억까지 반복 할 수 있다는 것입니다. 프로그램은 닫힐 때까지 계속해서 계속해서 실행됩니다.

 

예시

var loggedIn = true
while loggedIn {
    print("Waiting for user input...")
}
var counter = 1
repeat {
    print("Counting: \(counter)")
    counter += 2
} while counter != 10
//3,5,7,9,11 로 숫자가 늘어나서 결국 10은 출력되지않고 건너뛰기때문에 무한으로 반복됩니다.
var isVisible = true
while isVisible == true {
    isVisible = false
    if isVisible == false {
        isVisible = true
    }
}
//결국 isVisible은 true입니다.

잘못된 예시

var exCharacters = 0
var bookSeries = "Game of Thrones"
while true {
    print("It's time for someone else to go")
    exCharacters += "1"
}
//정수에 문자열을 추가하려고 합니다.
var isRead = false
while isRead {
    isRead = true
    print("You read this message.")
}
//변수 isRead가 false로 정해져있기때문에 아무것도 출력되지 않습니다.

 

읽어주셔서 감사합니다🤟


잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.