1. 인풋 파라미터와 아웃풋 파라미터를 이용해 BMI 계산기를 만들어라.

방법 1)

// Q. 인풋 파라미터와 아웃풋 파라미터를 이용해 BMI 계산기를 만들어라.
//
// BMI는 몸무게를 (키 / 100)을 제곱한 것으로 나누어 계산한다.
// Step 1. A = 키 / 100
// Step 2. 몸무게 / A^2

func calBMI(height:Double, weight:Double) -> Double {
    var calHeight:Double = height / 100     // Step 1. A = 키 / 100
    return weight / (calHeight * calHeight) // Step 2. BMI = 몸무게 / A^2
}

print("당신의 BMI지수는 : \(calBMI(height: 170, weight:50))")

// 결과 :
// 당신의 BMI지수는 : 17.301038062283737

방법 2)

func calBMI(height:Double, weight:Double) -> Double {
    return weight / ((height / 100) * (height / 100))
}

print("당신의 BMI지수는 : \(calBMI(height: 170, weight:50))")

코드는 짧지만 유지보수가 힘들다. 그리고 나누기 연산자는 컴퓨터 연산에 무리를 많이 준다. 코드는 짧아졌고 변수 선언도 없어 메모리는 적게 차지하겠지만 오히려 성능은 떨어지면서 유지보수까지 힘들다.

 

2. Swap 함수

// 함수로 만들어본 스위프트 Swap. 구세대 언어와 달리 임시 변수를 선언할 필요가 없다.
//func swap(a:Int,b:Int) -> (Int,Int) {
//    return (b,a)
//}

// 하지만 스위프트에서는 Swap을 기본 제공한다.
var a = 1000
var b = 500
print(a,b)		// 결과 : 1000, 500

// 1. 스위프트의 변수 Swap 방법 1
(a,b) = (b,a)
print(a,b)		// 결과 : 500, 1000

// 2. 스위프트의 Swap 방법 2
swap(&a,&b)
print(a,b)		// 결과 : 1000, 500

// 3. 배열의 값도 변수 Swap이 가능하다.
var arr = [0,1,2,3,4]
arr.swapAt(1,2)
print(arr)		// 결과 : [0, 2, 1, 3, 4]

스위프트에는 자체적으로 Swap 함수가 있어 임시 변수 하나를 생성할 필요가 없다.

 

 

 

 

+ Recent posts