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

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

[If then else] 블록은 [Forever] 블록 내부에 배치되므로 프로젝트는 [If then else] 블록의 조건을 확인하기 위해 [Forever] 블록의 맨 위로 돌아갑니다. 이 루프는 영원히 계속되며 VR 로봇에게 초당 수백 번씩 [If then else] 조건을 지속적으로 확인하도록 지시합니다.
[If then else] 블록 내부의 [Drive] 및 [Turn] 블록은 대기 블록이 아닙니다. 대기하지 않는 블록은 실행되는 동안 프로젝트의 흐름을 멈추지 않습니다. [If then else] 블록에서 실행되는 대기하지 않는 동작(예: 객체가 감지되면 전진)은 조건이 확인되는 동안 계속되고 조건이 변경될 때만 변경됩니다.

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

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

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

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

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