내일배움캠프 앱개발 iOS 트랙 본캠프 2주차
Today I Learned
오늘의 (개인적인) 업적
https://github.com/yenny42/nbc_camp/tree/main/Basic_Calculator
어제 헤매던 사칙연산을 구현했다.
기본적으로 0~9까지의 숫자를 입력할 수 있고 + - * / 네가지 연산이 가능하다.
점 . 을 사용해서 소수를 계산할 수도 있다.
기본적으로 아이폰의 기본 앱인 계산기를 많이 참고했다. 나름 iOS 강의를 듣는 중이니...
구현한 내용
@IBAction func didTapNumButton
- 숫자 버튼을 누를 때 마다 동작
- 입력하는 숫자를 curreuntDisplay에 담아서 label에 노출시킴
- 입력된 숫자를 numberValue[0] 에 Double로 형변환 해서 옮겨 담음
- operatorSign 이 입력되었다면
- calculator 클래스의 calculate 함수에 numberValue와 operatorSign을 매개변수로 보내서 계산한 값을 받아옴
- displayLabel.text의 내용을 바꾸고 받아온 값을 이용해서 numberValue 값 재배치
@IBAction func didTapCalculateButton
- 연산자 버튼을 누를 때 마다 동작
- 연산자를 operatorSign에 담음
- 각 조건에 따라 numberValue 값 재배치
- calculator 클래스의 calculate 함수에 numberValue와 operatorSign을 매개변수로 보내서 계산한 값을 받아옴
- displayLabel.text의 내용을 바꾸고 받아온 값을 이용해서 numberValue 값 재배치
@IBAction func didTapClearButton
- 초기화 버튼을 누를 때 마다 동작
- 사용하는 전체 변수를 초깃값으로 돌려놓는다
@IBAction func didTapEqualSignButton
- = 버튼을 누를 때 마다 동작
- calculator 클래스의 calculate 함수에 numberValue와 operatorSign을 매개변수로 보내서 계산한 값을 받아옴
- displayLabel.text의 내용을 바꾸고 받아온 값을 이용해서 numberValue 값 재배치
Calss Calculator
- 계산하는 함수를 담은 클래스
- calculate()
- 사칙연산 기능
- checkDouble()
- 소수점 아래가 있는지 없는지 체크
- 실수가 아니라면 정수부분만 표시할 수 있게 하기 위해서 체크한다
코드 레포
https://github.com/yenny42/nbc_camp/tree/main/Basic_Calculator
Double형을 계산하는데 나오는 이 inf는 뭐야 대체?
inf 는 무한값, Infinity 를 의미한다
컴퓨터에서 0.0은 완전한 0을 의미하지 않는다.
어딘가 구석진 메모리 한군데에서 0.000000000...0001 이라도 있을 수 있지 않은가
수학적으로도 양의 무한대인지 음의 무한대인지 정도만 차이가 있다.
실수형 Double, Float는 IEEE 754 부동소수점 표준에 의해 +infinity / -infinity라는 특별한 값을 지원한다
그래서 1 / 0.0 을 하면
무한값을 지원하는 실수형으로 계산했기 때문에 무한대를 의미하는 inf를 출력한다
...고 한다.
대체 어디서 무한을 계산했는지는 아직도 잘 모르겠다. 코드 다시 쓰니까 고쳐졌다. 이렇게 개발해도 되는건가요?
코드에 대한 내 감상 + 고칠 점?
좀.. 뭐랄까, 이게 되네... 싶은 기분이 든다.
고치고 싶은 부분이 제법 많다.
각 function 안에서 중복되는 부분 (위에서 초록색으로 칠한 내용들) 이라던지 if가 너무 많다던지 그런 문제를 고쳐보고 싶다.
그리고 함수가 이름값을 못하는 것 같다. A라는 이름의 함수 안에 있어야 할 내용이 전혀 다른 B함수 안에 있다던가.. 하기 때문에 그런 부분도 다시 확인해봐야겠다.
하루종일 뻘짓..
코드 창 내용 전체 삭제를 거짓말 조금 보태서 열 번정도 했다. 노트에 구현할 순서와 코드가 어떻게 돌아가야 하는지 고민한 건 조금 더 보태서 다섯장 정도 계속 메모하고 메모하고 메모하고 메모하고.
얼마 전 알고리즘 강의를 해 주신 튜터님께서 컴퓨터적 사고를 하는 머리를 만드는게 중요하다고 얘기하셨는데, 이제서야 왜 그런 말을 하셨는지 알겠다. 확실히 그런쪽으로 생각할 수 있게 되면 더 편하게 기능을 만들 수 있을 것 같다.
'TIL' 카테고리의 다른 글
[TIL] 2023.12.01 | 계산기(4/4) 클래스 추상화, 의존성주입, 의존성역전원칙 (0) | 2023.12.02 |
---|---|
[TIL] 2023.11.30 | 계산기(3/n) 클래스 단일책임원칙, OCP (0) | 2023.11.30 |
[TIL] 2023.11.28 | [계산기 (1/n)]storyboard UIButton UILabel 사용, Swift 사칙연산 구현하기 (0) | 2023.11.28 |
[TIL] 2023.11.27 | 깃허브 온갖 에러를 보다 (0) | 2023.11.27 |
[TIL] 2023.11.24 | 프로그래머스 제일 작은 수 제거하기 (0) | 2023.11.24 |