Skip to main content

Lição 3: Declarações Condicionais

Na lição anterior, aprendemos a usar dados do sensor óptico em um projeto para classificar um disco por cor. Nesta lição, você aproveitará o que aprendeu para explorar opções no VEXcode que permitem que o projeto tome uma decisão, independentemente da cor detectada pelo sensor óptico. Aprenderá sobre: 

  • Por que otimizar a tomada de decisões é importante em um ambiente industrial.
  • A diferença entre os blocos If then, Ifthen else e Else if.

Verificação de Múltiplas Condições

Na lição anterior, você criou um projeto que poderia classificar um disco por cor para um palete vermelho ou um palete verde. Embora isso seja eficaz, o projeto só pode classificar um disco de cada vez. Em uma configuração de fábrica, muitos objetos precisam ser classificados e paletizados repetidamente. Para fazer isso de forma eficaz, o Braço de 6 Eixos precisa ser capaz de tomar repetidamente uma decisão sobre como mover os objetos ou se a intervenção humana é necessária. Considere os Cubos que você moveu no curso Introdução ao Braço de 6 Eixos.Imagem do braço de 6 eixos segurando um cubo azul sobre o sensor óptico

E se um Cubo azul estivesse na zona de carregamento? O que aconteceria no projeto da lição anterior? Em um ambiente industrial, todas as condições possíveis precisam ser consideradas. Se um objeto errante for misturado aos objetos a serem classificados, provavelmente será necessária intervenção humana para garantir que a célula de trabalho e os trabalhadores ao seu redor permaneçam seguros e funcionando de forma eficaz.

Seqüencial Se então bloqueia

Na lição anterior, usamos dois blocos If then em sequência para verificar duas condições separadas, uma após a outra, essencialmente fazendo duas perguntas dentro do projeto.

Imagem de um projeto de exemplo para a atividade da lição anterior com os blocos Se, então, destacados

Primeiro, Is the object red?, então, Is the object green?. Cada condição é verificada toda vez que o projeto é executado, independentemente do que é detectado pelo Sensor Óptico. Embora essa estrutura tenha permitido classificar um disco de cada vez de forma eficaz, não é a maneira mais eficiente de fazer isso. Um disco vermelho pode ser classificado, mas o sensor óptico também pode detectar o verde de outra coisa no ambiente e vice-versa. Também não há consideração dada a um objeto que não seja vermelho nem verde, como um objeto inesperado que possa causar um problema de segurança.

Imagens do Fluxo do Projecto

Ao longo desta lição, imagens que explicam o fluxo de projetos VEXcode são compartilhadas. Você pode recriar essas imagens no seu caderno de engenharia, bem como percorrer a Lição. 

Use ferramentas no Apresentações Google ou no Microsoft PowerPoint, como setas, caixas ou fluxogramas, para ajudar a criar visualizações que funcionam melhor para você em seu bloco de anotações.

imagem de ajuda do fluxo do projeto -- caixa de ferramentas de seta

 

 Se for sequencial, então o else bloqueia

Existe um bloco diferente que pode ser usado para nos permitir verificar as condições vermelhas e verdes e considerar uma cor diferente. O bloco If then else é um bloco C que executa os blocos dentro da ramificação if ou da ramificação else, com base no valor booleano relatado.

caso contrário, bloqueie com as descrições do fluxo do projeto

Depois de executar a ramificação if ou  else, o projeto passará para o próximo bloco na pilha. O fluxo de projeto dos blocos If then else também pode ser mostrado para tornar as ramificações mais visíveis.

se então outra imagem de fluxo de projeto com os ramos explicados

Observe que, nesses exemplos, a >ramificação else é usada para lidar com a condição de um objeto não ser nem vermelho nem verde. Nesse caso, seria necessária a intervenção humana. Anteriormente, você aprendeu que a luz azul na Torre de Sinal é usada para indicar a intervenção humana necessária. Além disso, uma parada controlada interromperá o movimento do braço de 6 eixos para manter as pessoas e as máquinas seguras. Um bloco Definir torre de sinal e um bloco Definir parada de controle podem ser adicionados à ramificação else, de modo que um objeto que não fosse vermelho ou verde acionaria esses recursos de segurança.

conteúdo da ramificação else do bloco If then else chamado

As imagens até agora só mostraram como lidar com a condição do objeto ser vermelho. Outro If then else é necessário para verificar a condição do objeto ser verde.

dois se então os outros no projeto

Vamos pensar no fluxo do projeto com essa estrutura. Cada vez que o projeto for executado, várias ramificações serão executadas, independentemente da cor detectada pelo Sensor Óptico.

fluxo de projeto de dois blocos if then else

Vamos pensar nisso com um disco vermelho como exemplo. Se o Sensor Óptico detectar vermelho, a condição do primeiro bloco If then else será relatada como verdadeira. O bloco dentro do ramo if funcionaria, movendo o braço de 6 eixos sobre o palete vermelho. No entanto, a condição dentro do segundo bloco If then else seria relatada como falsa. Isso significa que o bloco dentro de sua outra ramificação funcionaria, colocando o Braço de 6 Eixos em uma parada controlada e piscando em azul na Torre de Sinal. Como o Braço de 6 Eixos estaria em um estado de parada controlada, nenhum outro bloco no projeto poderia ser executado, e isso cessaria todas as operações até que fosse resolvido. 

imagem do fluxo do projecto

Embora agora possamos contabilizar um objeto inesperado (como um Cubo azul), o Braço de 6 Eixos nunca chegará ao ponto no projeto de liberar o Disco no palete. Em vez de verificar as condições vermelhas e verdes uma após a outra, existe uma maneira de verificar se um objeto é verde apenas se o objeto não for vermelho.   

Blocos aninhados If then else 

Cada uma das ramificações do bloco If then else pode aceitar outros blocos C dentro delas. Isso é chamado de "aninhamento". Isso significa que o segundo bloco If then else pode ser aninhado dentro da ramificação else do primeiro, assim.Imagem do projeto com o segundo bloco If else aninhado na ramificação else do primeiro

Agora, a condição do sensor óptico que detecta verde só será verificada quando a condição anterior (sensor óptico detecta vermelho) relatar como falsa. Portanto, quando o Sensor Óptico detectar vermelho, apenas o primeiro ramo será executado, movendo o Disco acima do palete vermelho. 

if then else if then else aninhado bloqueia o fluxo do projeto

Se o Sensor Óptico detectar verde, a condição da primeira ramificação if (Óptica detecta vermelho) relatará false e, portanto, a ramificação else será executada. A condição do bloco aninhado If then else seria verificada para ver se o sensor óptico detecta verde. Essa condição seria relatada como verdadeira, então o bloco dentro da segunda ramificação seria executado, movendo o disco sobre o palete verde. 

Se nem vermelho nem verde fossem detectados pelo Sensor Óptico (como no caso de um Cubo azul sendo pego), ambas as condições seriam relatadas como falsas e, portanto, o ramo else do bloco aninhado If then else seria executado, acionando uma parada controlada e alertando os trabalhadores para a necessidade de intervenção humana. Esses fluxos de projeto também podem ser visualizados como um fluxograma, como o visto aqui.

fluxograma do fluxo de projecto

 Blocos If else aninhados podem ser vistos como uma lista em cascata de perguntas. Aqui as perguntas são as seguintes: 

  1. O objeto está vermelho? 
    1. Sim? Mova o palete vermelho e pare de fazer perguntas.
    2. Não? Faça outra pergunta. 
      1. O objeto está verde?
        1. Sim? Mova o palete verde e pare de fazer perguntas.
        2. Não? Então o objeto não é vermelho ou verde. Altere as cores da Torre de Sinalização e acione uma parada controlada.

Observe que as perguntas só são feitas se a pergunta anterior for respondida negativamente. 

Embora isso lide com todas as condições que queremos verificar, há outro bloco que verificará as condições da mesma maneira, mas é mais fácil de construir do que os blocos de aninhamento. 

Else if Block

O bloco Else if permite verificar várias condições dentro do mesmo bloco. Cada uma das condições neste bloco será verificada sequencialmente, somente se a condição anterior for relatada como falsa. Se todas as condições booleanas para o else se as ramificações forem falsas, os blocos dentro da seção else serão executados.

else if block

Este bloco tem o mesmo fluxo de projeto que os blocos aninhados If then else, mas é mais fácil de construir porque não há necessidade de aninhar blocos. Você aprenderá mais sobre codificação com o bloco Else if na lição a seguir.

Verifique a sua compreensão

Antes de passar para a próxima lição, certifique-se de entender os conceitos desta lição respondendo às seguintes perguntas em seu caderno de engenharia.

Verifique as suas perguntas de compreensão > (Google Doc / .docx / .pdf )


Selecione Avançar > para aplicar o bloco Else if num projeto.