제어 흐름 (Control Flow)

2023. 11. 21. 02:21· 🍎swift
목차
  1. For-in Loops
  2. While 루프 (While Loops)
  3. 조건 구문 (Conditional Statements)

Swift는 다양한 제어 흐름 (control flow) 구문을 제공함.


For-in Loops

  • 범위가 정해져 있거나 반복하고자 하는 element가 명확할때 사용 (범위연산자, 배열, 등)
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
    print("Hello, \(name)!")
}
// Hello, Anna!
// Hello, Alex!
// Hello, Brian!
// Hello, Jack!

 

  • 딕셔너리의 key : value 값을 활용해 사용 가능 
  • 딕셔너리의 순서는 정해져 있지 않음으로 랜덤값으로 출력됨 
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
    print("\(animalName)s have \(legCount) legs")
}
// cats have 4 legs
// ants have 6 legs
// spiders have 8 legs

 

  • 범위연산자에 활용 가능 
for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25

 

  • 범위 연산자를 활용해 결과값만 출력 가능 
var base = 2
var power = 6

var answer = 1

for _ in 1...power {
    answer *= base
}

print("\(base)의 \(power)제곱은 \(answer)") //2의 6제곱은 64

 

 

  • 참 거짓을 판별하기 위해 활용 가능 
let bugs = ["Aphid", "Bumblebee", "Cicada", "Damselfly", "Earwig"]
var hasMosquito = false
for bug in bugs {
    if bug == "Mosquito" {
        hasMosquito = true
        break
    }
}
print("'bugs' has a mosquito: \(hasMosquito)")
// Prints "'bugs' has a mosquito: false"

 


While 루프 (While Loops)

  • while 루프는 조건이 참이라면 계속 실행됨 
    ※무한루프 조심 
  • 명확한 범위가 없는 반복문에 사용
var number = 1

while number <= 100 {
    if number % 2 == 0 { // 2로 나누어 떨어지는 경우
        print("\(number)는 2로 나누어 떨어집니다.")
    }
    number += 1 //무한루프를 피하기 위해 넣음
}

//2는 2로 나누어 떨어집니다.
//4는 2로 나누어 떨어집니다.
//6는 2로 나누어 떨어집니다.
//8는 2로 나누어 떨어집니다.
//10는 2로 나누어 떨어집니다.
//12는 2로 나누어 떨어집니다.
...

조건 구문 (Conditional Statements)

  • swift는 코드에 조건부를 추가하는 방법은 if문과 switch문 2가지를 제공
  • 일반적으로 if 구문은 가낭한 결과가 적은 간단한 조건에 적합함.
  • switch 구문은 가능한 결과가 여러개이며 더 복잡한 조건에 적합하고 실해해야 할 적절한 코드 분기를 선택해야 하는 패턴 매칭 상태에 유용함

 

if구문

  • 조건이 true 일 경우에만 구문을 실행
var temperatureInFahrenheit = 30
if temperatureInFahrenheit <= 32 {
    print("It's very cold. Consider wearing a scarf.")
}
// Prints "It's very cold. Consider wearing a scarf."

 

  • if 구문은 if 조건이 false 일 때 그밖의 다른 구문을 제공할 수 있습니다. 이 구문은 else 키워드로 표기
temperatureInFahrenheit = 40
if temperatureInFahrenheit <= 32 {
    print("It's very cold. Consider wearing a scarf.")
} else {
    print("It's not that cold. Wear a T-shirt.")
}
// Prints "It's not that cold. Wear a T-shirt."
 
  • 중괄호는 항상 출력이 되야하고, else if 를 통해 추가할 수 있음
temperatureInFahrenheit = 90
if temperatureInFahrenheit <= 32 {
    print("It's very cold. Consider wearing a scarf.")
} else if temperatureInFahrenheit >= 86 {
    print("It's really warm. Don't forget to wear sunscreen.")
} else {
    print("It's not that cold. Wear a T-shirt.")
}
// Prints "It's really warm. Don't forget to wear sunscreen."

 

  • 마지막 else 절은 옵셔널임으로 제외 가능 따라서, if절과 else if 절을 모두 만족하지 않으면 아무것도 출력되지 않음
temperatureInFahrenheit = 72
if temperatureInFahrenheit <= 32 {
    print("It's very cold. Consider wearing a scarf.")
} else if temperatureInFahrenheit >= 86 {
    print("It's really warm. Don't forget to wear sunscreen.")
}

 

  • 값에 따른 문자열 할당 가능
let temperatureInCelsius = -1
let weatherAdvice: String

if temperatureInCelsius > 30 {
    weatherAdvice = "푹염입니다. 더위에 대비하세요"
    
} else if temperatureInCelsius < 15 {
    weatherAdvice = "춥습니다."
    
} else   {
    weatherAdvice = "나들이하기 좋은 날씨입니다."
}
print(weatherAdvice)
//춥습니다.

 

  • 간결한 표현 가능(if 절에 따른 문구 할당) 
let weatherAdvice1 =  if temperatureInCelsius > 30 {
    "푹염입니다. 더위에 대비하세요"
    
} else if temperatureInCelsius < 15 {
     "춥습니다."
    
} else   {
     "나들이하기 좋은 날씨입니다."
}
print(weatherAdvice1)

 

 

switch 구문

  • switch 구문은 여러가지 선택 가능한 경우의 수에 따라 각기 다른 코드를 실행함.
var age = 37

switch age {
case 8...13:
    print("초등학생")
case 14...16:
    print("중학생")
case 17...19:
    print("고등학생")
default:
    print("성인")
}
//성인

 

  • break 키워드를 통해 코드를 중단시키고 다음 코드로 이동 
var age = 20

switch age {
case 8...13:
    print("초등학생")
case 14...16:
    print("중학생")
case 17...19:
    print("고등학생")
    
default:
    break
}

if age > 19 {
    print("성인입니다.")
} else if age > 8 && age < 19 {
    print("학생입니다.")
}

//성인입니다.

 

 

  • Where 키워드를 통해 코드를 중단시키고 다음 코드로 이동 
switch 케이스는 추가 조건으로 where 절을 통해 참 거짓을 판별 할 수 있고 그에 따른 코드를 출력함
let yetAnotherPoint = (1, -1)
switch yetAnotherPoint {
case let (x, y) where x == y:
    print("(\(x), \(y)) is on the line x == y")
case let (x, y) where x == -y:
    print("(\(x), \(y)) is on the line x == -y")
case let (x, y):
    print("(\(x), \(y)) is just some arbitrary point")
}
// Prints "(1, -1) is on the line x == -y"
 
 

튜플 (Tuples)

튜플은 여러가지 데이터를 한번에 저장할 수 있는 가장 간단한 방법 
활용방법은 좌표,인적사항 등등에서 활용 가능 
 
  • 튜플의 기본 형태
var students = ("Hoi","iOS","sessac")

 

  • 각 요소에 이름을 붙일 수 있고, 각각 접근 가능
var students = (name: "Hoi", sbjact: "iOS",class: "sessac")

students.name //"Hoi"
students.sbjact //"sbjact"
students.class //"sessac"

 

  • 각 요소를 바인딩 가능(바인딩이란 상수화 || 변수화를 말함)
let (name,sbjact,location) = ("Hoi", "iOS","sessac")

 

  • switch구절과 활용 가능 
let anotherPoint = (2, 0)
switch anotherPoint {
case (let x, 0):
    print("x축 상의 x값이 \(x)")
case (0, let y):
    print("y축 상의 y값이 \(y)")
case let (x, y):
    print("x,y의 값은 (\(x), \(y))")
}
// x축 상의 x값이 2

'🍎swift' 카테고리의 다른 글

TLI - Concurrency  (0) 2024.01.17
[Swift] Stroyboard Navigation Controller를 활용한 화면이동  (1) 2023.12.21
text field 바꾸기 (플레이스 홀더, 클리어 버튼)  (0) 2023.04.21
[Swift] 연산자 커스텀 타입  (0) 2023.04.05
Swift - 문자열 다루기 01  (0) 2023.03.29
  1. For-in Loops
  2. While 루프 (While Loops)
  3. 조건 구문 (Conditional Statements)
'🍎swift' 카테고리의 다른 글
  • TLI - Concurrency
  • [Swift] Stroyboard Navigation Controller를 활용한 화면이동
  • text field 바꾸기 (플레이스 홀더, 클리어 버튼)
  • [Swift] 연산자 커스텀 타입
Kendrick
Kendrick
Kendrick
권군 개발일기장
Kendrick
전체
오늘
어제
  • 분류 전체보기 (27)
    • 💻CS (0)
    • 📝코딩테스트 (2)
    • 🍎swift (21)
      • swift 기초 (2)
      • Apple공식문서 번역 및 요약 (1)
      • [Playground]코딩배우기2 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 문자열
  • 코딩배우기2
  • Indicator
  • 메모리관리
  • 코딩테스트
  • navigationController
  • urlsession
  • 후치연산자
  • 동시성
  • 메모리누수
  • swfit
  • 연산자커스텀
  • 강한참조사이클
  • 배열
  • restfull
  • 제네릭
  • API
  • Result타입
  • storyboard
  • ViewController
  • playground
  • 클로저활용
  • 고차함수
  • 메서드
  • 타입메서드
  • closure
  • UICollectionViewDelegateFlowLayout
  • Swift
  • 전치연산자
  • 에러처리

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Kendrick
제어 흐름 (Control Flow)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.