Baixe o app para aproveitar ainda mais
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
Compartilhar