Swift 기본 문법 - 1

강남준·2023년 1월 16일
0
post-thumbnail

2진법에서 음수를 표현하는 방식

	구하고자 하는 수의 보수에 1을 더해주는 방식으로 구한다.
    0010 1010 = 42 
    1101 0101 + 1 -> 1101 0110 = -42 
    두 수를 더하면 1000 0000이 되고 첫번째 비트는 부호 비트이므로 무시한다. 

대문자와 소문자 구분

소문자 : 키워드 대부분, 변수(속성), 함수(메서드)
대문자 :  커스텀타입(클래스, 구조체, 열거형), 프로토콜

타입의 종류

변수(variable) : 데이터(자료)를 담을 수 있는 공간(바구니)
상수(constants) : 변하지 않는 데이터(자료)를 담을 수 있는 공간
Int : 정수타입 -> 8바이트
Float : 실수타입/부동소수 타입 -> 6자리/4바이트
Double : 실수 타입 -> 15자리/8바이트 (Swift에서 주로 사용)
Character : 문자
String : 문자열 (Swift에서 주로 사용)
Bool : true or false를 저장
*Swift는 모든 타입의 첫글자에 대문자 사용
타입 주석 : var name: String = "홍길동"
타입 추론 : var name = "홍길동"
타입 안정성 : var number = 12 (Int)
		   number = 3.14 (Double) -> 할당되지 않는다.

타입 애일리어스(Type Alias)

기존 선언되어 있는 타입, 내가 만든 타입 등에서 새로운 이름을 붙여 가독성을 높인다. 
typealias Name = String -> StringName이라고 할 수 있다.

용어 정리

개 념정 의예 시
키워드약속어 - 의미있는 단어로 사용하기로 약속한 단어var, let, for, true
리터럴문자(데이터) 그 자체"홍길동" (문자열 리터럴)
3.14 (Double 리터럴)
식별자변수, 상수, 함수 정의 타입의 이름var "name" = "홍길동"
표현식값, 변수, 연산자 조합으로 하나의 결과값으로 평가되는 코드 단위number + 7
문장특정작업을 실행하는 코드 단위print(name)

연산자

나누기 연산자(/) : 정수끼리는 몫 **Double(4/5) != Double(4) / Double(5)
복합 할당 연산자 : value += 10 [-=, *=, /=, %=]
비교 연산자 : 10 <= n <= 100  -> (10 <=n) && (n<= 100)
논리 연산자 : !, ||, &&
삼항 연산자 : conditioin(Boolean) ? print("참") : print("거짓")
범위 연산자 : 1...(정수 1 이상), 1...10(정수 1이상 10이하), 1..<10(정수 1이상 10미만)
패턴매칭 연산자 : 1...9 ~= age 오른쪽에 있는 표현식이 포함되는 지에 따라 Boolean 리턴

switch문

var num = 104

switch num {
case let x where x % 3 == 0:
    print("0")
case let x where x % 3 == 1:
    print("1")
case let x where x % 3 == 2:
    print("2")
default:
    break
}

튜플

원하는 연관된 데이터의 조합으로 저장

let iOS = (language: "swift", version: 5.3)
// iOS.0, iOS.version 으로 접근 가능

switch iOS {
case let (_,y) where y == 5.3:
    print("최신 버전입니다.")
    fallthrough
case ("swift",_) :
    print("언어: swift")
default:
    break
}

최신 버전입니다.
언어: swift

for문

for i in stride(from: 1, to: **15, by: 2) {
	print(i) // **15미만, 1~13까지 출력
}

제어전송문

continue : 반복문에서 다음 주기로 넘어가서 계속함을 의미
break : 반복문을 아예 중지


연습문제

for j in 1...5{
    for _ in 1...j {
        print("🐰", terminator: "")
    }
    print()
}

🐰
🐰🐰
🐰🐰🐰
🐰🐰🐰🐰
🐰🐰🐰🐰🐰

for j in (1...5).reversed() {
    for _ in 1...j {
        print("🐰", terminator: "")
    }
    print("")
}
🐰🐰🐰🐰🐰
🐰🐰🐰🐰
🐰🐰🐰
🐰🐰
🐰

for i in 1...5 {
    for j in 1...5 {
        if i > j {
            print("  ", terminator: "")
        } else {
            print("🐰", terminator: "")
        }
    }
    print("")
}
🐰🐰🐰🐰🐰
  🐰🐰🐰🐰
    🐰🐰🐰
      🐰🐰
        🐰

for i in (1...5).reversed() {
    for j in 1...5 {
        if i > j {
            print("  ", terminator: "")
        } else {
            print("🐰", terminator: "")
        }
    }
    print("")
}
        🐰
      🐰🐰
    🐰🐰🐰
  🐰🐰🐰🐰
🐰🐰🐰🐰🐰
profile
안녕하세요:)

0개의 댓글