Skip to main content

Lição 4: Usando blocos [Forever]

Verificando repetidamente as condições

Como observado na lição anterior, o bloco [If then] verifica as condições apenas uma vez. Para que as condições contidas nos blocos [If then] sejam verificadas repetidamente, é necessário um bloco [Forever] C. O bloco [Forever] é um bloco C da categoria Control que repete os comportamentos contidos nele, para sempre.

Um bloco VEXcode VR Forever vazio.
  • Carregue o projeto Unit7Lesson3 da lição anterior.

    O mesmo VEXcode VR bloqueia o projeto a partir do final da última aula. Começa com um bloco Quando iniciado e, em seguida, há um bloco Se então com um parâmetro booleano de um bloco de detecção de cor que diz 'Olho frontal detecta verde?' e um bloco Vire à direita para 90 graus dentro do contêiner Se. Em seguida, há o mesmo bloco if e bloco turn, mas alterado para virar à esquerda por 90 graus se a cor azul for detectada. Em seguida, o mesmo se bloco e bloco de giro for usado, mas alterado para Parar de Dirigir se a cor vermelha for detectada. Por fim, o mesmo se o bloco e o bloco de giro forem usados, mas alterados para Drive Forward se nenhuma cor for detectada.
  • Renomeie o projeto Unit7Lesson4.

    Barra de ferramentas VEXcode VR com o botão "Nome do projeto" destacado numa caixa vermelha, à esquerda do botão Select Playground. O nome do projeto está definido como Unidade 7 Lição 4.
  • Arraste um bloco [Forever] para o espaço de trabalho e anexe-o ao topo da pilha de blocos. Observe que isso incluirá todos os quatro blocos [If then] dentro do bloco [Forever].

    O VEXcode VR bloqueia o projeto anterior, mas com uma seta indicando a adição de um bloco Forever envolvido em todas as instruções if. Começa com um bloco When Started e, em seguida, há uma série de quatro instruções if envolvidas em um bloco Forever. Primeiro é um bloco Se Então com um parâmetro booleano de um bloco de detecção de cor que diz 'Olho Frontal detecta verde?' e um bloco Vire à direita para 90 graus dentro do contêiner Se. Em seguida, há o mesmo bloco if e bloco turn, mas alterado para virar à esquerda por 90 graus se a cor azul for detectada. Em seguida, o mesmo se bloco e bloco de giro for usado, mas alterado para Parar de Dirigir se a cor vermelha for detectada. Por fim, o mesmo se o bloco e o bloco de giro forem usados, mas alterados para Drive Forward se nenhuma cor for detectada.

    Para sua informação

    Os blocos podem ser adicionados ao início ou ao meio da pilha de projetos alinhando a parte superior do bloco, com o posicionamento desejado na pilha.

    Uma visualização de como um bloco Forever pode ser arrastado para o topo de uma pilha e automaticamente envolver o conteúdo da pilha. O projeto de blocos VEXcode VR é o mesmo de antes e está contido em um loop para sempre. As instruções if são as seguintes: Primeiro é um bloco If Then com um parâmetro booleano de um bloco Color Sensing que diz 'Front Eye detecta verde?' e um bloco Turn right para 90 graus dentro do contêiner If. Em seguida, há o mesmo bloco if e bloco turn, mas alterado para virar à esquerda por 90 graus se a cor azul for detectada. Em seguida, o mesmo se bloco e bloco de giro for usado, mas alterado para Parar de Dirigir se a cor vermelha for detectada. Por fim, o mesmo se o bloco e o bloco de giro forem usados, mas alterados para Drive Forward se nenhuma cor for detectada.

    Este vídeo abaixo mostra como adicionar o bloco [Forever] em torno dos quatro blocos [If then] no projeto atual. Observe que a parte superior do bloco [Forever] está alinhada logo após [When started] e o primeiro bloco [If then]. O bloco [Forever] envolve todos os blocos a seguir na pilha do projeto.

  • Agora que o bloco [Forever] é adicionado ao projeto para que todos os blocos [If then] tenham constantemente suas condições verificadas, abra o Disk Maze Playground e execute o projeto.
  • Quando este projeto for executado, o robô VR navegará pelo Disk Maze Playground do início ao fim. Assim que o Robô VR detetar vermelho, irá parar de conduzir.

    Uma visão de cima para baixo do VR Disk Maze Playground, com o robô VR passando por cada disco e descansando no disco vermelho final.
  • No projeto da lição anterior, as condições dentro dos blocos [If then] só foram verificadas uma vez. Como as condições dentro dos blocos [If then] foram verificadas apenas uma vez, o robô VR avançou para sempre porque a condição de nenhuma cor ser detectada foi relatada como VERDADEIRA.

    Um diagrama do fluxo de lógica no nosso projeto de blocos VEXcode VR sem o bloco sempre. As setas indicam que cada instrução if é executada apenas uma vez antes do término do projeto, tornando nosso projeto muito menos responsivo do que gostaríamos. O nosso projeto verifica se o olho frontal deteta verde e, em caso afirmativo, vira para a direita a 90 graus. Em seguida, se o olho frontal detectar azul, ele vira para a esquerda em 90 graus. Em seguida, se o olho frontal detectar vermelho, ele para de dirigir. Por fim, se o olho frontal não detectar nenhum, ele avança.
  • Agora que o bloco [Forever] foi adicionado, cada condição dos blocos [If then] C será verificada repetidamente. Durante o fluxo do projeto, se a condição do bloco [If then] C for VERDADEIRA, os blocos dentro do bloco [If then] C serão executados. Se a condição do bloco [If then] C for FALSA, os blocos dentro do bloco [If then] C serão ignorados e o fluxo do projeto continuará para o próximo bloco na pilha. Isso permite que o robô VR execute comportamentos discretos, como girar ou parar, uma vez que detecta uma determinada cor.

    Um diagrama do fluxo de lógica do projeto de blocos VEXcode VR para a esquerda percorrendo um exemplo do robô VR na imagem à direita. A imagem mostra o robô VR alcançando um disco azul e virando à esquerda. O diagrama indica que as instruções if se repetem para sempre, e cada uma é verificada em cada loop. Depois que o olho frontal não detecta o verde, ele verifica a cor azul seguinte, que retorna verdadeiro e gira o robô para a esquerda por 90 graus. Depois disso, o fluxo da lógica continua pela pilha, verificando se há vermelho e nada.
  • [Se então] blocos são usados com blocos [Forever] para garantir que as condições sejam constantemente verificadas.

    Um diagrama do fluxo de lógica em nosso projeto de blocos VEXcode VR com o bloco externo Forever incluído. Cada seta agora é rotulada com o que esse comando lógico está medindo, e uma seta amarela mostra o fluxo de lógica que se repete continuamente através de cada bloco no loop Forever. É claro que cada instrução if é verificada em cada loop do bloco forever, não importa se o resultado é verdadeiro ou falso.

Usando Blocos de Interruptor 

Este é o bloco Switch [Forever]. O comando Switch Python para Forever cria um ciclo while em que a condição é True. Os comandos aninhados dentro do loop quando então serão repetidos para sempre, pois a condição é sempre True. 

Uma versão do bloco de switch VEXcode VR do bloco Forever. O código Python diz 'while True:', que é o equivalente em Python de uma declaração forever.

Perguntas

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

Google Doc / .docx / .pdf