[TIL / 25.02.04] Swift의 기본 데이터 타입~반복문까지 복습!

2025. 2. 4. 16:02·iOS/Swift

 

1. Swift의 기본 데이터 타입

1.1 변수와 상수

  1. 변수(Variable): var 키워드를 사용하여 선언하며, 값을 변경할 수 있습니다.
  2. 상수(Constant): let 키워드를 사용하여 선언하며, 한 번 값이 설정되면 변경할 수 없습니다.
var name = "Alice"
var age = 20
let birthYear = 2003

print("이름: \(name), 나이: \(age), 출생 연도: \(birthYear)")

name = "송눈섭"
birthYear = 2005 // Error!!

 

요렇게 var, let 키워드를 활용해서 변수, 상수 선언을 하고 후에 상수를 변경하려고 하면 에러를 볼 수 있게 된다 !

1.2 자료형

타입 설명 예제
Int 정수형 숫자 (64비트 정수형) let id: Int = 14
Double 소수점을 포함한 숫자 (64비트 부동소수형) let pi: Double = 3.14159
Float 소수점을 포함한 숫자 (32비트 부동소수형) let shortPi: Float = 3.14
String 텍스트 데이터(문자열)를 저장하는 타입 (문자 타입: Character) let message: String = "무야호~"
Bool 참(true) 또는 거짓(false) 값을 저장 let isBandBoomOn: Bool = true

 

1.3 데이터 타입 변환(Type Casting)하기

Swift에서는 서로 다른 데이터 타입 간 변환이 필요할 때 명시적 변환을 사용한다.

 

  • 정수 --> 실수 : Double(정수)
  • 실수 --> 정수 : Int(실수) // 소수점 이하 버림
  • 숫자 --> 문자열 : String(숫자)
let score: Double = 95.7
let intScore = Int(score)

let age = 20
let ageMessage = "나는 \(String(age))살입니다."

print("정수형 점수: \(intScore)") // 정수형 점수: 95
print(ageMessage) // 나는 20살입니다.

 

상수 Score의 95.7이라는 값을 가지고 intScore에 정수로 변환된 값으로 선언해줌. 그럼 소수점 빠져서 95가 되어 들어감!

age라는 정수를 String(age)를 통해 문자열로 변환시켜 ageMessage 문자열에 포함시켜줬으니 나는 20살입니다. 가 나옴!

 


2. 연산자의 이해

2.1 산술 연산자 (Arithmetic Operators)

가장 익숙한 연산자다. 덧셈 뺄셈 곱하기 나누기 나머지~

연산자 설명 에제
+ 덧셈 let sum = 10 + 5
- 뺄셈 let diff = 10 - 5
* 곱셈 let product = 10 * 5
/ 나눗셈 let quotient = 10 / 5
% 나머지 연산 let remainder = 10 % 3

 

let a = 10
let b = 3

print("덧셈: \(a + b), 뺄셈: \(a - b)")
print("곱셈: \(a * b), 나눗셈: \(a / b), 나머지: \(a % b)")

 

2.2 비교 연산자 (Comparison Operators)

연산자 설명 예제
== 값이 같은지 비교 a == b
!= 값이 다른지 비교 a != b
> 왼쪽 값이 더 큰지 비교 a > b
< 오른쪽 값이 더 큰지 비교 a < b
>= 왼쪽 값이 크거나 같은지 비교 a >= b
<= 오른쪽 값이 크거나 같은지 비교 a <= b

 

let height1 = 176.3
let height2 = 177.8

print("키 비교: \(height1 > height2)") // true, false로 출력됨

 

예를 들어 비밀번호 설정 로직에서 비밀번호, 비밀번호 확인 필드에 있는 값이 유효한지도 봐야하지만 서로 같은지 또한 봐야하는데 이럴 때 쓴다~

2.3 논리 연산자(Logical Operators)

연산자 설명 예제
&& AND (둘 다 참이어야 참) true && false -> false
! NOT (참을 거짓으로, 거짓을 참으로) !true -> false
|| OR (둘 다 거짓이어야 거짓) false || true -> true

 

if !emailField.text.isEmpty && validateEmail(emailField.text) {
	print("이메일 필드 유효성 검증 성공!")
}

뭐 요런 느낌으로 ... 쓴다.

 

 

2.4 할당 연산자(Assignment Operators)

연산자 설명 예제
= 값 할당 var x = 10
+= 더한 후 할당 x += 5 // x = x + 5
-= 뺀 후 할당 x -= 5 // x = x - 5
*= 곱한 후 할당 x *=2 // x = x * 2
/= 나눈 후 할당 x /= 2 // x = x / 2

 

var number = 10
number += 5
print("현재 값: \(number)")

 

 

2.5 응용

1. 값을 바꿔보면서 출력해봅시다~

var num1 = 12 // 후에 값을 한번 바꿔줄거니깐 var로 선언
let num2 = 7

let sum = num1 + num2
let difference = num1 - num2
let product = num1 * num2
let quotient = num1 / num2
let remainder = num1 % num2

print("덧셈: \(sum), 뺄셈: \(difference)")
print("곱셈: \(product), 나눗셈: \(quotient), 나머지: \(remainder)")

num1 = 15

let newSum = num1 + num2
let newDifference = num1 - num2
let newProduct = num1 * num2
let newQuotient = num1 / num2
let newRemainder = num1 % num2

print("덧셈: \(newSum), 뺄셈: \(newDifference)")
print("곱셈: \(newProduct), 나눗셈: \(newQuotient), 나머지: \(newRemainder)")

 

2. 성적 평가 프로그램

let score = 78

if score >= 90 {
    print("A 등급입니다!")
} else if score >= 80 {
    print("B 등급입니다!")
} else if score >= 70 {
    print("C 등급입니다!")
} else {
    print("더 노력하세요!")
}

 C 등급입니다! 가 출력되겠지요


3. 조건문 이해하기

3.1 if - else 문

  • 특정 조건이 참(true)이면 실행되고, 거짓(false)이면 다른 코드가 실행됨.
  • 단순한 조건을 확인할 때 주로 사용된다. (요런 쓰임새 알려주는거 좋네)
  • 한 가지 조건이 참일 경우와 그렇지 않을 경우의 두 가지 경우를 나누어 처리하고 싶을 때 유용합니다.
let temperature = 30

if temperature > 25 {
	print("더운 날씨입니다.")
} else {
	print("시원한 날씨입니다.")
}

 

temperature이 30이기에 25보다 크지요? 그러므로 if 조건에서 참으로 실행이 됩니다.

반대로 그 외 모든 경우엔 else 블록에 있는 코드들이 실행됩니다.

 

주로 참 혹은 거짓 딱 두 가지 경우로 나뉘는 상황에서 쓰임.

3.2 else if 문

  • 여러 개의 조건을 순차적으로 검사해야 할 때 사용된다.
  • 조건이 하나로 끝나는 것이 아니라, 추가적인 조건을 확인해야 할 경우에 적합하다.
let score = 85

if score >= 90 {
	print("A 등급입니다!")
} else if score >= 80 {
	print("B 등급입니다!")
} else {
	print("더 노력하세요!")
}

 

 

 

3.3 switch 문

  • 여러 경우의 고정된 값을 비교해야 할 때 사용된다.
  • 비교할 값이 많아질 경우 if-else if 문보다 코드가 깔끔해지고 가독성이 높아진다.
  • Swift의 switch문은 범위 값을 지원하므로 다양한 경우에 유용하다.
var errorMessage: String {
        switch self {
        case .invalidResponse:
            return "Invalid response from server"
        case .alreadyRegistered:
            return "이미 존재하는 유저입니다."
        case .tooManyRequestCode:
            return "이메일 인증 요청은 하루 최대 3회까지 요청할 수 있습니다.\n24시간 뒤에 다시 시도해주세요."
        case .failedToSendEmail:
            return "이메일 전송에 실패했습니다."
        case .notValidCode:
            return "유효하지 않은 인증 코드입니다."
        case .tooManyAttempts:
            return "이메일 인증 횟수 초과"
        case .unknownUser:
            return "알 수 없는 유저입니다."
        case .passwordAlreadyExists:
            return "비밀번호를 이미 설정하셨습니다."
        case .nicknameAlreadyExists:
            return "이미 설정된 닉네임입니다."
        case .passwordNotSet:
            return "비밀번호를 아직 설정하지 않으셨습니다."
        case .profileNameNotSet:
            return "프로필 이름을 아직 설정하지 않으셨습니다."
        case .serverError:
            return "Server error occured"
        case .networkError:
            return "Network error occured"
        case .unknown(let message):
            return message
        }
    }

enum이 같이 쓰이는 경우인데, 후에 이 방법 좀 많이 쓸 것 같다.

 

3.4 요약

  • if-else 문: 단순한 참/거짓 조건 처리
  • else if 문: 여러 개의 조건을 순차적으로 검사
  • switch 문: 고정된 값에 따라 다양한 경우를 처리할 때, 특히 조건이 많을 때.

3.4 응용

1. 나이에 따른 영화 관람 가능 여부

let age = 14

if age >= 19 {
    print("청소년 관람 불가 영화를 볼 수 있습니다.")
} else if age >= 13 {
    print("일반 영화는 볼 수 있지만 청소년 관람 불가 영화는 볼 수 없습니다.")
} else {
    print("보호자 동반이 필요합니다.")
}

 

2. 시험 점수에 따른 학점 부여

let score = 87
var grade = ""

if score >= 90 {
    grade = "A"
} else if score >= 80 {
    grade = "B"
} else if score >= 70 {
    grade = "C"
} else if score >= 60 {
    grade = "D"
} else {
    grade = "F"
}

print("점수: \(score)\n\(grade) 학점")

 

답안에선 직접 다 print해줬는데 그냥 다른 방식으로 한번 해보았다.

 


4. 반복문 이해하기

4.1 for-in 문

  • 가장 익숙한 반복문이다. 정해진 횟수만큼 반복해야 할 때 사용한다.
  • 배열(Array) 또는 범위(Range)의 요소를 순회할 때 사용한다.
    • 단, 반복 횟수가 미리 정해져 있어야 함.
    • 범위를 사용하여 특정 범위의 숫자를 반복할 수 있음.
let names = ["Alice", "Bob", "Charlie"]

for name in names {
    print("이름: \(name)")
}
for i in 1...5 {
	print("반복 \(i)회")
}

 

 

4.2 while 문

  • 반복 횟수가 정해져 있지 않고, 특정 조건이 참(true)일 동안 반복할 때 사용한다.
    • 루프를 실행하기 전 조건을 먼저 검사.
    • 조건이 거짓(false)이면 반복을 실행하지 않음.
  • 사용 사례
    • 반복 횟수를 미리 알 수 없을 때.
    • 사용자가 특정 조건을 만족할 때까지 반복해야 할 때.
    • 게임의 메인 루프처럼 계속 실행해야 할 때.
var number = 1

while number <= 10 {
    print("현재 숫자: \(number)")
    number += 1
}

 

 

 

var input = -1

while input != 0 {
    print("숫자를 입력하세요 (0을 입력하면 종료): ")
    if let userInput = readLine(), let num = Int(userInput) {
        input = num
    }
}

print("프로그램 종료")

 

오랜만에 저학년 때 C로 쓰던 코드 생각나네요

 

 

4.3 repeat-while 문

  • 최소 1회 실행이 보장된 상태에서 특정 조건이 참일 동안 반복할 때.
    • while 문과 달리, 먼저 실행한 후 조건을 검사.
    • 조건이 거짓(false)이더라도 한 번은 반드시 실행.
  • 사용 사례
    • 사용자 입력을 최소 한 번 이상 받아야 할 때.
    • 최소 한 번 실행이 필요한 루프(예: 로그인 시 비밀번호 입력).
    • 데이터를 처리한 후 조건을 검사해야 할 때.
// 1회 이상 실행 후 조건 검사
var count = 0

repeat {
    print("반드시 한 번 실행됩니다! (현재 count: \(count))")
    count += 1
} while count < 3

 

repeat 문은 이전에 몰랐는데 ...!

이러면 2까지는 실행된다~!

var password = ""

repeat {
    print("비밀번호 입력: ")
    password = readLine() ?? ""
} while password != "1234"

print("비밀번호가 맞습니다!")

 

요 예제는 Playground 특성상 readLine()이 안되는 게 있어서 New Project -> macOS - Command Line Tool로 생성해서 테스트할 수 있다고 한다.

 

4.4 응용

1~100 사이의 랜덤하게 정해져 있는 숫자를 사용자가 맞추는 게임.

let answer = Int.random(in: 1...100)
var guess = 0

while guess != answer {
    print("숫자를 입력하세요: ")
    if let input = readLine(), let num = Int(input) {
        guess = num
        if guess > answer {
            print("더 작은 숫자를 입력하세요!")
        } else if guess < answer {
            print("더 큰 숫자를 입력하세요!")
        } else {
            print("축하합니다! 정답입니다!")
        }
    }
}

 

기초 다질 겸 다시 한번씩 보는데 각 자료형이 몇 바이트를 차지하는지 배웠던 기억이 있는데 기억이 안나 오랜만에 검색해보았다.

나중에 효율적으로 메모리쓰려면 꼭 알아야된다는 생각이 있어서...!

 

이거 코드 블럭 테마도 바꿔줘야겠네,,

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

[TIL / 25.02.11] 사이드메뉴를 구현해보자 . . . !  (0) 2025.02.11
[TIL / 25.02.10] 헤더를 이용한 테이블뷰를 구성, 셀과 헤더 높이 자동 계산  (4) 2025.02.10
[TIL / 25.02.07] 라이브러리 사용해서 상단 탭바 구현하기 2  (0) 2025.02.07
[TIL / 25.02.06] 라이브러리 사용해서 상단 탭바 구현하기 1  (5) 2025.02.06
[TIL / 24.02.05] 함수의 기초 복습해봅시다 !  (5) 2025.02.05
'iOS/Swift' 카테고리의 다른 글
  • [TIL / 25.02.10] 헤더를 이용한 테이블뷰를 구성, 셀과 헤더 높이 자동 계산
  • [TIL / 25.02.07] 라이브러리 사용해서 상단 탭바 구현하기 2
  • [TIL / 25.02.06] 라이브러리 사용해서 상단 탭바 구현하기 1
  • [TIL / 24.02.05] 함수의 기초 복습해봅시다 !
subkyu-ios
subkyu-ios
subkyu-ios 님의 블로그 입니다.
  • subkyu-ios
    subkyu-ios 님의 블로그
    subkyu-ios
  • 전체
    오늘
    어제
    • 분류 전체보기 (46) N
      • iOS (30) N
        • Swift (30) N
      • 내일배움캠프 (7)
      • Git, Github (3)
      • Algorithm (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    최적화
    stackview
    프로그래머스
    협업
    Swift
    tabman
    ios
    Wil
    algorithm
    내일배움캠프
    사전캠프
    트러블슈팅
    til
    본캠프
    알고리즘
    KPT
    TableView
    github
    UIKit
    회고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
subkyu-ios
[TIL / 25.02.04] Swift의 기본 데이터 타입~반복문까지 복습!
상단으로

티스토리툴바