초등학교 저학년

초등학생들.
산수 드릴은 귀찮지 않습니까?
귀찮았던 기억이 나요.
구구 따위를 외우는 것은 매우 번거롭겠지.
사실
구구단을 기억하지 못하더라도 자바스크립트를 기억하면
산수 드릴을 풀 수 있다!!
오늘은 초등학생들에게 컴퓨터 로봇의 제작 방법을 가르친다.

참고:


시작하기 전에 주의해야 한다.
잘 들으세요.
  • 저학년 여러분은 아직 제법을 배우지 않았다고 생각합니다.
  • 따라서 이 컴퓨터 로봇은 제법 연산을 할 수 없다.
  • 단계:


    제가 절차를 설명할 테니 자세히 들어보세요.
    모르는 게 있으면 선생님께 물어보세요.
  • 중간 표기법에서 반폴란드로 전환.
  • 계산.
  • 준비:


    소지품을 준비하세요.
    ・Node.js14.16.0 (다른 언어도 가능)
    Windows 10(그 외)

    제작:


    퍼스:


    선생님:


    우선 ①단계의 중간기법에서 반폴란드기법의 포스로 가자.
    이른바 중간기법
    1 + 1 //(= 11)
    
    이런 일반적인 작법.
    반폴란드 기법
    1 1 + //(= 11)
    
    쓰기 방법은 컴퓨터가 처리하기 쉬운 쓰기 방법이다.
    반폴란드 기법에 대한 퍼스는 이렇게 했다.

    예약표:

  • 표현식을 token으로 구분하여 exp에 저장합니다.(배열)
  • stack(배열)을 준비합니다.
  • result를 준비합니다.
  • 연산자의 우선 순위를 정의합니다.(함수)
  • 에서 11로 반복됩니다.
  • exp의 시작에 shift.
  • 수치를 꺼내면result로 밀어냅니다.11까지 날아가다.
  • 연산자를 체크 아웃한 경우
    우선순위를 stack의 마지막 연산자와 비교합니다.가다
  • 만약에 stack 맨 뒤에 있는 연산자의 우선순위가 높거나 같다면
    result로 팝업하고 밀어냅니다.가다
  • 연산자를 stack에 밀어넣습니다.
  • exp가 없으면 중복을 멈추고 12.
  • stack에 연산자가 있으면
    연산자가 사라질 때까지 뒤에서 밀어냅니다.
  • 이것을 직접 코드로 표시하세요.

    모범

    var exp = "".split(" ")//1
    var stack = []//2
    var result = []//3
    var priority = {"+":1,"-":1,"*":2};//4
    function loop() {//5
      var now = exp.shift();//6
      if(!isNaN(+now)) {
        result.push(+now);//7
      } else {
        if(priority[stack.slice(-1)[0]]>= priority[now]) {//8
          result.push(stack.pop())//9
        }
        stack.push(now)//10
      }
      if(!exp.length)return;//11
      loop()//5
    }
    if(stack.length) {//12
      while(stack.length)result.push(stack.pop())//12
    }
    

    등본


    그럼 초등학생들.우리 가서 옮겨 쓰자.
    제목은 함수 이름으로 쓰십시오.
    백그라운드에서 댓글을 자세히 삭제하십시오.
    function PornConv(formula) {
      var exp = formula.split(" ")
      var stack = []
      var result = []
      var priority = {"+":1,"-":1,"*":2};
      for (now of exp) {
        if(priority[now]) {
          if(priority[stack[0]]>= priority[now]) {
            result.push(stack.shift())
          }
          stack.unshift(now)
        } else {
          result.push(+now);
        }
      }
      result.push(...stack)
      return result;
    }
    
    잘했어.
    그럼 계산해 봅시다.

    계산:


    선생님:


    계산이 간단하다.
    연산자가 오면 연산자에 따라 계산하기만 하면 된다.
    예를 들어 퍼스 결과[1,1,+'의 답은
    이.
    그럼 계산해 봐.

    좋은 웹페이지 즐겨찾기