본문 바로가기
ios 개발 일지

[패스트 캠퍼스] [나만의 IOS 앱 개발 입문] [iOS 개발강의] 1주차 학습일지

by IGBR 2021. 12. 28.

시작 계기

원래 Java로 안드로이드 앱 개발을 하였지만 최근 들어 IOS 앱 개발에 관심이 들어 K- 디지털 크레딧을 활용하여 패스트 캠퍼스의 '나만의 IOS 앱 개발 입문'을 신청하였다.

 총 5주 차로 이루어진 온라인 동영상 강의 시스템이며 슬랙을 활용한 질문, 코드 리뷰 등이 매력적으로 다가와서 신청하게 되었다.

 또한 그냥 강의만 보며 코드만 따라 쓰기엔 전혀 공부가 안된다는 사실을 알기에 주차 별로 학습 일지를 작성하기로 하였다. 


 1주 차

 

- Swift에 관하여

출처: 애플 디벨로퍼 사이트

손쉽게 학습할 수 있는 강력한 프로그래밍 언어
Swift는 macOS, iOS, watchOS, tvOS를 위한 강력하고 직관적인 프로그래밍 언어입니다. Swift 코드 작성은 대화식으로 재미있고, 구문은 간결하면서도 표현력이 풍부하며, Swift에는 개발자들이 좋아하는 첨단 기능이 포함되어 있습니다. Swift 코드는 안전하게 설계되었으며 빛의 속도로 빠르게 실행되는 소프트웨어도 제작할 수 있습니다.

위 내용은 애플 디벨로퍼 사이트에 있는 Swift 소개 글이다.

세줄 짜리 짧은 글이지만 Swift의 본질을 잘 설명하였다. 

 

1. 강력하고 직관적

2. 대화식 코드 

3. 첨단 기능 내포

4. 안정성

5. 빠른 속도 (언어 이름 자체가 Swift : 빠른 이다. )

 

- Swift Playground

Xcode 에서 Swift 프로그래밍 언어를 위한 손쉽게 실행 결과를 확인할 수 있는 개발 툴

 

 앞으로 Swift의 문법 공부나 테스트 코드를 사용할 때 자주 사용할 것이다. 

 

필자는 단축키를 활용하는 것을 중요하게 생각하기 때문에 자주 사용할 것 같은 단축키를 정리해 보았다.

 

새 파일 열기 : command + N
파일 저장 : command + S
현재 행까지 실행 : shift + return
모든 행 실행 : command + shift + return
찾기 : command + shift + f
변수명 한 번에 바꾸기 : control + command + E

등등... 추후 또 중요하거나 요긴하게 사용될 단축키가 있다면 추가 예정

- 기본 문법

 

변수 선언 키워드 'var'과 상수 선언 키워드 'let'

var 이름 = 값
let 이름 = 값

var variable : String = "추후 값 변경이 가능한 변수 var"
let constant : String = "추후 값 변경이 불가능한 상수 let"

variable = "변수는 추후 값 변경이 가능하지만"
// constant = "상수는 추후 값 변경이 불가능 합니다." -> 그대로 실행하게 되면 컴파일 오류가납니다.

let sum: Int
let inputA : Int = 10
let inputB : Int = 20

// 선언 후 에 첫 할당은 가능합니다.
let sum = inputA + inputB

// sum = 30  ->그 이후 두번째 할당 부터는 컴파일 오류가 납니다. (물론 변수는 여러번 가능합니다.)

여러 가지 타입들

Bool 

true와 false 만을 값으로 가지는 타입, 0과 1을 넣을 수도 없다.

var myBool : Bool = true
myBool = false
// myBool = 1 -> 컴파일 오류가 발생한다.

Int 

정수 타입이며 64비트의 플랫폼에는 64비트의 정수형

var myInt: Int = -100
// myInt = 100.1  -> 정수형이기 때문에 실수형을 값으로 넣으면 컴파일 오류가 난다.

UInt

정수 중 양의 정수를 취급하는 타입이며 64비트의 플랫폼에서 64비트의 양의 정수형

var myUInt: UInt = 100
// myUInt = -100 -> 양의 정수만 취급하기 때문에 음수인 -100은 컴파일 오류를 일으킨다.

Float

실수 타입이며 32비트의 부동소수형

var myFloat: Float = 3.14
myFloat = 3

Double

실수 타입이며 64비트의 부동소수형

var myDouble : Double = 3.14
myDouble = 3
// myDouble = myFloat  -> 컴파일 오류가 발생한다.

Character

문자 타입이며 유니코드를 사용한다(때문에 이모지 사용과 다국어가 사용 가능) 큰따옴표("")로 표현

var myCharacter : Character = "a"
myCharacter = "A"
myCharacter = "😀"
// myCharacter = "AAA" -> 컴파일 오류가 발생한다.

String

문자열 타입이며, 유니코드를 사용한다. 큰따옴표("")를 사용 여러 줄을 사용 할시엔 큰따옴표를 3개 사용한다(""")

var myString: String = "Swift 프로그래밍"
mySring += " 재밌네요!😎"
print(myString) //"Swift 프로그래밍 재밌네요!😎"를 출력한다.
// myString = myCharacter -> 컴파일 오류가 발생한다.

myString ="""
여러줄인 문자열을 사용하고 싶으면
이런식으로 앞에 큰따옴표 3개를 사용하고 줄바꿈
글자를 전부 작성하고 줄바꿈을 한뒤
큰따옴표를 3개 사용하면 됩니다.
"""

/*
myString = """이렇게 쓰면
안돼요"""
*/

tuple

tuple은 다양한 값(데이터)의 묶음이다. 서로 다른 타입도 가능하고 개수도 사용하고 싶은 만큼 사용할 수 있다.

var myTuple : (String, Int, Bool) = ("Moon" , 100, true)
var simpleTuple = ("SangHyun", 200, false) // 추론을 통한 데이터 타입 생략하는 방법

print(myTuple.0) // Moon 출력

// 이런식으로 인덱스를 명시적으로 사용이 가능하다.
var coordinateTuple = (x: 2, y:4)
print(coordinateTuple.x) // 2 출력

Scope

변수가 사용되는 범위 , 변수 접근 규칙

1. 동일한 스코프의 변수와 상수에 접근할 수 있다.

2. 동일한 스코프에서는 이전에 선언한 변수와 상수에 접근할 수 있다.

3. 로컬 스코프에서는 자신의 상위 스코프의 변수와 상수에 접근할 수 있다.

4. 상위 스코프에서는 하위 스코프에 접근할 수 없다. 

5. 서로 다른 스코프의 동일한 상수와 변수가 존재한다면 가장 인접한 곳에 있는 변수와 상수에 접근 할 수 있다.

 

func mySalary() {
var hours = 50
let payPerHour = 10000
var salary = 0

if hours > 40 {
let extraHours = Hours - 40
    salary += extraHours * payPerHour * 2
    hours -= extraHours
}

salary += hours * payPerHour
// extraHours는 if절의 로컬 변수이기 때문에
// 이곳에서 extraHours 라는 상수에 접근 할 수 없다.
print(hours)
}

Flow Control

 

if else 구문

if는 단독적으로도 사용이 가능하고, else if, else와도 같이 사용 가능하다. if 뒤의 조건 값에는 Bool 타입의 값만 위치해야 하며, 조건 값을 감싸는 소괄호는 선택사항이다.

if 조건 {
	// 실행 구문
} else if 조건 {
	// 실행 구문
} else {
	// 실행 구문
}
let height = 175

if height < 120 {
	print("키가 120cm 미만입니다.")
} else if height < 150 {
	print("키가 150cm 미만 입니다.")
else {
	print("키가 150cm 이상입니다.")
}

while

조건이 참일 시 구문이 실행됨

while 조건 {
	// 조건이 참일 때 실행되는 구문
}
var i = 0
while i < 10 {
	print(i)
 	i+=1
}    
// 0 1 2 3 4 5 6 7 8 9 출력

repeat

while과 다르게 일단 구문을 실행하고 나서 조건을 따짐 C언어의 do while과 유사함

var i = 10
repeat {
	print(i)
	i += 1
} while i < 10

// 10 출력  -> 조건엔 맞지 않지만 한번은 꼭 실행하므로 10을 출력하게된다.

for - in

for item in items {
	// 실행구문
}
let closedRange = 0...10 // 0 부터 10을 포함하여 저장 , 10까지
let halfClosedRange = 0..<10 // 0부터 10을 포함하지 않고 저장 9까지
var sum = 0

for i in closedRange {
	print(i)
    sum += i
}
print("total : \(sum)") // total : 45 출력

for - in - where

let closedRange = 0...10

for i in closedRange where i % 2 == 0 {
	print("짝수: \(i)")
}

// 2 4 6 8 10 출력

switch

모든 값을 특정 case에서 처리를 할 수 없기 때문에 default 사용이 필수적이다. (default 없으면 에러 발생)

let num = 10

switch num {
case 0 :
	print("0 입니다.")
case 0...10 : 
	print("0 ~ 10 사이 입니다.")
case 10:
	print("10 입니다.")
default : 
	print("나머지 입니다.")
}

// '0 ~ 10 사이 입니다.' 출력

하나의 case 구문에 여러 가지를 넣을 수 있다.

let animal = "tiger"

switch animal {
case "dog","cat" :
	print("애완 동물이네요?")
default :
	print("혹시 야생 동물인가요?")
}

tuple도 case에 사용이 가능하다. 

var coordinate = (x: 10, y: 10)

switch coordinate{
case (0,0):
	print("원점이네요")
case (_,0):
	print("x축 위에 있네요")
case (0,_):
	print("y축 위에 있네요")
default:
	print("어딘가에 있네요")
}
// '어딘가에 있네요' 출력
var coordinate = (x: 0,y: 3)

switch coordinate{
case (0,0) :
	print("원점이네요")
case (let x, 0) :
	print("x축 위에 있네요 x: \(x)")
case (0, let y) :
	print("y축 위에 있네요 y: \(y)")
case (let x , let y) where x == y:
	print("x랑 y랑 같네요 x,y = \(x), \(y)")
case (let x, let y):
	print("어딘가에 위치하네요 x,y = \(x) , \(y)")
}

// 'y축 위에 있네요 y : 3

이렇게 1주 차 swift의 기본 문법과 flow control(흐름 제어)까지의 내용이 끝났다 5주 차 중 1주 차가 벌써 끝났다.

 강의를 쭉 들었을 땐 생각보다 이해가 더뎠지만 블로그에 정리하며 내 머릿 속도 똑같이 정리가 되었다.

 항상 열심히 하여 5주 동안 swift의 기본기를 잘 배워갔으면 한다. 

댓글