[ 사전학습 Day 9 ] 직사각형의 넓이와 둘레를 계산해보자

sonny·2024년 9월 23일
1

스파르타코딩클럽

목록 보기
11/13
post-thumbnail

과제 제출 코드

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  // 직사각형 높이

widthheight라는 두 개의 변수를 정의한다. 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 잘 된다... 오늘 갑자기 잘 되어서 기분 좋게 공부했는데 정말 자동완성 기능은 짜릿하다.

profile
iOS 좋아. swift 좋아.

0개의 댓글