Buscar

BC_Aula6

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 32 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 32 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 32 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)
Lógica de Programação: Estruturas 
Condicionais
David Correa Martins Jr
david.martins@ufabc.edu.br
Universidade Federal do ABC (UFABC)
Introdução
 Em um computador um conjunto de instruções pode 
compreender:
 Operações aritméticas que encontramos em uma calculadora 
simples:
 Soma
 Multiplicação
 Divisão
 Subtração
 Até instruções utilizadas para tomar decisões
 Ler dados a partir do teclado
 Gravar esses dados no disco
 Etc
Introdução
 Aprender a programar não é uma tarefa trivial:
 Pois envolve manipular uma representação abstrata 
do mundo real, criada dentro do computador:
 Aprender as questões relativas à linguagem que 
está sendo usada para criar os programas e a lógica 
de programação em si
 Na aula anterior:
 Vimos os primeiros conceitos de Lógica de 
Programação:
 Instrução e sequência de instruções
Objetivos da Aula
 Objetivos desta aula:
 Apresentaremos um conceito mais elaborado:
 As estruturas condicionais
Estruturas
 Estruturas de controle permitem o controle do fluxo 
de execução dos comandos 
 Temos três estruturas básicas de controle:
 Sequencial
 Condicional ou Desvio (se, if)
 Repetição
Estrutura de Controle Sequencial
 Estrutura Sequencial
 É padrão em toda a forma de algoritmo.
 Uma estrutura sequencial é um conjunto de 
comandos que serão executados em uma sequência 
linear, de cima para baixo
Os comandos 
serão executados 
na mesma ordem 
em que foram 
escritos
C1
C2
...
Cn
Tomando Decisões – Estruturas Condicionais
 Estrutura Condicional:
 É também conhecida como de decisão ou seleção
 Um desvio condicional é usado para escolher entre 
cursos alternativos de ação em um programa
Tomando Decisões – Estruturas Condicionais
 Estrutura Condicional
 se subdivide em:
 Estrutura/desvio condicional simples (se-
então)
 Estrutura/desvio condicional composta(o) (se-
então-senão)
Tomando Decisões: Estrutura Condicional Simples
No desvio condicional simples uma condição é 
avaliada e, se o resultado for verdadeiro, um 
conjunto de instruções é executado
A condição irá determinar a execução ou não de 
um determinado comando
 Exemplo:
 Descrição narrativa: SE fizer sol ENTÃO vou à praia
 Fluxograma:
SE tempo = Sol 
ENTÃO
 {
Vou à Praia
 }
Linguagem 
Algorítmica
Tomando Decisões: Estrutura Condicional 
Composta
 No desvio condicional composto, a condição irá determinar qual comando 
será executado dentre dois listados
 Na estrutura composta 
temos: 
 “Se.....Então.....Senão”.
Então
Senão
Tomando Decisões: Estrutura Condicional 
Composta
 Exemplo:
 Descrição Narrativa: SE fizer sol ENTÃO vou à praia SENÃO 
jogarei cartas.
 Fluxograma:
Linguagem 
Algorítmica
SE tempo = sol 
ENTÃO
{
Vou à praia
}
SENÃO
{
Jogarei cartas
}
Então
Senão
RoboMind
Exercício 1
Crie um programa para ir até a baliza mais próxima e após 
identifica-la deve leva-la até o ponto de inicio (default.map)
Exercício 1
Crie um programa para ir até a baliza mais próxima e após 
identifica-la deve leva-la até o ponto de inicio (default.map)
virarDireita()
andarFrente(3)
virarDireita()
andarFrente(1)
se(temObjetoFrente()){
  pegar()
}
virarDireita()
andarFrente(3)
virarDireita()
soltar()
Exercício 2
Crie um programa para ir até a baliza mais distante e 
a deixe ao lado da outra baliza (default.map)
Exercício 2
Crie um programa para ir até a baliza mais distante e 
a deixe ao lado da outra baliza (default.map)
virarDireita()
andarFrente(3)
virarEsquerda()
andarFrente(6)
virarDireita()
andarFrente(10)
virarEsquerda()
andarFrente(2)
se(temObjetoFrente()) {  pegar() }
virarDireita()
virarDireita()
andarFrente(4)
virarDireita()
andarFrente(2)
virarEsquerda()
andarFrente(3)
virarDireita()
andarFrente(8)
virarEsquerda()
andarFrente(1)
soltar()
Estrutura Condicionais com o RoboMind
 O RoboMind tem comandos para observar o ambiente, para que os 
seus programas possam tomar decisões baseando-se no estado do 
ambiente
 O robô pode observar as células da: Esquerda, Direita e Frente
 As observações podem ser de cinco tipos diferentes:
– Existe um obstáculo na célula? (ladrilho)
– A célula está vazia?
– Tem um objeto na célula? (baliza)
– A célula está pintada de branco?
– A célula está pintada de preto?
 Atualmente não existem auto-observações:
– Estou carregando algum objeto?
– Qual é o pincel que estou utilizando?
RoboMind
Estrutura Condicional com o RoboMind
 Resumo dos comandos para testar as observações:
Exercício 3
Abrir o mapa findSpot1.map
Crie um programa para que o robô estacione no ponto branco. Use o sensor de consulta de 'ponto 
branco esquerda'. Depois, execute o mesmo programa no mapa findSpot2.map para ver o que 
acontece.
Exercício 3
Abrir o mapa findSpot1.map
Crie um programa para que o robô estacione no ponto branco. Use o sensor de consulta de 'ponto 
branco esquerda'. Depois, execute o mesmo programa no mapa findSpot2.map para ver o que 
acontece.
andarFrente(5)
se(brancoEsquerda()) {
  virarEsquerda()
  andarFrente(1)
  virarDireita()
  virarDireita()
}
Exercício 4
Abrir o mapa findSpot1.map
Crie um programa para que o robô estacione no ponto branco. Use o sensor de consulta de 'ponto 
branco esquerda'. Podemos deixar o robô mais “esperto” usando o comando “repetir()”
Exercício 4
Abrir o mapa findSpot1.map
Crie um programa para que o robô estacione no ponto branco. Use o sensor de consulta de 'ponto 
branco esquerda'. Podemos deixar o robô mais “esperto” usando o comando “repetir()”
repetir() {
  se(brancoEsquerda()) {
    virarEsquerda()
    andarFrente(1)
    virarDireita()
    virarDireita()
    fim
  }
  senão{
    andarFrente(1)  
  }
}
Observe que esse mesmo programa funciona também para o
mapa findSpot2.map!
Exercício 5
Abrir o mapa default.map
Crie um programa para que o robô se movimente sem parar no mapa. Se achar 
algum obstáculo, vire a direita. E se achar uma região branca, o robô deve parar.
Exercício 5
Abrir o mapa default.map
Crie um programa para que o robô se movimente sem parar no mapa. Se achar 
algum obstáculo, vire a direita. E se achar uma região branca, o robô deve parar.
repetir() {
  se(temObstáculoFrente()) {
    virarDireita()
  }
  senão {
    andarFrente(1)    
  }
  
  se(brancoFrente){
    fim    
  }    
}
Exercício 6
Crie o mapa abaixo e salve no diretório maps do Robomind
Crie um programa para fazer o robô andar à Leste indefinidamente. Caso 
encontre o objeto (baliza) em sua frente, o robô deve pegar o objeto e terminar 
(fim). Se encontrar um obstáculo em sua frente, o robô deve desviá-lo.
Exercício 6
Crie o mapa abaixo e salve no diretório maps do Robomind
Crie um programa para fazer o robô andar à Leste indefinidamente. Caso 
encontre o objeto (baliza) em sua frente, o robô deve pegar o objeto e terminar 
(fim). Se encontrar um obstáculo em sua frente, o robô deve desviá-lo.
repetir() {
  andarLeste(1)
  se(temObjetoFrente()) {
    pegar()
    fim
  }
  se(temObstáculoFrente()) {
    andarNorte(1)
    andarLeste(2)
    andarSul(1)
  }  
}
Exercício 7
Crie o mapa abaixo e salve no diretório maps do Robomind
Crie um programa para fazer o robô andar à Leste indefinidamente. Caso 
encontre o objeto (baliza) em sua frente, o robô deve pegar o objeto e terminar 
(fim). Se encontrar um obstáculo em sua frente, o robô deve desviá-lo.
Aplique o programa do exercício anterior e veja o que acontece!
Exercício 8
Carregue o mapa formigaLangton.map disponível no 
Repositório do Tidia (Aula 6)
Crie um programa para que o robô se comporte como umaformiga de Langton:
● Toda vez que o robô avistar um ponto branco à sua frente, ele 
deve:
– Andar uma casa à frente, pintar de preto e virar à direita
● Toda vez que o robô avistar um ponto preto à sua frente, ele deve:
– Andar uma casa à frente, pintar de branco e virar à esquerda
● Toda vez que o robô avistar um obstáculo à sua frente, ele deve:
– sortear se vira à esquerda ou direita (usando a função sortear())
Exercício 8
● A função sortear() devolve verdadeiro 
ou falso com 50% de probabilidade 
cada
– se (sortear()) {
 …
}
senão {
 ...
} 
Exercício 8
repetir() {
 se(brancoFrente()){
 andarFrente(1)
 pintarPreto()
 virarDireita()
 }
 se(pretoFrente()){
 andarFrente(1)
 pintarBranco()
 virarEsquerda()
 }
 se(temObstáculoFrente()){
 se (sortear()){
 virarEsquerda()
 }
 senão {
 virarDireita()
 }
 }
}
Atividades para casa
● Capítulo 7 do livro
– Slides da aula 6 (referentes ao capítulo 7 do livro)
● Tidia, seção Repositório
– Estudar e fazer os exercícios
● 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
	Slide 1
	Introdução
	Introdução
	Objetivos da Aula
	Estruturas
	Estrutura de Controle Seqüencial
	Tomando Decisões – Estruturas Condicionais
	Tomando Decisões – Estruturas Condicionais
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Estrutura Condicionais com o RoboMind
	Slide 18
	Estrutura Condicional com o RoboMind
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32

Outros materiais