[Study 1회차] Swift 반복문 정리

yxxjxn·2023년 1월 11일

swift study

목록 보기
1/8

반복문의 종류 3가지

  • for문
  • while문
  • repeat-while문

for문

  • 형태
    for item in 범위or컬렉션 {
    	code
    }
    • 범위 또는 컬렉션에서 아이템을 하나씩 뽑아서 반복 실행
    • item은 임시상수(let)로, 변수로 사용하고 싶다면 다른 변수에 다시 담아서 사용해야한다.
    • item의 scope는 for문 내부이다.
  • 와일드카드 패턴 _ : 상수/변수로 저장할 필요 없이 생략해도 되는 경우에 사용한다.
    for _ in 1...5{
    	code
    }
  • for문의 범위에서 많이 사용되는 함수들
    • reversed 함수 : 역순으로 정렬
      for number in (1...5).reversed() {
          print(number)
      }
    • stride 함수 : 숫자를 특정 간격으로 범위 생성
      for number in stride(from: 1, to: 15, by:2) {
          print(number)
      }
      • to 매개변수 사용시 마지막 숫자 포함하지 않음
      • to 대신 through 매개변수 사용시 마지막 숫자를 포함한다.
        stride(from: 1, to: 15, by: 2)
        // 1, 3, 5, 7, 9, 11, 13
        
        stride(from: 1, through: 15, by: 2)
        // 1, 3, 5, 7, 9, 11, 13, 15
  • for문의 다양한 형태
    • 범위 연산자를 이용한 for문
      for index in 1...5 {
          print("For문 출력해보기: \(index)")
      }
    • 컬렉션 타입을 이용한 for문
      let list = ["Swift", "Programming", "Language"]
      
      for str in list {
          print(str)
      }

while문

  • 형태

    while 조건 {
    	code
    }
    • 조건을 만족하는 동안 중괄호 내부의 내용을 반복적으로 실행
    • 조건에 변화를 주는 문장을 포함해야한다. 그렇지 않으면, 코드가 무한루프에 걸릴 가능성이 있다.
  • 예시

    var sum = 0
    var num = 1
    
    while num <= 50 { 
        sum += num
        num += 1  
    }
    • 1부터 50까지의 모든 수를 sum 변수에 저장되는 함수
    • 이 반복문이 끝나고 나면, num = 51, sum = 1~50까지의 모든 수의 합이 저장되어있다.

repeat-while문

  • while문과 유사한 방식으로 존재하나, 일단 한번 실행하고 이후에 조건 판단 하는 방식
    repeat {
    	code
    } while 조건
  • 예시

    var i = 1
    
    repeat {
        print("\(3) * \(i) = \(3 * i)")
        i += 1
    } while i <= 9
    • 만약 i가 10이어도, 우선은 3 * 10 = 30을 출력하고 종료한다.
  • ⭐ while과 repeat-while문의 조건을 똑같이 해도 반복횟수가 다르므로 유의해서 사용해야한다.

반복문의 응용

for문과 while문의 비교

  • for문
    • 반복 횟수를 미리 알고있거나, 컬렉션, 범위 등을 이용할 때
  • while문
    • 반복횟수가 미리 정해져 있지 않고 조건에 따라 바뀔 때 사용

제어전송문

  • continue : 다음 주기로 넘어가서 계속함

    for num in 1...20 {
        if num % 2 == 0 {   // num 2의 배수
            continue
        }
        print(num)
    }
    • 함수의 동작 : 2의 배수가 아닌 경우에만 숫자를 출력한다.
  • break : 반복문 종료

    for num in 1...20 {
        if num % 2 == 0 {
            break
        }
        print(num)
    }
    • 함수의 동작 : 2의 배수를 만나는 경우, 이 반복문을 종료한다.
  • 중첩 반복문 사용시, 제어전송문

    for i in 1...20 {
    	for j in 1...20{
    		if i < j {
    			break
    		}
    		print("*", terminator="")
    	}
    	print()
    }
    • 이 break는 j를 포함한 for문에 대해 break를 해준다.
    • 가장 인접한 범위의 반복문을 제어할 수 있다.
  • Labeled Statements

    • 반복문을 중첩적으로 사용할 때, 각 반복문에 이름을 붙여서 가장 인접한 범위 외의 반복문 제어가 가능하다.

      OUTER: for i in 0...3 {
          print("OUTER \(i)")
          INNER: for j in 0...3 {
              if i > 1 {
                  print("  j :", j)
                  continue OUTER
              }
              print("  INNER \(j)")
          }
          
      }
    • OUTER, INNER 이용할 수 있다.

profile
macos

0개의 댓글