BMI 계산 결과 판정
let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001) // kg/m*m
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:\(bmi), 판정:\(body)")
> 함수로 만들기
Swift 문자열 서식(swift string format 자리수)
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 를 판정하는 calcBMI()함수 정의
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 : 62.5, height : 172.3))
if~else를 switch~case로
import Foundation
func calcBMI (weight : Double, height : Double) { //Void형
let bmi = weight / (height*height*0.0001) // kg/m*m
let shortenedBmi = String(format: "%.1f", bmi)
switch bmi {
case 0.0..<18.5:
print("BMI:\(shortenedBmi),판정:저체중")
case 18.5..<25.0 :
print("BMI:\(shortenedBmi),판정:정상")
case 25.0..<30.0 :
print("BMI:\(shortenedBmi),판정:1단계 비만")
case 30.0..<40.0 :
print("BMI:\(shortenedBmi),판정:2단계 비만")
default :
print("BMI:\(shortenedBmi),판정:3단계 비만")
}
}
calcBMI(weight:62.5, height: 172.3)
switch~case + 판정 결과 리턴하는 함수
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 = ""
switch bmi {
case 0.0..<18.5:
body = "저체중"
case 18.5..<25.0:
body = "정상"
case 25.0..<30.0:
body = "1단계 비만"
case 30.0..<40.0 :
body = "2단계 비만"
default :
body = "3단계 비만"
}
return "BMI:\(shortenedBmi), 판정:\(body)"
}
print(calcBMI(weight:60.0, height: 170.0))
1급 객체(first class object) 1급 시민(first class citizen)
제약이 없음 > 변수에 저장, 매개변수로 전달, 리턴값으로 사용 > Swift의 함수(1급 객체)
first class object : (1)함수를 변수에 저장 가능
func inchesToFeet (inches: Float) -> Float {
return inches * 0.0833333
}
let toFeet = inchesToFeet //함수를 자료형처럼 사용
print(inchesToFeet(inches:10))
print(toFeet(10)) //주의 : argument label인 (inches:) 안 씀
first class object : (2) 함수를 매개변수로 사용
func inchesToFeet (inches: Float) -> Float {
return inches * 0.0833333
}
let toFeet = inchesToFeet
func outputConversion(converterFunc: (Float) -> Float, value: Float) {//함수를 매개변수로 사용
let result = converterFunc(value) //toFeet(10)
print("Result = \(result)")
}
outputConversion(converterFunc:toFeet, value: 10) // 피트로 변환하는 inchesToFeet함수 호출
first class object : (3) 함수를 리턴값으로 사용
func inchesToFeet (inches: Float) -> Float {
return inches * 0.0833333
}
func inchesToYards (inches: Float) -> Float {
return inches * 0.0277778
}
let toFeet = inchesToFeet
let toYards = inchesToYards
함수 : 일급 객체 실습
func up(num: Int) -> Int {
return num + 1
}
func down(num: Int) -> Int {
return num - 1
}
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 r = decideFun(x:true) // let r = toUp
print(type(of:r)) //(Int) -> Int
print(r(10)) // toUp(10)
실행결과
클로저(Closure)
클로저 표현식
func add(x: Int, y: Int) -> Int {
return(x+y)
}
print(add(x:10, y:20))
// 실행 결과 : 30
// 클로저 표현식
let add1 = { (x: Int, y: Int) -> Int in
return(x+y)
}
print(add1(x:10, y:20)) //주의 error: extraneous(관련 없는) argument labels 'x:y:' in call
print(add1(10, 20)) //OK
print(type(of:add1))
/* 실행 결과 : 30
(Int, Int) -> Int */
func mul(val1: Int, val2: Int) -> Int
{
return val1 * val2
}
let result = mul(val1:10, val2:20)
print(result)
//클로저 표현식
let multiply = {(val1: Int, val2: Int) -> Int in
//매개변수 리턴형
return val1 * val2
}// 여기서 multiply의 자료형은 (Int, Int) -> Int
let result = multiply(10, 20) //상수를 함수처럼 호출,200
IOS 강의 자료 참고했습니다.
'IOS 기초' 카테고리의 다른 글
[IOS 기초] 10주 BMI 판정,동영상 재생,웹뷰 앱 (2) | 2024.11.07 |
---|---|
[IOS 기초] 9주 (2) | 2024.10.31 |
[IOS 기초] 7주 Xcode로 간단한 앱 개발 (0) | 2024.10.17 |
[IOS 기초] 6주 Swift 문법 5(클래스 failable initializer 상속)파일 (4) | 2024.10.10 |
[IOS 기초] 4주 Swift 문법 3(함수 guard문)파일 (1) | 2024.09.26 |
[IOS 기초] 3주 Swift 문법 2(optional, as, nil, Any, AnyObject, 연산자, 제어문1) (0) | 2024.09.19 |
[IOS 기초] 2주 Swift 문법 1(웹스토어, 자료형,변수,상수, tuple) (0) | 2024.09.12 |
[IOS 기초] 1주 iOS 프로그래밍 개요 (1) | 2024.09.05 |