Small Grey Outline Pointer [레츠기릿JS] 계산기 만들기
본문 바로가기
Dev./JavaScript

[레츠기릿JS] 계산기 만들기

by sso. 2023. 4. 23.

순서도를 먼저 그린다

사람이 계산기를 사용할 때 어떤 순서로 쓰는지 생각해본다

하지만 사람이 계산기를 이용할 때는 예를들어 100을 입력하려고 하면 100을 한꺼번에 바로 입력하는게 아니다

1, 0, 0 이렇게 숫자를 한자리씩 입력하는 것이다

그 후, 연달아 계산하는 방법들의 절차도 하나씩 생각해 본다

 

 

 

하지만 자바스크립트 프로그램의 순서도를 만들 때 사용자 이벤트를 기준으로 순서도를 끊어야 한다고 했다

입력한 숫자를 저장할 변수와 선택한 연산자를 저장할 변수도 생성해야 한다

 

 

사용자의 입력 직전에는 항상 대기가 걸린다는 것을 유념해야 한다

앞으로 순서도를 짤 때는 처음처럼 간단하게 짜도 되지만,

코드로 옮기려면 언제 대기가 걸리는지 체크해서 이벤트를 더 작은 단위로 쪼개주는 것이 좋다

 

 

 

 

10 - 5를 예를 들면

먼저 1을 누르면 1은 numOne 변수에 저장된다

그다음에 0을 누르면 아직 operator 변수에 값이 저장되어 있지 않으므로 0도 numOne 변수에 저장해야 한다.

하지만 numOne에는 이미 1이 저장되어 있는데 어떻게 0을 추가로 저장할 수 있을까?

 

하나의 변수에 여러 값을 저장할 때 사용했던 것으로 배열이 있다.

처음 1을 저장할 때 [1]로 저장하고, 그다음 0을 저장할 때 두 번째 요소로 추가해 [1, 0]을 저장한다.

join 메서드를 사용해 다음 코드처럼 문자열로 합친 후 숫자로 바꾸면 된다

[1, 0].join('') === '10'
Number([1, 0].join('')) === 10

혹은 문자열을 사용하여 문자열끼리 더해주어 1+0 = '10' 이 되도록 만들어 준다

그 후, numOne 와 numTwo를 연산해줄 때 숫자로 바꿔주면 된다

 

 

 

다시 수정된 순서도

 

<style>
        * {box-sizing: border-box;}
        #result {width : 180px; height: 50px; margin: 5px; text-align:  right;}
        #operator {width : 50px; height: 50px; margin: 5px; text-align:  center;}
        button {width : 50px; height: 50px; margin: 5px;}

</style>

{box-sizing: border-box;}

border를 기준으로 사이즈를 설정하는 것

 

 

 #result {width : 180px; height: 50px; margin: 5px; text-align:  right;}

컨텐츠의 사이즈 172 x 44가 아니라

input박스가 border기준으로 설정되기 때문에 180x50이 된다

 

 


<!--계산기버튼구현-->
<body>
    <input readonly id="operator">
    <input readonly type="number" id="result">
    <div class="row">
        <button id="num-7">7</button>
        <button id="num-8">8</button>
        <button id="num-9">9</button>
        <button id="plus">+</button>
    </div>
    <div class="row">
        <button id="num-4">4</button>
        <button id="num-5">5</button>
        <button id="num-6">6</button>
        <button id="minus">-</button>
    </div>
    <div class="row">
        <button id="num-1">1</button>
        <button id="num-2">2</button>
        <button id="num-3">3</button>
        <button id="divide">/</button>
    </div>
    <div class="row">
        <button id="clear">C</button>
        <button id="num-0">0</button>
        <button id="calculate">=</button>
        <button id="multiply">x</button>
    </div>
<script>
    
</script>
</body>

 

 

기본 형태를 잡아놓고 시작한다

 

 

 

 

 

728x90

댓글