처음부터 차근차근

Swift 문법 복습2 본문

프로그래밍/Swift

Swift 문법 복습2

_soyoung 2022. 3. 18. 15:59
반응형
for i in 1..<10 {
    if i > 5 { // 중요!! 에러 수정 과제: if 다음에는 반드시 괄호가 필요하다
        break
    }
    print(i)
}
//결과
//1
//2
//3
//4
//5



func printName (firstName:String, lastName:String?){
    // if let
    if let lName = lastName { // lastName이 nil이 아니면
        print(lName,firstName)
    }else {
        print("성이 없네요!")
    }
    // guard let
    guard let lName = lastName else { // lastName이 nil이면
        print("성이 없네요!")
        return // early exit
    }
    print(lName ,firstName)
}
printName(firstName:"길동", lastName:"홍")
printName(firstName:"길동", lastName:nil)
//결과 
//홍 길동
//홍 길동
//성이 없네요!
//성이 없네요!
// if let과 guard let의 차이점
// if let은 참일 때(nil이 아닐 때) 실행
// guard let은 거짓일 때(nil 일 때) 실행



let anotherCharacter: Character = "a"
switch anotherCharacter {
case "a": // 아래에 내용 안쓰면 오류남
case "A":
    print("The letter A")
default:
    print("Not the letter A")
}



과제 : switch-case문으로 변경하기
let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001) // kg/m*m
var body = ""
switch bmi {
case 40... :
    body = "3단계 비만"
case 30..<40 : 
    body = "2단계 비만"
case 25..<30 : 
    body = "1단계 비만"
case 18.5..<25 : 
    body = "정상"
default : 
    body = "저체중"
}
print("BMI:\(bmi), 판정:\(body)")
//결과
//BMI:20.761245674740483, 판정:정상



var numbers: [Int] = [1, 2, 3, 4, 5]
for num in numbers where num > 3 {
    print(num)
}
//결과
// 4
//5



func sayHello() { //->Void 생략
    print("Hello")
} //정의
sayHello() // 호출
//결과
// Hello
// add 함수 변경하기



func add(x: Int, y: Int) -> Int { 
    return(x+y)
}
add(x:10, y:20)
print(type(of:add)) // 과제 : add함수의 자료형은? (Int, Int) -> Int
// 결과 
// (Int, Int) -> Int



func min(a:Int, b:Int) -> Int {
    return (a - b)
}
print(min(a:100, b:10))
func min(num1 a:Int, num2 b:Int) -> Int {
    return (a - b)
}
print(min(num1:100, num2:10))
func min(_ a:Int, _ b:Int) -> Int {
    return (a - b)
}
print(min(100, 10))
func min(_ a:Int, num b:Int) -> Int {
    return (a - b)
}
print(min(100, num:10))
//결과
// 90
//90
//90
//90
Swift 함수 실습과 함수의 type은? (과제:매우 중요)
과제 : 4가지 add함수의 함수명
func min(a:Int, b:Int) -> Int {
    print(#function) 
    return (a - b)
}
print(min(a:100, b:10))
print(type(of:min))
func min(num1 a:Int, num2 b:Int) -> Int {
    print(#function) 
    return (a - b)
}
print(min(num1:100, num2:10))
func min(_ a:Int, _ b:Int) -> Int {
    print(#function) 
    return (a - b)
}
print(min(100, 10))
func min(_ a:Int, num b:Int) -> Int {
    print(#function) 
    return (a - b)
}
print(min(100, num:10))
//결과
// min(a:b:)
//90
//(Int, Int) -> Int
//min(num1:num2:)
//90
//min(_:_:)
//90
//min(_:num:)
//90
import Foundation 
let weight = 60.0
let height = 170.0
let bmi = weight/(height*height*0.0001)// kg/m*m 
let shortenedBmi = String(format: "%.1f", bmi) 
var body = ""
if bmi >= 40 { 
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
body = "정상"
} else {
body = "저체중"
}
print("BMI:\(shortenedBmi), 판정:\(body)")
//결과
//BMI:20.8, 판정:정상



import Foundation
func calcBMI(weight : Double, height : Double) -> String{
    let bmi = weight / (height*height*0.0001) // kg/m*m 
    let shortenedBmi = String(format: "%.1f", bmi) 
    var body = ""
    if bmi >= 40{ 
        body = "3단계 비만"
    } else if bmi >= 30 && bmi < 40 {
        body = "2단계 비만"
    } else if bmi >= 25 && bmi < 30 {
        body = "1단계 비만"
    } else if bmi >= 18.5 && bmi < 25 {
        body = "정상"
    } else {
        body = "저체중"
    }
    return "BMI:\(shortenedBmi), 판정:\(body)"
    }
print(calcBMI(weight:60.0, height: 170.0)) //”BMI:20.8, 판정:정상” 이 출력됨
//결과
// BMI:20.8, 판정:정상



과제: swift print format으로 구글링하여 소수점 3자리에서 반올림
과제 : 가감승제,나머지까지 나오도록 소스 수정
과제 : 이 함수의 자료형은? (Int, Int) -> (sum: Int, sub: Int, div: Double, mul: Int, rem: Int)
import Foundation
func sss(x : Int, y : Int) -> (sum : Int, sub : Int, div : Double, mul : Int, rem : Int)
{
    let sum = x + y
    let sub = x - y
    let div = Double(x) / Double(y) 
    let mul = x * y
    let rem = x % y
    return (sum, sub, div, mul, rem)
}
var result = sss(x:10,y:3)
print(result.sum)
print(result.sub)
print(String(format: "%.3f", result.div))
print(result.mul)
print(result.rem)
print(type(of:sss))
//결과
//13
//7
//3.333
//30
//1
//(Int, Int) -> (sum: Int, sub: Int, div: Double, mul: Int, rem: Int)



과제: 임의의 개수의 정수 값의 합을 출력하는 함수를 작성하여 호출해보시오.
func sumNumbers(numbers: Int...)
{
    var sum = 0
    for number in numbers {
        sum += number
    }
    print("합은 \(sum)")
}
sumNumbers(numbers: 10, 200, 300, 20) 
sumNumbers(numbers: 1, 2)
//결과
//합은 530
//합은 3



func up(num: Int) -> Int {
    return num + 10
}
func down(num: Int) -> Int {
    return num - 10
}
let toUp = up 
print(up(num:10))
print(toUp(10)) // 결과가 같음
let toDown = down 
func upDown(Fun: (Int) -> Int, value: Int) { 
    let result = Fun(value)
    print("결과 = \(result)")
}
upDown(Fun:toUp, value: 10) //toUp(10)
upDown(Fun:toDown, value: 10) //toDown(10)
func decideFun(x: Bool) -> (Int) -> Int { 
    //매개변수형 리턴형이 함수형
    if x {
        return toUp
    } else {
        return toDown
    }
}
let temp = decideFun(x:false)
print(type(of:temp)) //(Int) -> Int
print(temp(10)) // == toDown(10)
//결과
//20
//20
//결과 = 20
//결과 = 0
//(Int) -> Int
//0



func add(x: Int, y: Int) -> Int {
    return(x+y)
}
print(add(x:10, y:20))
let add1 = { (x: Int, y: Int) -> Int in
    return(x+y)
}
print(add1(10, 20)) // 매개변수명 없어야 함
print(add1(10, 20)) //OK
print(type(of:add1)) //과제 : (Int, Int) -> Int 
// 결과
//30
//30
//30
//(Int, Int) -> Int



let multiply = {(val1: Int, val2: Int) -> Int in
    return val1 * val2
}
var result = multiply(10, 20)
print(result)
//결과
//200



let multiply = {(val1: Int, val2: Int) -> Int in
    return val1 * val2
}
var result = multiply(10, 20)
print(result)
let add = {(val1: Int, val2: Int) -> Int in
    return val1 + val2
}
result = add(10, 20) 
print(result)
func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int {
    return cal(x, y)
}
result = math(x: 10, y: 20, cal: add)
print(result)
result = math(x: 10, y: 20, cal: multiply)
print(result)
result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) -> Int in
    return val1 + val2
}) //클로저 소스를 매개변수에 직접 작성
print(result)
result = math(x: 10, y: 20) {(val1: Int, val2: Int) -> Int in
    return val1 + val2
}//trailing closure
print(result)
//결과
// 200
//30
//30
//200
//30
//30



func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int {
    return cal(x, y)
}
var result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) in
    return val1 + val2
}) //리턴형 생략
print(result)
result = math(x: 10, y: 20) {(val1: Int, val2: Int) in
    return val1 + val2
} //trailing closure, 리턴형 생략
print(result)
result = math(x: 10, y: 20, cal: {
    return $0 + $1
}) //매개변수 생략하고 단축인자(shorthand argument name)사용
print(result)
result = math(x: 10, y: 20) {
    return $0 + $1
} //trailing closure, 매개변수 생략하고 단축인자사용
print(result)
result = math(x: 10, y: 20, cal: {
    $0 + $1
}) //클로저에 리턴값이 있으면 마지막 줄을 리턴하므로 return생략
print(result)
result = math(x: 10, y: 20) { $0 + $1 } //return 생략
print(result)
//결과
// 30
//30
//30
//30
//30
//30



class Man{
    static var age : Int = 10 // 타입 프로퍼티
    var age : Int = 22
    var weight : Double = 50.5
    func display(){
        print("나이=\(age), 몸무게=\(weight)")
    }
    static func sayHi(){ // 타입 메서드
        print("hi")
    }
}
var kim : Man = Man()
kim.display() 
print(kim.age)
print(Man.age)
Man.sayHi()
//결과
// 나이=22, 몸무게=50.5
//22
//10
//hi

 

 

함수명

tableView(_:numberOfRowsInSection:)

 

tableView(_:cellForRowAt:)

 

application(_:didFinishLaunchingWithOptions:)

 

application(_:configurationForConnecting:options:)

 

application(_:didDiscardSceneSessions:)

 

 

 

 

 

출처 : iOS프로그래밍실무(22-1학기)한성현교수 강의 내용 변형 및 요약

반응형

'프로그래밍 > Swift' 카테고리의 다른 글

Swift 문법 복습4  (0) 2022.03.29
Swift 문법 복습3  (1) 2022.03.26
Swift 문법 복습1, json 정리 사이트  (0) 2022.03.17
강의 내용 정리  (0) 2021.11.29
12주차 정리  (0) 2021.11.22
Comments