서론
이번 시간에는 BMI 판정 앱에 들어갈 BMI 계산 소스와 판정 소스에 대해서 포스팅을 해보도록 하겠습니다.
바로 본론으로 들어가보겠습니다!
BMI 판정 기준
우선 BMI를 판정 하려면 기준이 있어야겠죠? BMI 판정 기준은 아래와 같이 설정하도록 하겠습니다.
- 18.5 미만이면 '저체중'
- 18.5∼25 미만은 '정상'
- 25∼30 미만은 '1단계 비만'
- 30∼40 미만은 '2단계 비만'
- 40 이상이면 '3단계 비만'
BMI 계산 소스
자 이제 기준도 정해졌으니 본격적으로 BMI 계산 소스를 보도록 하겠습니다.
만약 몸무게가 60이고 키가 170인 사람이라면 아래와 같이 BMI를 계산할 수 있습니다.
그리고 print로 bmi를 출력하면 해당 BMI 값이 나오겠죠?
let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001) // kg/m*m
print(bmi)
만약 자기의 BMI 값이 궁금하다 하시는 분들은 몸무게와 키 부분에 자신의 몸무게와 키를 넣고 컴파일을 돌려보시면 됩니다!
BMI 판정 소스
BMI 게산 소스를 만들었으니 이제 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)")
판정 기준은 아까 위에서 정한 판정 기준으로 하였고 소스를 한 번 살펴보겠습니다.
먼저, 체중과 키를 기반으로 BMI 지수를 계산합니다. BMI 지수는 체중(kg)을 키(m)의 제곱으로 나눈 값입니다. 이 계산 결과를 변수 bmi에 저장합니다.
그 다음, 변수 body를 초기화합니다.
조건문을 사용하여 BMI 지수에 따라 비만 정도를 판정합니다.
- 만약 bmi가 40 이상이라면, body에 "3단계 비만"을 할당합니다.
- 그렇지 않고 bmi가 30 이상 40 미만이라면, body에 "2단계 비만"을 할당합니다.
- 그렇지 않고 bmi가 25 이상 30 미만이라면, body에 "1단계 비만"을 할당합니다.
- 그렇지 않고 bmi가 18.5 이상 25 미만이라면, body에 "정상"을 할당합니다.
- 그 외의 경우에는 body에 "저체중"을 할당합니다.
마지막으로, "BMI: (bmi), 판정: (body)" 형식으로 BMI 지수와 판정 결과를 출력합니다.
이 코드는 주어진 체중과 키에 따라 BMI 지수를 계산하고, 해당 지수에 따라 비만 정도를 판정하는 기능을 수행합니다.
Swift 문자열 서식 (swift string format 자리수)
Swift 문자열 서식으로 위 코드를 나타내면 아래처럼 작성할 수 있습니다!
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 계산 소스를 Class로 구현
BMI 판정 소스를 Class로도 구현할 수 있습니다.
Class로 구현하면 소스가 어떻게 될까요?
import Foundation
class BMI {
var weight : Double
var height : Double
init(weight:Double, height:Double){
self.height = height
self.weight = weight
}
func calcBMI() -> Double{
return weight/(height*height*0.0001)
}
}
var han = BMI(weight:62.5, height:172.3)
print(han.calcBMI())
바로 요렇게 구현 됩니다!
BMI 판정 소스를 Class로 구현
자 위에서 계산 소스를 Class로 구현했으니 판정 소스도 한 번 Class로 구현해봐야겠죠?
import Foundation
class BMI {
var weight : Double
var height : Double
init(weight:Double, height:Double){
self.height = height
self.weight = weight
}
func calcBMI() -> 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)"
}
}
var han = BMI(weight:62.5, height:172.3)
print(han.calcBMI())
마무리
자 이렇게 BMI 판정 앱에 들어갈 BMI 계산 소스와 BMI 판정 소스를 살펴보고 Class로 구현하는 법까지 살펴보았습니다.
혹시 잘못된 점이 있으면 댓글 달아주세요!!
감사합니다.
틀린 부분이 있거나 더 좋은 내용 훈수 환영합니다!
공감과 댓글 부탁드립니다.
'Apple > iOS' 카테고리의 다른 글
[iOS] 세그먼트 컨트롤 디자인 (0) | 2023.12.01 |
---|---|
[iOS] 아이폰 BMI 앱 제작하기 (2) | 2023.11.23 |
[iOS] Interface Builder - Attribute, UI elements (0) | 2023.11.19 |
[iOS] Date Picker (0) | 2023.11.18 |
[iOS] Xcode 기능 정리 (0) | 2023.11.14 |