"
본문 바로가기
취미 생활/IOS 앱 만들기

SWIFT 기본 문법 독학 (변수, 상수, 데이터 타입, 문자열 보간법, 인덱스)

by 제이드마 2021. 7. 15.
728x90
반응형

SWIFT 기본 문법부터 공부 해 보려합니다. 비전공자이며 코딩은 모르는 사람입니다만 책과 인터넷 기초 강의 등을 보면서 독학으로 시작 예정입니다. 맥북에 xcode 프로그램 다운로드 하루 종일 걸렸네요..

SWIFT 에서 가장 먼저 알아두어야 할 부분은 대소문자를 구분한다는 것이며 " // " 는 소스코드 내에 주석을 남길 수 있습니다. " /* ~*/ " 범위를 지정하여 " / " 범위 내에 여러줄 설명 모두 주석으로 처리가 됩니다.

Lower Camel Case : function, method, variable, constant
ex) studentName .. studentAge ..

SWIFT의 모든 데이터 타입 이름은 첫 글자가 대문자로 시작하는 Upper 카멜케이스를 사용합니다.
Upper Camel Case : class, struct, enum, extension
ex) StudentName

1. print : 출력

제일 처음 만나는 것은 " print() " 함수 입니다. print ("안녕하세요!") 를 입력하면 신기하게도 안녕하세요! 라고 화면 출력 됩니다. 따옴표 내의 문자나 숫자 그대로 출력이 됩니다. 따옴표가 없이 숫자만 입력시에는 숫자가 출력 되나 문자는 무조건 따옴표가 있어야 출력 됩니다.

print("Hello World") // 따옴표 내의 문자를 그대로 출력
print("Hello", "World") // 따옴표 내의 문자 각각을 출력
print("Hello" + "World") // 따옴표 내의 문자끼리 더해서 출력, 뛰어쓰기가 없음
print("Hello" + "World") // 따옴표 내의 문자 그대로 출력
print("123", "456") // 따옴표 내의 숫자 각각을 출력
print("123" + "456") // 따옴표 내의 숫자끼리 문자로 인식하여 더해서 출력, 뛰어쓰기가 없음
print("123+456") // 따옴표 내의 숫자 그대로 출력, 뛰어쓰기가 없음
print(123+456) // 괄호내의 숫자를 연산하여 출력

실행 결과

print 결과

2. var, let : 변수와 상수

변수와 상수를 이용하여 프로그램에서 사용되는 데이터를 메모리에 임시 저장합니다. 변수와 상수는 특정 데이터 타입에 해당하는 값의 이름입니다. 변수는 생성 후 데이터 값을 변경할 수 있지만 상수는 한번 값을 설정하면 변경 불가합니다. let 은 상수을 선언하여 생성합니다. var 은 변수를 선언하여 생성합니다. 변수명은 영문으로 시작, 숫자나 특수문자로 시작하면 안됨, _는 사용가능합니다.

var [변수명]: [데이터 타입] = [값]
let [상수명]: [데이터 타입] = [값]
let message: String = "Hello World"
print(message)
-> Hello World // 상수 message 가 String 문자열로 타입 지정되었고 값은 " Hello World " 이므로 Hello World 출력

let message = "Hello World!"
let message2 = "안녕하세요"
print(message)
print(message2)
print(message, message2)
print(message+message2)

변수는 한번 선언 후 변경이 가능합니다.
var message3 = "Hellow World!"
message3 = "안녕하세요!"
message3 = "미안합니다."
print(message3) // 안녕하세요! 로 선언 후 미안합니다. 로 변경 되었습니다.

실행 결과

상수, 변수 선언 결과

3. Data Type : 데이터 타입

데이터 타입은 프로그램 내에서 다뤄지는 데이터의 종류를 말하는 것입니다. 변수를 생성할 때 데이터 타입을 생략하면 컴파일러가 변숫값의 타입을 추론하여 타입을 저장합니다. 애플은 이런 타입 추론을 스위프트의 강력한 기능이라 소개하고 있습니다. 기존 프로그램에 익숙한 개발자는 이런 추론 기법이 오히려 혼란을 초래할 수 있어서 처음부터 타입을 명확히 변수나 상수에 지정하여 코딩하는 것이 오류가 발행했을 때 찾기가 쉬울 수 있다고 합니다.

기본 데이터 타입 및 종류
String(문자열), Int(정수), Double(실수), Bool(참과거짓), Character(문자), UInt(부호없는 정수), Float(실수)

String : 문자열 타입 따옴표 사용 " "
Int : 정수 타입이며 기본 64비트 정수형입니다. + - 부호를 포함한 정수를 뜻하며 - 부호를 포함하지 않는 0을 포함한 양의 정수는 UInt로 표현합니다.
Double : 실수 타입이며 기본 64비트 부동 소수형입니다. 큰 소수점일 때 사용합니다.
ex) 0.000000000000000000000000000000000000000 X
Bool : true와 false (참, 거짓) 만을 값으로 가지는 타입입니다.
Character : 문자 타입이며 따옴표 사용 " ", 하나의 문자형태입니다.
UInt : 양의 정수 타입이며 기본 64비트 양의 정수형입니다.
Float : 실수 타입이며 기본 32비트 부동 소 수형입니다. 작은 소수점일 때 사용합니다. ex) 0.0000000
4. 변수와 상수 선언
변수 선언 : var [변수명]: [데이터 타입_대문자로 시작하는 이름] = [값]
상수 선언 : let [상수명]: [데이터 타입_대문자로 시작하는 이름] = [값]

i. 정수의 상수 선언

let intLetNum1 : Int = 100
let intLetNum2 = 200 // 정수 " int " 타입 설정없이 추론 방법으로 선언
let intLetNum3 : Int
intLetNum3 = 300
let sum: Int = (intLetNum1 + intLetNum2 + intLetNum3)
let sum2 = (intLetNum1 + intLetNum2 )
print(sum)
print(sum2)
print(sum - sum2)

실행 결과

정수의 상수 선언 후 결과

ii. 정수의 변수 선언

var intVarNum1 : Int = 123
var intVarNum2 = 456
intVarNum2 = 567 // 변수 선언 후 재 선언 가능
print(intVarNum2)

let sum: Int // 상수 선언 후 값 할당 가능
let inputA = 100
let inputB = 200
sum = inputA + inputB
print(sum)

실행 결과

정수의 변수 선언 결과

iv. 문자열 선언 후 출력

var nickName : String
nickName = "유비"
nickName = "관우"
print(nickName)

v. 한줄에 선언하기
var aNum = 9, bNum = 10
print(aNum, bNum)

실행 결과

문자열 선언 결과

vi. 문자열 보간법

프로그램 실행 중 문자열 내에 변수 또는 상수의 값을 표현하기 위해 역 슬래쉬 " \() " 를 사용합니다.

let studentName = "홍길동"
print("name : " + studentName)
print("name : ", studentName)
print("name : \(studentName)")
let age: Int = 10
print("저는 \(age) 살입니다.")

실행 결과

문자열 보간법 실행 결과

예제 )
1. 구매 내역 출력
var price = 300 // 단가
var cnt = 5 // 개수
var total = price * cnt
print ("초코파이 가격은 \(price)이고 수량은 \(cnt)를 구매하여 구매금액은 \(total)입니다.")

// 회원 정보를 구현할 때 사용
// id: 문자열, 암호:문자열, 나이:정수, 키(신장):실수, 결혼 유무: Bool, 성별:문자
//변수를 먼저 선언

var id: String, pw: String
var age: Int
var height: Double
var marriage: Bool
var gender: Character

//변수에 Data를 적용
id = "asdf"
pw = "12345"
age = 24
height = 175.2
marriage = false
gender = "남"
print(id, pw, age, height, marriage, gender)

실행 결과

변수에 각 데이터 타입 적용 결과

4. 여러줄 문자열

nameString = """ 여러 줄 문자열을 사용할 때는 겹 따옴표 세 개를 처음 적용하고 끝까지 가서 줄바꿈 후 문자 추가하고 겹따옴표 세개를 적용 """

var someString = """
12345
abcde
가나다라마
"""
print(someString)

var welcome: String = "안녕하세요"
welcome.append("!")
print(welcome)


실행 결과

여러줄의 문자열을 표현 결과

5. 변수에 문자열을 추가 수정

" + " 로 " " 문자열을 넣어주어도 되고 변수 값에 " += "으로 추가 문자를 입력해도 가능합니다. 그리고 ". append " 코드를 사용해도 문자열 바로 뒤에 추가가 됩니다.

var variableString = "Horse"
//variableString = variableString + "and Carriage"
variableString += "and Carriage"
print(variableString)

let string1 = "hello"
let string2 = "there"
var welcom = string1 + string2
print(welcom)

var instruction = "look over"
instruction += string2
print(instruction)

var welcome: String = "안녕하세요"
welcome.append("!")
print(welcome)

실행 결과

변수에 문자열 추가 수정 결과

6. 실수형 계산

let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)" // 보간법 " 역 슬래쉬 \() " 로 문자열 내에 상수 값을 표현하고 있고 multiplier 타입을 일시적으로 Double로 변경하여 곱셈 " * " 기호로 계산한 결과 값입니다.
print(message)

8. 문자 갯수 세기

" str.count " 로 문자 길이 를 셀 수가 있습니다.
let str = "12345,6789"
print("str has \(str.count) charcters")

9. 문자열 인덱스

" .startIndex " , ". endIndex " 로 문자열의 문자를 인덱싱 할 수 있습니다.
let greeting = "Guten Tag!"
print(greeting[greeting.startIndex])
-> G // Guten Tag! 의 첫 번째 문자를 표현했습니다.
print(greeting [greeting.index(before:greeting.endIndex)])
->! // Guten Tag! 의 마지막 문을 표현했습니다.
print(greeting [greeting.index(after:greeting.startIndex)])
-> u // after을 사용하여 Guten Tag! 의 첫 번째 문자 다음 문자를 표현했습니다.

실행 결과

실수 계산, 문자열 갯수 세기, 문자 인덱싱 결과의 값

10. 문자열 삽입과 삭제

". insert " , ". remove " 로 문자열의 문자를 인덱싱하여 삽입하거나 삭제할 수 있습니다.
var welcome1 = "hello"
welcome1.insert("!", at: welcome1.endIndex)
print(welcome1)
-> hello! // 변수 welcome1 값 hello에 ". insert " 로 "! " 를 " at: " 위치 지정으로 welcome1 인덱스의 끝에 삽입되었습니다.

welcome1.insert(contentsOf: "there", at: welcome1.index(before: welcome1.endIndex))
print(welcome1)
-> hellothere! // 변수 welcome1 값 hello 에 " .insert " 로 " there " 를 " at: " 위치 지정으로 " before: " welcome1 인덱스 마지막 문자 이후에 삽입되었습니다.

welcome1.remove(at: welcome1.index(before: welcome1.endIndex))
print(welcome1)
-> hellothere // 변수 welcome1 값 hello 에 " .insert " 로 " ! " 를 " at: " 위치 지정으로 welcome1 인덱스의 끝 " ! " 문자가 삭제되었습니다.

문자열 삽입과 삭제 결과

취미 삼아 시작한 SWIFT 문법 공부 첫발을 내딪은 느낌입니다. 기본 문법에 대해서는 강의도 있겠지만 개인 블로그에 기록함으로써 언제든 다시 찾아 볼 수 있을 듯 하고 찾아보시는 분도 도움이 될지도 모르겠네요. 사실 유능한 강사님의 설명이 최고일 듯 하지만 시간을 두고 신생아 수준의 이해 가능한 정도로 공부 해볼 계획입니다.

“부의 추월차선” 책 글귀를 되새깁니다

" 당신이 할 수 있는 최고의 투자는 당신 자신에 대한 투자다. 교육에 기꺼이 투자해라. 그렇지 않으면 훗날 훨씬 더 큰 대가를 치를 준비를 해야 할 것이다. 오늘 당신이 내린 결정은 당신의 재정적 미래를 결정한다. "

반응형

댓글