Skip to main content

Lição 2: Fluxo de um Projeto com um Loop For

Quando um projeto utiliza um ciclo for , continua a seguir a mesma lógica ao executar os comandos. Por exemplo, esses dois exemplos de código farão com que o robô VR se mova da mesma maneira. No entanto, o projeto com o loop for repete os dois comandos do Drivetrain quatro vezes para o fazer.

Dois trechos de código para conduzir em um quadrado mostrado lado a lado para ilustrar a diferença entre usar o loop for e não. O da esquerda não tem loop for e tem o drive for e turn para comandos repetidos quatro vezes cada. O da direita tem um loop for e setas vermelhas em um padrão circular com as palavras 4 vezes dentro delas, indicando que o loop for faz com que o drive for e o turn for se repitam quatro vezes.

Um ciclo para é utilizado para repetir uma série de comandos um número especificado de vezes. O for loop repete (também conhecido como itera) sobre a sequência de comandos dentro dele. Num ciclo Python for , a variável 'value' é utilizada para acompanhar a iteração atual, e a palavra-chave 'in' utiliza a função range para especificar o número de iterações. Detalhamento da sintaxe de um loop for mostrado com texto acima de cada palavra no comando para identificar sua função. A primeira palavra, for, tem o texto "identifica o loop" acima dele. A segunda palavra, value, tem o texto: "Identifica a variável (quantas vezes ela iterou pelo loop?). A terceira palavra, in, tem o texto "Conecta a variável à lista (range). A última palavra é range com o parâmetro 10 entre parênteses. O texto acima lê, "Identifica a lista (Quantas vezes ele irá iterar através do loop?).

A função intervalo identifica quantas vezes o ciclo deve iterar (ou repetir). Para repetir os comportamentos pelo número de vezes desejado, defina o parâmetro da função range.

A função range cria essencialmente uma lista temporária que especifica por onde o ciclo deve iterar para ser concluído. No caso de comportamentos repetidos, como o desenho dos quatro lados de um quadrado, a função range utiliza uma lista temporária de (0, 1, 2, 3) para permitir que o VR Robot execute estes comandos quatro vezes. O movimento do Robô VR mudará dependendo do parâmetro da função range, conforme mostrado aqui. 

Projeto VEXcode que ilustra a função range. Ele lê def parêntese aberto principal fechar parêntese cólon próxima linha que é indentada lê ponto de caneta mover parêntese aberto para baixo fechar parêntese próxima linha para valor no intervalo abrir parêntese 0 fechar parêntese cólon próxima linha que é indentado lê unidade de ponto de transmissão sublinhado para parêntese aberto para frente, 600, MM fechar parêntese próxima linha ponto de transmissão virar sublinhado para parêntese aberto direita, 90, grau fechar parêntese próxima linha esperar abrir parêntese cinco vírgula M S E C). Art Canvas Playground com o robô no centro. Comandos de transmissão executados 0 vezes.
O mesmo projeto acima, mas com 1 no parâmetro da função range. Art Canvas Playground com projeto para desenhar um lado de um quadrado completo. Comandos do sistema de transmissão executados 1 vez.
O mesmo projeto acima, mas com 2 no parâmetro da função range. Art Canvas Playground mostrando que o robô desenhou os dois primeiros lados do quadrado. Comandos de transmissão executados 2 vezes.
O mesmo projeto acima, mas com 3 no parâmetro da função range. Art Canvas Playground mostrando que o robô desenhou três lados do quadrado. Comandos de transmissão executados 3 vezes.
O mesmo projeto acima, mas com 4 no parâmetro da função range. Art Canvas Playground mostrando que o robô desenhou todos os quatro lados do quadrado. Comandos de transmissão executados 4 vezes, completando todos os 4 lados do quadrado.

 

O mesmo projeto acima, mas com 5 no parâmetro da função range.

Art Canvas Playground mostrando que o robô desenhou todos os quatro lados do quadrado e, em seguida, traçou o primeiro lado novamente. Comandos do sistema de transmissão executados 5 vezes, completando o quadrado e, em seguida, traçando o primeiro lado novamente.

Note-se que a forma desenhada do quadrado não se alterou quando a função intervalo passou de quatro para cinco; mas a posição final do VR Robot sim. Como tal, a utilização de um ciclo para com o intervalo padrão  função de dez resultaria no desenho da mesma forma quadrada, mas o robô VR continuaria a repetir os comportamentos por mais seis vezes. 

O robô VR percorrerá os comandos do cabeçalho do ciclo for  até ao último comando recuado. O cabeçalho do ciclo for  indica que o robô VR deve repetir as ações dentro do ciclo  o número de vezes especificado antes de passar para o próximo comando fora do ciclo for. As linhas recuadas indicam quais os comandos que estão dentro do ciclo por e devem ser repetidos.

Para sua informação

No VEXcode VR, é sempre adicionado um comando wait com o ciclo for . O objetivo do comando wait é garantir que o VEXcode VR pode executar corretamente o projeto como pretendido, devido à natureza baseada na web da plataforma VEXcode VR. O comando wait nunca deve ser eliminado quando se utiliza um ciclo for , ou o seu projeto pode não funcionar como esperado.

Para loop com um comando de espera.

O número especificado de vezes que o loop for está definido para executar permite que o projeto flua para fora do loop for quando tiver concluído as iterações necessárias. O parâmetro da função intervalo no para loop deve ser atingido antes de o projeto passar para o próximo comando fora do loop. No exemplo de código abaixo, depois de os comandos Drivetrain no ciclo for terem sido executados quatro vezes, o projeto sairá do ciclo for , definirá a cor da caneta para vermelho, e conduzirá em marcha-atrás. O projeto VEXcode de cima, com 4 no parâmetro range mostrado com setas vermelhas ao redor do loop for e a notação 4x mostrando que o projeto iria iterar através do loop quatro vezes. 2 linhas adicionais de código são adicionadas na parte inferior. As setas mostram que essas 2 linhas seriam executadas assim que as quatro iterações fossem concluídas. Essas linhas lidas, pen dot set color open parenthesis red close parenthesis and drivetrain dot drive underscore for open parenthesis reverse comma 600 mm close parenthesis. À direita está uma imagem do projeto depois de ter sido executado no playground, mostrando um quadrado preto com uma linha vermelha desenhada pelo robô de RV.

Mini Desafio

Neste projeto, o Robô VR deve desenhar um quadrado azul no Art Canvas Playground, mas há erros no projeto. Edite o projeto para resolver o mini desafio!

Parque infantil Art Canvas com um quadrado azul desenhado pelo robô VR.

O vídeo abaixo mostra o que fazer para completar o mini desafio. O robô começa no meio do playground e desenha os quatro lados de um grande quadrado azul. 

Ficheiro de vídeo
  • Assista ao vídeo da solução e analise como o robô de RV deve se mover para concluir o mini desafio.
  • Modifique o projeto Unit3Lesson2 para corresponder a esta imagem ou copie o código abaixo.
     
def main():
	pen.move(DOWN)
	pen.set_pen_color(RED)
	drivetrain.drive_for(FORWARD, 600, MM)
	
	for value in range(3):
		drivetrain.drive_for(FORWARD, 600, MM)
		drivetrain.turn_for(RIGHT, 90, DEGREES)
		wait (5, MSEC)
  • Iniciar o projeto e identificar onde o Robô VR não completa os comportamentos esperados.
  • Modifique o projeto e execute-o novamente. Veja se o Robô de RV completa os comportamentos esperados.
  • Se o Robô VR não desenhar um quadrado azul, repita a etapa anterior e tente novamente. Continue a modificar e executar o seu projeto até que o Robô VR desenhe um quadrado azul.
  • Assim que o Robô de RV desenhar com sucesso um quadrado azul no Art Canvas Playground, salve o projeto.

Parabéns! Você resolveu o mini desafio!

Perguntas

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

Google Doc / .docx / .pdf