Skip to main content

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.

Um diagrama indicando o fluxo de projeto do bloco if then else dentro do loop forever. Quando o projeto é iniciado, a condição do Sensor de Distância é verificada. Se um objeto for encontrado, essa condição é verdadeira e, em seguida, o bloco Drive forward é executado. Se nenhum objeto for encontrado, essa condição será relatada como falsa, caso contrário, o bloco vire à direita será executado. Tudo isso é repetido continuamente dentro do loop Forever.

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.

O projeto está à esquerda com um destaque verde que mostra o fluxo do projeto da ramificação if then em execução. À direita, a vista de cima para baixo do Playground é mostrada, com uma seta e uma caixa vermelha destacando o castelo, ou objeto, detectado pelo Sensor de Distância neste caso.

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.

O mesmo projeto VEXcode VR com setas movendo-se da parte inferior do bloco Forever de volta para o topo para indicar o fluxo do projeto de volta para o topo do loop Forever para repetir todos os comandos dentro dele.

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

O projeto está à esquerda com um destaque vermelho que mostra o fluxo do projeto da ramificação else em execução. À direita, é mostrada a vista de cima para baixo do Playground, com setas curvas ao redor do Robô VR indicando virar para detectar um objeto, pois não há uma diretamente na frente do Sensor de Distância.

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.

Um diagrama indicando o fluxo de projeto do bloco if then else dentro do loop forever. Quando o projeto é iniciado, a condição do sensor de distância é verificada. Se um objeto for encontrado, essa condição é verdadeira e, em seguida, o bloco Drive forward é executado. Se nenhum objeto for encontrado, essa condição será relatada como falsa, caso contrário, o bloco vire à direita será executado. Tudo isso é repetido continuamente dentro do loop Forever.

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

Um diagrama do fluxo de projeto de um projeto de amostra da Unidade 7 com quatro blocos If then em sequência. Em cada caso, o parâmetro If está usando o Sensor de Olho Frontal para detectar uma cor específica e executar um comportamento com base na cor detectada. Se a cor for detectada, esse If then é true, e o bloco dentro dele será executado, e isso acontecerá repetidamente para cada seção do código.

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.

Um diagrama do fluxo de projeto de dois blocos If then sequenciados dentro de um loop forever. Quando iniciado, o projeto primeiro verificará a condição 1, o parâmetro do primeiro bloco if then. Se isso for verdade, a curva à direita para o bloco 90 dentro dele será executada. Se essa condição for falsa, o projeto passa para o próximo bloco if then para verificar a condição 2. Se a condição 2 for verdadeira, o acionamento para a frente para o bloco de 200 mm dentro dele funcionará. Se for falso, o projeto voltará ao topo do loop para sempre para repetir o processo novamente.

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.

Um diagrama do fluxo do projeto usando um bloco if then else dentro de um loop forever. Quando iniciado, a condição da ramificação if then será verificada. Se for verdade, e a unidade estiver se movendo, o bloco dentro da ramificação If será executado e o robô girará para a esquerda 90 graus; caso contrário, o robô avançará 200 mm. Essa decisão de verificar uma condição será feita continuamente, pois o projeto está dentro de um loop para sempre.

Perguntas

Selecione uma ligação abaixo para aceder ao questionário da aula.

Google Doc / .docx / .pdf