Skip to main content

수업 2: 프로젝트 후 요약

[If then else] 블록은 VR 로봇이 결정을 내릴 수 있도록 사용됩니다. 부울 조건이 TRUE이면 'If Then' 분기 내부의 블록이 실행됩니다. 부울 조건이 FALSE이면 'Else' 분기 내부의 블록이 실행됩니다.

forever 루프 내의 if then else 블록의 프로젝트 흐름을 나타내는 다이어그램입니다. 프로젝트가 시작되면 거리 센서의 상태가 점검됩니다. 객체가 발견되고, 해당 조건이 참이면 Drive forward 블록이 실행됩니다. 객체가 발견되지 않으면 해당 조건은 거짓으로 보고되고, 그렇지 않으면 우회전 블록이 실행됩니다. 이 모든 것은 Forever 루프 안에서 계속해서 반복됩니다.

이 프로젝트에서는 거리 센서가 물체를 감지하고 <Distance found object> 블록이 TRUE로 보고되면 VR 로봇이 건물을 향해 주행합니다. 이는 프로젝트의 'If Then' 분기를 실행하도록 지시했습니다. 이 분기에는 [드라이브] 블록이 포함됩니다. 그러면 VR 로봇은 프로젝트의 'Else' 분기를 건너뜁니다.

프로젝트는 왼쪽에 있으며 녹색으로 강조 표시되어 if then 브랜치가 실행되는 프로젝트 흐름을 보여줍니다. 오른쪽에는 놀이터의 위에서 아래로 본 모습이 표시되어 있으며, 이 경우 거리 센서가 감지한 성 또는 물체가 화살표와 빨간색 상자로 강조 표시되어 있습니다.

[If then else] 블록은 [Forever] 블록 내부에 배치되므로 프로젝트는 [If then else] 블록의 조건을 확인하기 위해 [Forever] 블록의 맨 위로 돌아갑니다. 이 루프는 영원히 계속되며 VR 로봇에게 초당 수백 번씩 [If then else] 조건을 지속적으로 확인하도록 지시합니다.

[If then else] 블록 내부의 [Drive] 및 [Turn] 블록은 대기 블록이 아닙니다. 대기하지 않는 블록은 실행되는 동안 프로젝트의 흐름을 멈추지 않습니다.  [If then else] 블록에서 실행되는 대기하지 않는 동작(예: 객체가 감지되면 전진)은 조건이 확인되는 동안 계속되고 조건이 변경될 때만 변경됩니다.

Forever 블록의 하단에서 다시 위로 올라가는 화살표가 있는 동일한 VEXcode VR 프로젝트는 프로젝트가 Forever 루프의 상단으로 다시 흐르고 그 안에 있는 모든 명령을 반복함을 나타냅니다.

<Distance found object> 블록이 FALSE로 보고되면 프로젝트의 'Else' 분기가 실행됩니다. 'Else' 브랜치에는 [Turn] 블록이 포함됩니다.

프로젝트는 왼쪽에 있으며 빨간색으로 강조 표시되어 else 브랜치가 실행 중인 프로젝트 흐름을 보여줍니다. 오른쪽에는 놀이터의 위에서 내려다본 모습이 표시되어 있으며, VR 로봇 주위에 곡선 화살표가 표시되어 있어 거리 센서 바로 앞에 물체가 없으므로 물체를 감지하기 위해 방향을 전환해야 함을 나타냅니다.

귀하의 정보를 위해

[If then else] 블록은 조건이 검사될 때 프로젝트의 한 분기만 실행되도록 하는 데 사용됩니다. 한 번에 하나의 인스턴스나 조건만 참일 수 있습니다. 이렇게 하면 프로젝트의 효율성이 높아집니다.

forever 루프 내의 if then else 블록의 프로젝트 흐름을 나타내는 다이어그램입니다. 프로젝트가 시작되면 거리 센서의 상태가 점검됩니다. 객체가 발견되고, 해당 조건이 참이면 Drive forward 블록이 실행됩니다. 객체가 발견되지 않으면 해당 조건은 거짓으로 보고되고, 그렇지 않으면 우회전 블록이 실행됩니다. 이 모든 것은 Forever 루프 안에서 계속해서 반복됩니다.

현재 프로젝트를 7단원에서 만든 프로젝트와 비교해보세요.  7단원 프로젝트에서는 [If then] 블록을 4개 사용합니다.

7단원의 샘플 프로젝트의 프로젝트 흐름을 나타낸 다이어그램으로, 순서대로 4개의 If then 블록이 있습니다. 각 경우에 If 매개변수는 전면 눈 센서를 사용하여 특정 색상을 감지하고 감지된 색상에 따라 동작을 수행합니다. 색상이 감지되면 If then이 참이 되고, 그 안의 블록이 실행되며, 이는 코드의 각 섹션에서 반복적으로 발생합니다.

여러 개의 [If then] 블록이 있는 프로젝트를 실행할 때 여러 조건이 TRUE로 보고되고 프로젝트가 [Forever] 블록의 명령을 실행할 수 있습니다. 이 프로젝트에서는 두 조건 모두 동일한 [Forever] 루프 동안 TRUE를 보고할 수 있습니다. 이와 같은 충돌로 인해 프로젝트 진행이 중단되거나 속도가 느려질 수 있습니다.

영원히 반복되는 루프 내의 두 개의 순차적 If then 블록의 프로젝트 흐름 다이어그램입니다. 프로젝트가 시작되면 먼저 조건 1을 확인합니다. 조건 1은 첫 번째 if then 블록의 매개변수입니다. 만약 그것이 사실이라면, 그 안에서 90블록으로 우회전하게 될 것입니다. 해당 조건이 거짓이면 프로젝트는 다음 if then 블록으로 이동하여 조건 2를 확인합니다. 조건 2가 참이면, 그 안에 있는 200mm 블록에 대한 전진 구동이 실행됩니다. 거짓이면 프로젝트는 영원히 반복되는 루프의 맨 위로 돌아가서 프로세스를 다시 반복합니다.

[If then else] 블록을 사용하면 이 블록을 사용하면 주어진 순간에 하나의 조건만 참이 될 수 있으므로 이와 같은 버그를 피할 수 있습니다.

영원히 반복되는 루프 내에서 if then else 블록을 사용한 프로젝트 흐름 다이어그램입니다. 시작할 때 if then 분기의 조건이 확인됩니다. 만약 이 가정이 맞고, 드라이브가 움직이고 있다면, If 분기 안의 블록이 실행되고 로봇은 90도 왼쪽으로 회전할 것입니다. 그렇지 않으면, 로봇은 200mm 앞으로 움직일 것입니다. 이 프로젝트는 영원히 반복되는 루프이기 때문에 하나의 조건을 검사하기로 하는 결정은 계속해서 내려질 것입니다.

질문

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

Google 문서 / .docx / .pdf