NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 엔지엠 매크로의 배열 길이가 있는 변수에서 선입선출, 후입선출을 만드는 방법.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 선입선출(先入先出, First In, First Out, FIFO)은 먼저 들어온 배열 항목이 먼저 나간다는 뜻입니다. 예를 들어서 배열의 길이가 5로 정해져 있다면 1, 2, 3, 4, 5이렇게 순서대로 항목이 들어오고, 6이 들어오면 먼저 들어온 1이 나가고 6이 추가되는걸 말합니다. 2, 3, 4, 5, 6과 같이 됩니다. 7이 들어오면 3, 4, 5, 6, 7이 됩니다. 후입선출(後入先出, Last In First Out, LIFO)은 마지막에 들어온 항목이 먼저 나갑니다. 이런 내용들이 어디에 쓰일지는 모르겠지만~ 프로그래밍에서는 스택과 큐로 설명할 수 있긴합니다. 엔지엠 매크로에는 스택과 큐를 따로 정의하고 있지 않습니다. 하지만, 스택과 큐를 동일하게 구현할 수 있습니다. 하단에 첨부되어 있는 "배열 선입 선출 예제.ngs"를 다운로드 받은 후 엔지엠 매크로에서 열어보세요.

    5hv7pPJ.png

     

     

    [ 변수 ] 2개를 추가 했습니다. 엔지엠 매크로에서 변수는 액션간 데이타를 주고 받기 위해 저장해두는 창고라고 생각하시면 됩니다. 5개 항목을 저장할 수 있는 배열 변수와 이 배열의 길이가 5개인지 체크하기 위한 변수가 추가되어 있습니다.

    RupciTG.png

     

     

    [ 숫자 체크 ] 액션을 이용해서 배열의 길이가 5인지 확인합니다.

    iL7Mdxt.png

     

     

    변수로부터 배열의 길이를 가져와야 합니다.

    SjXOCfV.png

     

     

    [ 배열 값 ] 액션을 사용해서 배열 변수에 항목을 추가하거나 가져올 수 있습니다. 항목을 배열 마지막에 추가해야 하므로 배열 인덱스는 -1을 설정해줍니다. 이렇게하면 반복하는 동안 계속해서 마지막에 배열 값이 추가됩니다. 참고로, 배열의 특정 위치에 값을 추가하고 싶다면 인덱스를 배열의 위치로 설정하면 됩니다. 프로그래밍에서는 마지막에 추가할 때 Add를 사용하고, 특정 위치에 추가할 때는 Insert를 사용합니다. 제가 둘다 추가라고 표현하고 있지만, 엄밀히 구분짓는다면 Add는 추가고, Insert는 삽입입니다^^

    zhv9KwX.png

     

     

    [ 액션 이동 ]을 사용해서 아래 B가 추가되는걸 건너뛰어야 합니다. 이렇게 루틴을 구분하는 이유는 배열의 길이만큼 항목이 체워지지 않았다면 앞의 항목을 지울필요가 없기 때문입니다. 길이가 정해져 있는 배열이기 때문에 길이만큼 채워지고, 마지막에 추가될 때 첫번째 항목을 지우면 선입선출과 동일한 자료 구조를 가질 수 있습니다.

    Yua8Cht.png

     

     

    정상적으로 배열이 채워지는지 확인하기 위해 [ 메세지 박스 ]로 값을 확인 해봤습니다.

    IcYTcVX.png

     

     

    매크로를 실행 해보면, 아래와 같이 선입선출되는 것을 확인할 수 있습니다.

     

     

    후입선출이 되려면 마지막에 추가가 되어야하고, 마지막 항목이 먼저 사라져야 합니다. 이렇게하려면 배열 추가시에 인덱스를 0으로 설정하면 위에서부터 항목이 쌓이기 때문에 마지막 항목이 사라집니다. 그리고, 배열 값 액션에서 덮어쓰기 옵션을 사용하면 배열의 위치 값을 들어오는 값으로 변경할 수 있습니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.