과제 제출 코드
var width: Double = 100
var height: Double = 50
@MainActor func calculateArea() -> Double {
if width <= 0 || height <= 0 {
return 0
}
return width * height
}
@MainActor func calculatePerimeter() -> Double {
if width <= 0 || height <= 0 {
return 0
}
return 2 * (width + height)
}
let areaResult = calculateArea()
let perimeterResult = calculatePerimeter()
print("넓이: \(areaResult)")
print("둘레: \(perimeterResult)")
var width: Double = 100 // 직사각형 너비
var height: Double = 50 // 직사각형 높이
width
와 height
라는 두 개의 변수
를 정의한다. Int
타입으로 설정하고초기값
으로 width는 100
, height는 50
로 설정을 했다.
@MainActor func calculateArea() -> Int {
if width <= 0 || height <= 0 {
return 0
}
return width * height
}
}
@MainActor:
이 함수가 메인 스레드에서 실행되도록 보장한다고 한다. UI 관련 코드에서 주로 사용되지만, 이 코드는 UI와 상관이 없으므로 이 부분은 생략해도 무방하다고는 하는데 나는 저게 없으면 실행이 되지 않아서 코드에 추가했다. 계속 FIX하라고 떴다.
func calculateArea() -> Int:
직사각형의 넓이를 계산하는 함수.
if width <= 0 || height <= 0:
너비나 높이가 0 이하라면 넓이는 의미가 없으므로 0을 반환한다.
if
문은 조건을 확인해서 그 조건이 참(true)
일 때만 안에 있는 코드를 실행
하는 구조인데,
width <= 0 || height <= 0
는 두 개의 조건을 비교하는 식이다.
width <= 0: 너비(width)
가 0
보다 작거나 같은지 확인한다. 즉, 너비가 0
이거나 0
보다 작은 경우를 의미한다.
|| (OR 연산자):
이 연산자는 두 개의 조건 중 하나라도 참
이면 전체 조건이 참이 된다.
height <= 0: 높이(height)
가 0
보다 작거나 같은지 확인한다. 즉, 높이가 0
이거나 0
보다 작은 경우를 의미하는데 말하자면, " 너비가 0 이하이거나, 높이가 0 이하이면 "이라는 뜻이다.
즉, 너비나 높이 중 하나라도 0
이하이면, 그 값이 올바른 직사각형의 크기가 아니므로 0
을 반환하도록 하는 것이고, 직사각형의 너비나 높이가 0
이거나 그보다 작다면 실제로는 직사각형이 존재하지 않는다고 볼 수 있기 때문이다.
사실 답지를 보면 조건문
이 없어도 되는 것 같은데 너비나 높이가 0
이하일 때 넓이와 둘레를 0
으로 처리하고 싶을 땐 조건문을 사용하는게 좀 더 이상한 값이 나오지 않도록 방어적인 계산
을 하는 것이기에 이렇게 처리했다.
따라서, 조건문
을 쓰지 않아도 오류가 나는 것은 아니지만, 의미상 맞지 않는 결과가 나올 수 있기 때문에 방어적인 코드를 작성하고 싶다면 조건문을 사용하는 것이 좋다 !
return width * height:
너비와 높이를 곱해서 직사각형의 넓이를 계산하고 그 값을 반환한다.
@MainActor func calculatePerimeter() -> Int {
if width <= 0 || height <= 0 {
return 0
}
return 2 * (width + height)
}
if width <= 0 || height <= 0:
너비나 높이가 0
이하라면 둘레도 의미가 없으므로 0
을 반환한다.
return 2 * (width + height):
직사각형의 둘레는 2 * (너비 + 높이)
로 계산되므로 그 값을 반환한다.
let areaResult = calculateArea() // 넓이
let perimeterResult = calculatePerimeter() // 둘레
areaResult 변수에 calculateArea() 함수의 반환값을 저장한다.
perimeterResult 변수에 calculatePerimeter() 함수의 반환값을 저장한다.
이 두 변수는 각각 넓이와 둘레의 계산 결과를 담고 있다.
// 계산된 넓이와 둘레를 출력
print("넓이: \(areaResult)")
print("둘레: \(perimeterResult)")
print() 함수를 사용하여 계산된 넓이와 둘레를 출력하면 끝.
이 코드는 직사각형의 너비와 높이를 바탕으로 넓이와 둘레를 계산하는 기능을 제공하고 각 기능은 함수로 나누어져 있으며, 입력 값이 유효한지 확인하여 잘못된 값을 처리하는 로직이 포함되어 있다.
최종적으로 계산된 결과를 출력하는 구조인 것이다.
아! 그리고 드디어 xcode 잘 된다... 오늘 갑자기 잘 되어서 기분 좋게 공부했는데 정말 자동완성 기능은 짜릿하다.