Lição 2: Resumo do Pós-Projeto
O bloco [If then else] é usado para que o robô VR possa tomar uma decisão. Se a condição booleana for VERDADEIRA, os blocos dentro da ramificação ‘If Then’ serão executados. Se a condição booleana for FALSA, os blocos dentro da ramificação ‘Else’ serão executados.

Neste projeto, o Robô VR dirigiu-se para um edifício quando o Sensor de Distância detectou um objeto e o <Distance found object> bloco foi relatado como VERDADEIRO. Isso instruiu a ramificação ‘If Then’ do projeto a ser executada. Esta ramificação inclui o bloco [Drive]. O Robô VR então pula a ramificação ‘Else’ do projeto.

Como o bloco [If then else] é colocado dentro de um bloco [Forever], o projeto volta para o topo do bloco [Forever] para verificar a condição do bloco [If then else]. Este loop continuará para sempre, instruindo o Robô VR a verificar continuamente a condição [If then else] centenas de vezes por segundo.
Observe que os blocos [Drive] e [Turn] dentro do bloco [If then else] não são blocos de espera. Os blocos sem espera não interrompem o fluxo de um projeto enquanto estão em execução. Um comportamento de não espera que é executado em um bloco [If then else] (como avançar se o objeto for detectado) continuará enquanto a condição estiver marcada e só mudará quando a condição mudar.

Se o <Distance found object> bloco relatar como FALSO, a ramificação ‘Else’ do projeto é executada. A ramificação ‘Else’ inclui o bloco [Turn].

Para sua informação
[If then else] blocos são usados para garantir que apenas uma ramificação no projeto seja executada quando a condição for verificada. Apenas uma instância ou condição pode ser verdadeira a qualquer momento. Isso torna o projeto mais eficiente.

Compare o projecto actual com o projecto criado na Unidade 7. O projeto da Unidade 7 usa quatro blocos [If then].

Ao executar um projeto com vários blocos [If then], pode ser possível que várias condições sejam relatadas como VERDADEIRAS e o projeto seja executado através dos comandos no bloco [Forever]. Neste projeto, ambas as condições podem relatar VERDADEIRO durante o mesmo loop [Forever]. Conflitos como esse podem fazer com que o projeto pare de ser executado ou seja executado mais lentamente.

Usar um bloco [If then else] evitaria bugs como este, porque apenas uma condição pode ser VERDADEIRA em um determinado momento com este bloco.

Perguntas
Selecione uma ligação abaixo para aceder ao questionário da aula.
Google Doc / .docx / .pdf