엔트리 블록 코딩

엔트리 | 자료 탭 - 사용자와 상호 작용이 활발한 프로그램 만들기. 묻고 대답 기다리기, 변수, 리스트.

블로그 하는 으노 2024. 8. 24. 18:05
반응형

엔트리는 블록 코딩 소프트웨어이다.


   게임을 해보면 시작할 때 닉네임을 짓고, 닉네임을 반영한 텍스트를 출력하며 튜토리얼을 시작하는 경우가 있다. 사용자로부터 입력받은 자료를 활용하여 출력해 주는 것이다. 프로그램 실행 중 필요한 자료들을 임시로 저장할 수 있다면, 프로그램에 훨씬 더 다양한 역할을 부여할 수 있게 된다. 자료를 임시로 저장하기 위해 사용하는 것이 [변수]이다. 변수에 대한 내용은 중요하기 때문에 이야기하는 김에 분량을 각오하고 다루어보겠다.

변수란?

    변수를 사용하면서부터 본격적인 프로그래밍에 대한 공부가 시작된다. 변수라는 용어가 사용되는 다양한 분야가 있지만 그 의미는 조금씩 다르다. 프로그래밍에서의 변수는 프로그램에 필요한 자료값을 임시로 저장하는 그릇이다. 변수에 할당된 값은 특정 값을 유지하기도 하고 때로는 프로그램 실행 중에 변경되거나 삭제되기도 한다. 엔트리에서는 변수라는 개념을 배우기 이전에 [대답]이라는 개념으로 변수의 개념을 탐구할 수 있다.

대답

  [대답]은 사용자로부터 받는 입력값이다. 대답을 사용하면서부터 사용자와 적극적인 상호작용이 가능한 프로그램을 만들 수 있게 된다. [자료 탭]의 첫 번째 명령어 블록은 [묻고 대답 기다리기] 블록이다. 블록 안의 내용을 출력하고 사용자의 입력을 기다리는 블록이다. 명령어가 실행될 때 화면에서는 사용자가 입력할 수 있는 입력 창이 제공된다.

   사용자로부터 어떤 내용을 입력받겠다는 프로그래머의 의도는 입력받은 내용을 프로그램에 활용하겠다는 것이다. 그렇기 때문에 입력받은 자료를 임시로 저장해야 하는데, 실행 화면의 우측 상단에 보이는 대답값에 사용자로부터 입력받은 내용이 저장된다는 것을 확인할 수 있다.

  그러고나면 [자료 탭][대답]이라고 하는 작은 블록으로 저장된 값을 활용할 수 있게 된다. [계산 탭]의 서로 다른 문자열을 합치는 명령어로 위와 같이 출력문을 작성하면 다음과 같은 결과를 얻게 된다.

  프로그램 실행 중 필요한 자료를 저장할 수 있다면 훨씬 더 고차원적인 프로그램을 만들 수 있다는 느낌이 든다. 그런데 여러 개의 자료가 필요하다면 어떻게 해야 할까. 예컨대, 삼각형의 밑변과 높이의 길이를 입력받아 삼각형의 넓이를 구하는 프로그램을 만든다고 하자. 그렇다면 필요한 자료가 밑변과 높이, 두 가지이다.

필요한 자료가 여러 개라면?

  수식까지 입력하면 위와 같은 코드를 작성하여 프로그램을 만들 수 있을 것 같다. 그러나 수식이 의문스럽다. [대답] 블럭은 하나인데, 두 가지 입력값을 반영할 수 있을까.

  밑변의 길이로 5를 입력하고 [대답]에 5가 저장되는 것을 확인할 수 있다. 이후로 새로운 입력창에 높이의 길이로 3을 입력하자 대답에 있던 5는 사라지고 3이 저장된다. 수식의 계산 결과도 4.5로 나중에 [대답]에 저장된 3만을 이용하여 계산이 된 것을 알 수 있다. 그래서 여러 가지 자료를 활용하려면 대답을 활용하는 것만으로는 부족하다. 그릇을 여러 개 준비해야 한다.

변수

  [변수]는 자료를 저장하는 그릇이다. 마찬가지로 삼각형의 넓이를 구하는 프로그램에 도전해보자. 필요한 자료가 밑변과 높이, 두 가지이므로 그릇을 두 개 준비해야 한다. 

  [자료 탭]에서 [변수 만들기]로 들어가거나 상단의 [속성 탭]에서 [변수-변수 추가하기]로 들어가 변수를 만들 수 있다.

  변수의 이름을 지을 때는 어떤 용도로 활용하려고 하는지를 명시하는 것이 좋다. 일반적인 프로그래밍 언어들은 변수의 이름을 짓기 위한 몇 가지 규칙들이 있지만 엔트리에서는 아무렇게나 지어도 된다. 한글로 지어도 되고 공백이 들어가도 된다. [변수 추가]를 완료하면 실행화면에서 변수값의 변화를 확인할 수 있다.

  변수를 생성하고나면 [자료 탭]변수와 관련된 블록들이 나타난다. 그리고 이를 이용하여 다음과 같이 명령어를 작성할 것이다.

  코드가 갑자기 꽤 복잡해졌다. 그러나 입력된 자료를 보관하기 위해 이런 형태의 명령어 구조를 자주 사용하게 된다.

  특정 자료를 저장하기 위해서는 [정하기] 블록을 사용해야 한다. 입력받은 내용은 [대답]에 저장이 되므로, 대답에 입력된 내용으로 변수값을 그때그때 저장하게 되는 구조이다. 대답에 새로운 내용이 입력되기 전에 변수에 저장해야 자료에 대한 손실이 일어나지 않기 때문에 명령어의 순서에 주의해야 한다. 이제 변수에 저장된 값을 활용하여 계산하면 결과를 확인할 수 있다.

  대답의 내용은 입력되는대로 수정이 되지만, 서로 다른 변수에 저장했기 때문에 정상적으로 계산을 실행할 수 있다. 더 많은 자료가 필요하다면 그만큼 변수를 생성하고 적절한 곳에 활용하면 된다.

리스트

  [리스트]변수와 비슷한 기능을 수행하지만, 변수가 하나의 자료만 저장하는 것과 달리 [리스트]는 여러 가지 데이터를 저장할 수 있다는 것이다. 리스트라는 이름과 같이 목록형 변수라고 생각하면 된다. 예컨대, 장보기 위해 목록을 작성하는데 여러 매장을 들러야 한다고 가정하자. 그러면 모든 품목을 의미없이 나열하는 것보다는 매장별로 살 수 있는 품목을 구분하여 목록화하는 것이 장보는 데 훨씬 도움이 될 것이다.

  모든 품목을 나열하는 것이 각 품목에 대한 변수를 각각 생성하는 것이라고 한다면, 매장별로 목록화 하는 것은 매장별 리스트를 생성하는 것과 같다. 이마트 리스트와 다이소 리스트로 장볼 품목을 나눈다면 수십개 변수를 생성할 일이 두 개 리스트로 해결되는 것이다.

  변수와 마찬가지로 리스트를 만들기 위해 [자료 탭]으로 들어가거나 상단의 [속성 탭]으로 들어가면 된다. 이마트라는 리스트를 생성해보겠다.

  리스트를 추가하면 실행화면에는 이마트 리스트를 확인할 수 있고 [자료 탭]에는 리스트와 관련된 블록이 나타나게 된다.

  반복문을 사용하여 이마트 리스트에 항목을 추가하는 프로그램을 만들었다. 사용자에게 입력받은 대답의 내용을 리스트의 항목으로 반복하여 추가하는 프로그램이다. 대답이 '끝'이라면 반복문은 종료된다.

  리스트의 기능만 이해하면 되기 때문에 마지막에 끝이 저장되는 것은 무시하자. 입력받은 내용이 이마트 리스트에 순서를 따라 저장되는 것을 확인할 수 있다. 리스트형 자료의 독특한 점은 순서를 갖는다는 것인데, 이 순서를 [인덱스] 또는 [색인]이라고도 한다. 인덱스를 활용하여 또 다양한 프로그램을 만들 수 있다.

반응형