Skip to main content

4과: [Forever] 블록 사용하기

반복적으로 조건 확인

이전 레슨에서 살펴본 것처럼 [If then] 블록은 조건을 한 번만 확인합니다. [If then] 블록에 포함된 조건을 반복적으로 확인하기 위해서는 [Forever] C 블록이 필요합니다. [Forever] 블록은 Control 카테고리의 C 블록으로, 블록 안에 포함된 동작을 영원히 반복합니다.

비어 있는 VEXcode VR Forever 블록.
  • 이전 수업의 Unit7Lesson3 프로젝트를 불러옵니다.

    동일한 VEXcode VR 블록이 지난 수업의 끝에서 다시 나타납니다. When Started 블록으로 시작하고, 그 다음에 'Front Eye detects green?'을 읽는 Color Sensing 블록의 부울 매개변수를 갖는 If Then 블록과 If 컨테이너 내부에 Turn right for 90 degrees 블록이 있습니다. 다음은 동일한 if 블록과 turn 블록 스택이지만, 파란색이 감지되면 90도 좌회전하도록 변경되었습니다. 다음으로, 동일한 if 블록과 turn 블록 스택을 사용하지만 빨간색이 감지되면 운전을 멈추도록 변경합니다. 마지막으로, 동일한 if 블록과 turn 블록 스택을 사용하지만 색상이 감지되지 않으면 Drive Forward로 변경합니다.
  • 프로젝트 이름을 Unit7Lesson4로 바꾸세요.

    '프로젝트 이름' 버튼이 빨간색 상자로 강조 표시된 VEXcode VR 도구 모음(플레이그라운드 선택 버튼 왼쪽). 프로젝트 이름은 Unit 7 Lesson 4로 설정되었습니다.
  • [영구] 블록을 작업 공간으로 끌어서 블록 스택의 맨 위에 붙입니다. [Forever] 블록 안에 있는 [If then] 블록 4개가 모두 포함된다는 점에 유의하세요.

    VEXcode VR 블록은 이전의 프로젝트와 같지만 모든 if 문을 둘러싼 Forever 블록이 추가되었음을 나타내는 화살표가 있습니다. When Started 블록으로 시작한 다음 Forever 블록으로 묶인 4개의 if 문 시리즈가 있습니다. 첫 번째는 '앞 눈이 녹색을 감지합니까?'라는 질문을 읽는 색상 감지 블록의 부울 매개변수를 갖는 If Then 블록과 If 컨테이너 내부에 있는 90도로 우회전 블록입니다. 다음은 동일한 if 블록과 turn 블록 스택이지만, 파란색이 감지되면 90도 좌회전하도록 변경되었습니다. 다음으로, 동일한 if 블록과 turn 블록 스택을 사용하지만 빨간색이 감지되면 운전을 멈추도록 변경합니다. 마지막으로, 동일한 if 블록과 turn 블록 스택을 사용하지만 색상이 감지되지 않으면 Drive Forward로 변경합니다.

    귀하의 정보를 위해

    블록을 프로젝트 스택의 시작이나 중간에 추가하려면 블록의 상단을 스택의 원하는 위치에 맞춰 정렬합니다.

    Forever 블록을 스택의 맨 위로 끌어와서 자동으로 스택의 내용을 감싸는 방법을 시각화한 그림입니다. VEXcode VR 블록 프로젝트는 이전과 동일하며 영원히 반복되는 루프에 포함되어 있습니다. if 문은 다음과 같습니다. 첫 번째는 '앞눈이 녹색을 감지합니까?'라는 질문을 읽는 색상 감지 블록의 부울 매개변수를 갖는 If Then 블록이고, If 컨테이너 내부에는 오른쪽으로 90도 회전 블록이 있습니다. 다음은 동일한 if 블록과 turn 블록 스택이지만, 파란색이 감지되면 90도 좌회전하도록 변경되었습니다. 다음으로, 동일한 if 블록과 turn 블록 스택을 사용하지만 빨간색이 감지되면 운전을 멈추도록 변경합니다. 마지막으로, 동일한 if 블록과 turn 블록 스택을 사용하지만 색상이 감지되지 않으면 Drive Forward로 변경합니다.

    아래 영상은 현재 프로젝트의 4개 [If then] 블록 주위에 [Forever 블록]을 추가하는 방법을 보여줍니다. [Forever] 블록의 상단이 [When started]와 첫 번째 [If then] 블록 바로 뒤에 정렬되어 있는 것을 주목하세요. [Forever] 블록은 프로젝트 스택의 모든 후속 블록을 래핑합니다.

  • 이제 [Forever] 블록이 프로젝트에 추가되어 모든 [If then] 블록의 조건이 지속적으로 확인되도록 Disk Maze Playground 을 열고 프로젝트를 실행합니다.
  • 이 프로젝트가 실행되면 VR 로봇은 처음부터 끝까지 디스크 미로 놀이터 탐색하게 됩니다. VR 로봇이 빨간색을 감지하면 운전을 멈춥니다.

    VR 디스크 미로 놀이터의 위에서 내려다본 모습. VR 로봇이 각 디스크를 지나 마지막 빨간색 디스크에서 휴식을 취하고 있는 모습입니다.
  • 이전 수업의 프로젝트에서는 [If then] 블록 내의 조건은 한 번만 확인되었습니다. [If then] 블록 내부의 조건이 한 번만 검사되었기 때문에 색상이 감지되지 않는다는 조건이 TRUE로 보고되어 VR 로봇은 영원히 앞으로 나아갔습니다.

    forever 블록이 없는 VEXcode VR 블록 프로젝트의 논리 흐름을 나타낸 다이어그램입니다. 화살표는 각 if 문이 프로젝트가 종료되기 전에 한 번만 실행되므로, 프로젝트의 응답성이 우리가 원하는 것보다 훨씬 떨어진다는 것을 나타냅니다. 우리 프로젝트에서는 앞눈이 녹색을 감지하는지 확인하고, 감지되면 오른쪽으로 90도 회전합니다. 다음으로, 앞눈이 파란색을 감지하면 왼쪽으로 90도 회전합니다. 다음으로, 앞눈이 빨간색을 감지하면 운전을 멈춥니다. 마지막으로, 앞눈이 아무것도 감지하지 못하면 앞으로 나아갑니다.
  • 이제 [Forever] 블록이 추가되었으므로 [If then] C 블록의 각 조건이 반복적으로 확인됩니다. 프로젝트 흐름 중에 [If then] C 블록의 조건이 TRUE이면 [If then] C 블록 내부의 블록들이 실행됩니다. [If then] C 블록의 조건이 FALSE이면, [If then] C 블록 내부의 블록은 건너뛰어지고, 프로젝트의 흐름은 스택의 다음 블록으로 계속됩니다. 이를 통해 VR 로봇은 특정 색상을 감지하면 회전하거나 멈추는 등 개별적인 동작을 수행할 수 있습니다.

    왼쪽의 VEXcode VR 블록 프로젝트의 논리 흐름을 나타낸 다이어그램이 오른쪽 이미지의 VR 로봇 예를 통해 실행됩니다. 이 그림은 VR 로봇이 파란색 디스크에 도달하여 왼쪽으로 회전하는 모습을 보여줍니다. 이 그림은 if 문이 영원히 반복되고 각 문이 각 루프마다 확인된다는 것을 보여줍니다. 앞눈이 녹색을 감지하지 못하면 다음으로 파란색을 확인하여 True를 반환하고 로봇을 왼쪽으로 90도 돌립니다. 그 후, 논리 흐름은 스택 아래로 계속 이어지며 빨간색과 아무것도 없는지 확인합니다.
  • [If then] 블록은 [Forever] 블록과 함께 사용되어 조건이 지속적으로 확인되도록 합니다.

    Forever 블록을 포함한 VEXcode VR 블록 프로젝트의 논리 흐름을 나타낸 다이어그램입니다. 각 화살표에는 이제 해당 논리 명령이 측정하는 내용이 표시되고, 노란색 화살표는 Forever 루프의 각 블록에서 지속적으로 반복되는 논리 흐름을 보여줍니다. 결과가 참이든 거짓이든 관계없이 forever 블록의 각 루프에서 모든 if 문이 확인된다는 것은 분명합니다.

스위치 블록 사용 

이것은 Switch [Forever] 블록입니다. Forever 에 대한 Switch Python 명령어는 조건이 True인 while 루프를 생성합니다. 루프 내에 중첩된 명령은 조건이 항상 참이므로 영원히 반복될 수 있습니다. 

Forever 블록의 VEXcode VR 스위치 블록 버전입니다. Python 코드는 'while True:'로 읽히는데, 이는 forever 문과 동일한 Python 구문입니다.

질문

아래 링크를 선택하여 수업 퀴즈에 참여하세요.

Google 문서 / .docx / .pdf