본문 바로가기
💡 Today I Learned/개인 과제

[개인과제] Playground로 계산기 만들기

by 솔비님 2024. 6. 10.

24년 6월 6~10일 

 

이번주 강의로 Class 에 대해서 공부했다

스파르타 첫 개인과제로 3일 동안 Playground로 계산기 만들기를 진행했다

 


해야할 것 

  1. Calculator Class와 인스턴스 생성하기
  2. Calculator Class 내부 메소드 함수 정의하기
  3. 실제 값을 넣어서 정상 출력되는지 테스트 해보기

 

1. Calculator Class와 인스턴스 생성하기

class Calculator {
    var num1 : Double
    var num2 : Double
    var opp : String
    
    init(num1: Double, num2: Double, opp: String) {
        self.num1 = num1
        self.num2 = num2
        self.opp = opp
        }
}

 

Calulator 클래스 내부에 계산할 두 수의 인스턴스를 num1, num2로 생성하고

소수점까지의 계산을 위해 Double 타입으로 정의했다!

 

그리고 산술 연산자를 넣기 위해 String 타입의 인스턴스 opp 를 만들어 주었고

init 을 생성해 초기화 시켜 주었다

 

 


 

 

2. Calculator Class 내부 메소드 함수 정의하기

    func add() -> Double {
        return num1 + num2
    }
    
    func subtract() -> Double {
        return num1 - num2
    }
    
    func multiply() -> Double {
        return num1 * num2
    }
    
    func division() -> Double {
        return num1 / num2
    }
    
    func remainder() -> Double {
        return num1 % num2
    }

 

먼저, 계산에 필요한 사칙연산( +, -, *, / )과 추가 과제인 나머지를 구하기 위한 메소드를 생성했,.. 는데 오류가 났다

 

 

🚨🚨🚨 오류 화면 🚨🚨🚨

해당 오류에 대해 검색해 보니, 나머지 연산자는 연산하려는 숫자 모두 정수형일 경우에만 정의 된다고 한다

두 숫자 중 하나라도 Double 형이라면 오류가 발생하는 것..!

 

오류 내용을 살펴보면 truncatingRemainder 를 사용하라고 하는데 검색해 보면,

truncatingRemainder(dividingBy:) 이라는 메소드 라고 하고 Double 값의 나머지를 반환하는 함수라고 한다

 

    func remainder() -> Double {
        return num1.truncatingRemainder(dividingBy: num2)
    }

위와와 같이 수정해 줬다

생각보다 간단하게 오류 해결!

 

func opperate() -> Double {
        if opp == "+" {
            return add()
        }else if opp == "-" {
            return subtract()
        }else if opp == "*" {
            return multiply()
        }else if opp == "/" {
            return division()
        }else if opp == "%" {
            return remainder()
        }else{
            return 0
        }

산술연산자 opp를 반환하기 위한 opperate 조건문을 생성했다

산술연산자가 입력되면 먼저 생성한 add,subtract, multiply, division, remainder 메소드 함수가 호출 될 수 있도록 만들어 주었다

 

진행하면서 놓친 부분이 있었는데 만들어둔 메소드 함수 외 값이 입력 되었을 때

else 값으로 반환될 수 있도록 조건문 마지막에 꼭 꼭 넣어 주어야 한다!!

 

 


 

 

3. 실제 값을 넣어서 정상 출력되는지 테스트 해보기

테스트 하려고 했는데 기나긴 프린트문이 마음에 안든다

예전에 정리해 두었던 와일드카드 패턴이 문득 생각나서 호오옥시 init에도 적용이 되나? 해서 넣어봤다

init(_ num1: Double, _ num2: Double, _ opp: String) {
        self.num1 = num1
        self.num2 = num2
        self.opp = opp
    }

각 변수 앞에 와일드카드 패턴 넣어줌

 

오... 잘된다.. 🥹

생각해낸 나 자신 칭찬해 👊🏻

 

이제 실제로 계산이 되는지 돌려보기!!

 

덧셈 잘 되고

뺄셈도 잘 되고

곱셈 잘 되고

나눗셈 잘 되고

나머지도 잘 구해진다 👏🏻👏🏻👏🏻

 

 

 

 

-끝-