[iOS 어플 만들기] 계산기 만들기 도전 2일차(아이폰계산기 클론코딩)

정환우·2020년 12월 31일
0

iOS

목록 보기
4/24
post-thumbnail

오늘의 목표

  1. 레이아웃 최대한 비슷하게 만들기.
  2. 사칙연산 함수 구현하기
  3. 프린트되는 라벨이 이상하게 나오지 않게 연산이나 숫자 입력할 때 오류 없이 만들기.

레이아웃 비교

아이폰

아이폰 계산기

내가 만든거

내가 만든거

(이 정도면 비슷하지 않나..?)

사칙연산 함수 구현

이 부분에서 제일 고민을 많이 했다. 일단, 사칙연산 함수를 구현하기 전에 DisplayLabel에서 숫자를 어떻게 표현할지 고민을 했다.

func changeNumber(_ a: Int){
        load = false    // 무언가 입력이 있었기 때문에 출력이 바뀌겠지.
        printnum = printnum*10 + Double(a)
        displayLabel.text = String(printnum)
        
        if !load {   // 처음이 아니면 다 C로 떠야함.
            acButton.setTitle("C", for: .normal)
        }
        else{
            acButton.setTitle("AC", for: .normal)
        }
    }

나는 이런 방식을 사용하였다.
그리고 사칙연산은, 연산을 하려는 숫자 두 개와 사칙연산중 어떤 연산을 할지 알려주는 숫자 하나, 총 3개의 매개변수를 이용하는 함수를 만들었다.

func operation(_ a: Double, _ b: Double, _ op:Int) -> Double { // 계산하는 함수. 1 : +, 2:-, 3:*, 4:/, 5:%
        switch op{
        case 1:
            return (a + b)
        case 2:
            return (a - b)
        case 3:
            return (a * b)
        case 4:
            return (a / b)
        case 5:
            return a.truncatingRemainder(dividingBy: b)
        default:
            return 0
        }
    }

다른 언어에서는 나머지 연산(%)이 사용가능했는데, 여기서는 오류가 떠서 구글링을 해보니 truncatingRamainder(dividingBy: ) 함수를 사용하라고 하더라.

프린트 관련

프린트는 좀 비효율적으로 만들었다. 처음에 큰 그림을 아예 생각하지 않고 코드를 짜다보니 뭔가 더티 코딩이 된 것 같은 느낌...그래서 프린트 문은 너무 많은 함수에 껴있기 때문에 따로 코드 첨부를 하지 않았다.

이제 또 목표는 출력이 9자리가 안넘어가게 하는 것과 쉼표 넣는 것 등이 있겠다.
이런거 한번 만들어보니 재밌구나!
클론코딩을 앞으로 많이 해봐야겠다.

profile
Hongik CE

0개의 댓글