Buscar

BC_Aula7

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto


Bases Computacionais da Ciência (BC-0005)
Aula 7 - Estruturas de Repetição (laços)
David Correa Martins Jr
david.martins@ufabc.edu.br
Universidade Federal do ABC (UFABC)
Introdução
 Na aula 05:
 Estudamos os primeiros conceitos de lógica de programação 
(sequência de instruções)
 Na aula 06:
 Estudamos sobre estruturas condicionais e um pouco sobre 
estruturas de repetição (repeat).
 Na aula de hoje (aula 07):
 Veremos mais exemplos com foco em estruturas de repetição.
Ilustrando estruturas de repetição
repetir(n)
{
comandos
}
É usada para REPETIR os comandos entre 
parênteses n vezes, no qual n é um
Parâmetro que CONTROLA o número
de vezes que a SEQUÊNCIA de comandos 
deve ser REPETIDA.
Ilustrando estruturas de repetição
O que faz o 
programa?
O que faz o 
programa?
Ilustrando estruturas de repetição
O que faz o 
programa?
O que faz o 
programa?
A PRIMEIRA estrutura de repetição controla o NÚMERO de VEZES que o percurso do QUADRADO será 
feito, e a SEGUNDA estrutura controla a REPETIÇÃO de COMANDOS necessária para PERCORRER o 
QUADRADO.
Observe que a sequência andarFrente(1) e virarEsquerda() será executada OITO vezes.
Ao executar esse programa, 
os COMANDOS que estão entre 
CHAVES serão executados
QUATRO vezes.
Percorre o QUADRADO DUAS
VEZES, usando DUAS 
estruturas de repetição,
uma dentro da outra.
Ilustrando estruturas de repetição
O que faz 
o programa?
 Se você quiser deixar o robô percorrendo esse quadrado 
indefinidamente, você pode usar o comando repetir() sem 
argumentos:
O robô fica percorrendo 
o QUADRADO
até que a execução do
programa seja terminada.
Estruturas de repetição
 Essa estrutura trabalha com a repetição de comandos até que condições se 
satisfaçam;
 Os comandos contidos neste tipo de estrutura podem não ser executados nenhuma 
vez, já que o mesmo testa a condição no início da estrutura.
 Descrição Narrativa:
Enquanto não fizer sol:
 → ficarei em casa.
≠
Estruturas de repetição
repetirEnquanto(condição) 
{
comandos
}
repetir(9) 
{
comandos
}
Na estrutura repetir, a sequência de comandos 
é repetida um NÚMERO de VEZES n PRÉ-DEFINIDO, 
independentemente do estado do ambiente. 
Na estrutura repetirEnquanto, o robô EXECUTA a
AÇÃO ENQUANTO sua PERCEPÇÃO do AMBIENTE 
avaliada pela CONDIÇÃO for VERDADEIRA.
Estruturas de repetição
O que o programa faz?
Estruturas de repetição
Faz com que o robô siga uma linha em branco pintada no chão.
O que o programa faz?
Exercício 1
Abrir o mapa openArea.map
Crie um programa para desenhar um quadrado de lado 4, repetindo apenas 3 
instruções
Exercício 1
Abrir o mapa openArea.map
Crie um programa para desenhar um quadrado de lado 4, repetindo apenas 3 
instruções
repetir(4)
{
 pintarBranco()
 andarFrente(3)
 virarDireita()
}
Exercício 2
Considere ainda o mapa openArea.map
Crie um programa para desenhar quatro quadrados contíguos de lado 4.
Exercício 2
Considere ainda o mapa openArea.map
Crie um programa para desenhar quatro quadrados contíguos de lado 4.
pintarBranco()
repetir(4)
{
 repetir(4){
 andarFrente(3)
 virarDireita()
 }
 virarEsquerda()
}
Exercício 3
 Baixe o mapa linha-branca.map (Tidia).
 Crie um programa para que o robô contorne a linha branca:
 Uma vez;
 Quatro vezes;
 Indefinidamente.
Exercício 3
 Baixe o mapa linha-branca.map (Tidia).
 Crie um programa para que o robô contorne a linha branca:
 Uma vez;
andarFrente(3)
virarDireita()
andarFrente(2)
virarDireita()
andarFrente(6)
virarDireita()
andarFrente(2)
virarDireita()
andarFrente(3)
Exercício 3
 Baixe o mapa linha-branca.map (Tidia).
 Crie um programa para que o robô contorne a linha branca:
 Quatro vezes;
repetir(4) {
 andarFrente(3)
 virarDireita()
 andarFrente(2)
 virarDireita()
 andarFrente(6)
 virarDireita()
 andarFrente(2)
 virarDireita()
 andarFrente(3)
}
Exercício 3
 Baixe o mapa linha-branca.map (Tidia).
 Crie um programa para que o robô contorne a linha branca:
 Indefinidamente
repetir() {
 andarFrente(3)
 virarDireita()
 andarFrente(2)
 virarDireita()
 andarFrente(6)
 virarDireita()
 andarFrente(2)
 virarDireita()
 andarFrente(3)
}
Exercício 4
 Baixe os mapas linha-branca.map e linha-branca2.map(Tidia).
 Crie um programa para que o robô contorne a linha branca
 Indefinidamente.
 O mesmo programa deve funcionar para ambos os mapas!
Exercício 4
 Baixe os mapas linha-branca.map e linha-branca2.map(Tidia).
 Crie um programa para que o robô contorne a linha branca
 Indefinidamente.
 O mesmo programa deve funcionar em ambos os mapas!
repetir()
{
 se(brancoDireita)
 {
 andarFrente(1)
 }
 senão
 {
 virarDireita
 andarFrente(1)
 }
}
Exercício 5
Abrir o mapa default.map. Crie um programa para que o robô se 
movimente até o começo da linha branca e continue o percurso da 
linha branca.
Utilize estruturas condicionais e de repetição!
virarDireita()
andarFrente(7)
Exercício 5
Abrir o mapa default.map. Crie um programa para que o robô se 
movimente até o começo da linha branca e continue o percurso da 
linha branca.
Utilize estruturas condicionais e de repetição!
virarDireita()
andarFrente(7)
repetir()
{
 se(brancoFrente())
 {
 andarFrente(1)
 }
 se(brancoEsquerda())
 {
 virarEsquerda()
 }
 se(brancoDireita())
 {
 virarDireita()
 }
 se(temObstáculoFrente())
 {
 fim
 }
}
Exercício 6
Considere ainda o mapa default.map
Crie um programa para que o robô se movimente sem parar no mapa. Se achar algum obstáculo, 
vire para qualquer lado.
Exercício 6
Considere ainda o mapa default.map
Crie um programa para que o robô se movimente sem parar no mapa. Se achar algum obstáculo, 
vire para qualquer lado.
repetir()
{
 se(temObstáculoFrente())
 {
 se(sortear())
 {
 virarDireita()
 }
 senão
 {
 virarEsquerda()
 }
 }
 senão {
 andarFrente(1)
 }
}
Exercício 7
Considere o mapa espiral1.map (Tidia). Crie um programa para levar o robô do 
ponto inicial até o ponto branco.
Exercício 7
Considere o mapa espiral1.map (Tidia). Crie um programa para levar o robô do 
ponto inicial até o ponto branco. repetirEnquanto(não brancoFrente())
{
 se(vazioFrente())
 {
 andarFrente(1)
 }
 senão
 {
 se(vazioEsquerda())
 {
 virarEsquerda()
 }
 senão se(vazioDireita())
 {
 virarDireita()
 }
 }
}
andarFrente(1)
Exercício 8
Considere o mapa espiral2.map. Crie um programa para levar o robô do ponto 
inicial até o ponto branco.
Exercício 8
Considere o mapa espiral2.map. Crie um programa para levar o robô do ponto 
inicial até o ponto branco.
O programa feito para o
exercício 7 funciona aqui! :-)
(isso se você considerou o
caso vazio à esquerda)
repetirEnquanto(não brancoFrente())
{
 se(vazioFrente())
 {
 andarFrente(1)
 }
 senão
 {
 se(vazioEsquerda())
 {
 virarEsquerda()
 }
 senão se(vazioDireita())
 {
 virarDireita()
 }
 }
}
andarFrente(1)
Exercício 8
repetirEnquanto(não brancoFrente())
{
 CaminharNaEspiral()
}
andarFrente(1)
procedimento CaminharNaEspiral()
{
 se(vazioFrente())
 {
 andarFrente(1)
 }
 senão
 {
 se(vazioEsquerda())
 {
 virarEsquerda()
 }
 senão se(vazioDireita())
 {
 virarDireita()
 }
 }
}
Uso de procedimentos →Exercício 9
Conside o mapa espiral3.map. 
Crie um programa para que o robô 
pegue o objeto e coloque-o na posição 
inicial de onde partiu o robô.
O ponto inicial está indicado por um 
ponto branco
Exercício 9
repetirEnquanto(não temObjetoEsquerda())
{
 CaminharNaEspiral()
}
virarEsquerda()
pegar()
virarDireita()
virarDireita()
repetirEnquanto(não brancoFrente())
{
 CaminharNaEspiral()
}
soltar()
Conside o mapa espiral3.map. 
Crie um programa para que o robô 
pegue o objeto e coloque-o na posição 
inicial de onde partiu o robô.
O ponto inicial está indicado por um 
ponto branco
Exercício 10
Faça um programa para que o robô, no ambiente dado pelo mapa openArea.map, pinte 
linhas brancas aleatórias no chão (random walk) e pare somente quando o robô se 
posicionar em um cruzamento de linhas. Use os comandos andarNorte, andarSul, 
andarLeste, andarOeste. Para facilitar, nesse exercício não é necessário evitar que o robô 
trombe nas paredes do mapa.
Exercício 10
pintarBranco()
repetir(){
 se (sortear()){
 se (sortear()){
 andarNorte(1)
 }
 senão {
 andarSul(1)
 }
 }
 senão {
 se (sortear()){
 andarLeste(1)
 }
 senão {
 andarOeste(1)
 }
 }
 se (brancoDireita()){
 se (brancoEsquerda()){
 fim
 }
 }
}
Condição de parada
Exercício 11
Utilize o mapa: openArea.map.
Robô Faxineiro: Robô que limpa e desinfeta.
- Considere que o robô limpa com o pincel branco, e desinfeta com o pincel preto.
- Faça um programa que, de forma automática (usando laços e condicionais), limpe 
e desinfete todo o ambiente.
- Seu programa deve funcionar para qualquer mapa retângular M X N, sendo M e N 
maiores ou iguais a 3.
Exercício 11
virarEsquerda()
repetirEnquanto(vazioFrente()){
 andarFrente(1)
}
virarEsquerda()
repetirEnquanto(vazioFrente()){
 andarFrente(1)
}
virarEsquerda()
Primeiramente, posicionando o robô no canto inferior esquerdo:
E no slide seguinte, o robô faz a faxina de fato 
Exercício 11
repetir(){
 pintarBranco()
 repetirEnquanto(não temObstáculoFrente()){
 andarFrente(1)
 }
 virarEsquerda()
 virarEsquerda()
 pintarPreto()
 repetirEnquanto(não temObstáculoFrente()){
 andarFrente(1)
 }
 se (temObstáculoDireita()){
 fim
 }
 pararPintar()
 virarDireita()
 andarFrente(1)
 virarDireita()
}
Condição de parada
Teste com outros mapas abertos de tamanhos diferentes!
Atividades para casa
● Capítulo 8 do livro
– Slides da aula 7 (referentes ao capítulo 8 do livro)
● Tidia, seção Repositório
– Estudar e fazer os exercícios
● Capítulo 9 do livro
– Slides da aula 8 (referentes ao capítulo 9 do livro)
● Tidia, seção Repositório
– Estudar e fazer os exercícios
	Slide 1
	Introdução
	Slide 3
	Slide 4
	Slide 6
	Introdução
	Slide 8
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Exercício
	Slide 17
	Slide 19
	Slide 21
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37

Outros materiais