Skip to main content

Lição 1: O que é um algoritmo?

Nesta lição, você aprenderá o que é um algoritmo e como o uso de algoritmos no VEXcode VR Python permite criar projetos com comportamentos mais diversos. Projetos algorítmicos instruem o Robô de RV a responder ao seu ambiente, o que será necessário para resolver o Desafio Dynamic Castle Crasher.

Resultados de Aprendizagem

  • Identifique que os algoritmos são compostos de sequência, seleção e iteração (loops).
  • Identificar que algoritmos são sequências precisas de instruções, implementadas utilizando linguagens de programação, para processos a serem realizados por um Robô de RV.

Algoritmos

Algoritmos são sequências precisas de instruções, implementadas usando linguagens de programação, como VEXcode VR Python, para processos a serem realizados por um Robô VR.

Os elementos básicos de um algoritmo são sequência, seleção e iteração.

  • Sequência - a ordem em que os comportamentos e comandos são combinados em um projeto para produzir um resultado desejado.     
  • Seleção - o uso de declarações condicionais num projeto. Declarações condicionais, como if ou if else, afetam o fluxo do projeto de um projeto.
  • Iteração - os algoritmos geralmente usam repetição para executar etapas um certo número de vezes ou até que uma determinada condição seja atendida. Isso também é conhecido como "looping". A iteração pode alterar o fluxo do projeto repetindo um comportamento um número especificado de vezes ou até que uma condição seja atendida.  

Este projeto de exemplo do desafio da Unidade 8 é um exemplo de um algoritmo. Ele inclui uma combinação de loops, dados do sensor e comandos reunidos em sequência para resolver o Desafio do Movimentador de Disco.

def main():
	for value in range(3):
		
		for value in range(3):
			# 1. Dirija para o disco usando o Down Eye Sensor
			enquanto não estiver down_eye.near_object (
				): 				drivetrain.drive (FORWARD)
				wait(5, MSEC
			) 			drivetrain.stop()
			
			# 2. Pegue o disco
			magnet.energize(BOOST)
			
			# 3. Dirija para a meta usando o sensor
			de distância 			drivetrain.turn_to_heading (180, GRAUS)
			enquanto front_distance.get_distance (MM) > 200
				: 				drivetrain.drive (FORWARD)
				wait(5, MSEC)
			drivetrain.stop()
			
			# 4. Drop disk in goal
			magnet.energize(DROP)
			drivetrain.drive_for(REVERSE, 100, MM)
			
			# 5. Vire para o próximo disco drivetrain.turn_to_heading
			(0, DEGREES)
			wait(5, MSEC)
			
		# 6. Vire e dirija para a próxima meta
		drivetrain.turn_to_heading(90, GRAUS) drivetrain.drive_for
		(PARA FRENTE, 800, MM)
		
		# 7. Gire para discos
		drivetrain.turn_to_heading(0, GRAUS)
		
	aguarde(5, MS)

Sequência

A maneira como os comandos são sequenciados e combinados determina os comportamentos do Robô VR. Neste exemplo, cada conjunto de comportamentos necessários para mover um disco é executado três vezes, então o Robô de RV se move para o próximo conjunto de discos e repete os comportamentos, até que todos os discos sejam retornados às metas. Um diagrama de fluxo que mostra a sequência de recolha de disco do robô. À esquerda, o código exibe o loop principal que se repete três vezes. As setas cíclicas vermelhas à direita indicam loops contínuos que funcionam até que as condições do sensor sejam atendidas (como encontrar ou agarrar um disco), enquanto as setas verdes mostram as transições entre coletar o disco, movê-lo para a meta, liberá-lo e reposicioná-lo para o próximo ciclo.

Selecção

Este projeto também inclui a seleção que determina as partes do projeto que são executadas com base nas condições do sensor. Primeiro, o sensor Down Eye é usado para determinar quando o robô VR está perto de um disco, para que o disco possa ser captado. Em seguida, o Sensor de Distância é usado para determinar quando o Robô VR está acima da meta, para que o disco possa cair.  O trecho de código da Unidade 8 inclui duas condições destacadas que controlam o movimento do robô com base nas leituras do sensor. A primeira condição destacada, embora não down_eye.near_object (), instrui o robô a avançar até que o Down Eye Sensor detecte um objeto próximo, permitindo que ele se aproxime de um disco antes de parar. A segunda condição destacada, enquanto front_distance.get_distance(MM) > 200, direciona o robô para avançar até que esteja a 200 milímetros da meta, usando o sensor de distância frontal para medição de proximidade. Essas condições while criam loops que fazem o robô parar apenas quando cada condição específica do sensor é atendida.

No primeiro ciclo while , a seleção dos comandos que serão executados é baseada nos valores do sensor reportados pelo Down Eye Sensor.

  • Enquanto nenhum objeto for detectado, o robô VR avançará.
  • Enquanto um objeto é detectado, o Robô VR irá parar.

No segundo ciclo while , a seleção do comando que será executado é baseada nos valores do sensor reportados pelo Sensor de Distância.

  • Embora a distância relatada seja superior a 200 milímetros (mm), o robô VR avançará.
  • Enquanto a distância informada for inferior a 50 milímetros (mm), o Robô VR irá parar de dirigir e passar para a próxima parte do projeto para energizar o Eletroímã.

Iteração

O projeto usa iteração, ou "loops", para repetir ações e verificar repetidamente os valores dos sensores relatados. Este projeto contém loops aninhados – um loop para que o Robô VR possa coletar todos os três discos de uma cor; e um segundo loop para repetir esse processo para coletar todos os discos no Playground. O código usa dois loops aninhados para controlar o processo de coleta de disco do robô. O loop externo, rotulado Loop para coletar discos de todas as cores, itera através de cada cor de disco. Dentro dele, o loop interno, rotulado Loop para coletar 3 discos de uma cor, repete três vezes para coletar e colocar três discos da cor atual. Essa configuração garante que o robô colete três discos de cada cor antes de passar para a próxima cor, com cada iteração de loop focando na coleta e posicionamento sistemáticos.

Este algoritmo foi concebido para recolher e devolver três discos, três vezes, para completar o Disk Mover Challenge. A mesma lógica que é aplicada para coletar e mover discos repetidamente usando sequência, seleção e iteração também pode ser aplicada a outros desafios, como o Desafio do Destruidor de Castelo Dinâmico.

Perguntas

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

Google Doc / .docx / .pdf