Estruturas Condicionais
-
Upload
marcella-cafe -
Category
Documents
-
view
287 -
download
4
description
Transcript of Estruturas Condicionais
-
Bases Computacionais da Cincia (BC-0005)
1
Lgica de Programao: Estruturas Condicionais
Maria das Graas Bruno [email protected] de Matemtica, Computao e Cognio (CMCC)Universidade Federal do ABC (UFABC)
-
Introduo Em um computador um conjunto de instrues pode compreender:
Operaes aritmticas que encontramos em uma calculadora simples:
Soma
Multiplicao
Diviso
Subtrao
At instrues utilizadas para tomar decises
Ler dados a partir do teclado
Gravar esses dados no disco
Etc
2
-
Introduo
Aprender a programar no uma tarefa trivial:
Pois envolve manipular uma representao abstrata do mundo real, criada dentro do computador:
Aprender as questes relativas linguagem que est sendo usada para criar os programas e a lgica de programao em si
No captulo anterior:
Vimos os primeiros conceitos de Lgica de Programao:
Instruo e sequncia de instrues
3
-
Objetivos da Aula
Objetivos desta aula:
Apresentaremos um conceito mais elaborado:
As estruturas condicionais
4
-
Estruturas
Estruturas de controle permitem o controle do fluxo de execuo dos comandos
Temos trs estruturas bsicas de controle:
Seqencial
Condicional ou Desvio
Repetio
5
-
Estrutura de Controle Seqencial
Estrutura Seqencial
padro em toda a forma de algoritmo:
Seqncia onde o computador ir ler os comandos de cima para baixo, e da esquerda para direita
Uma estrutura seqencial um conjunto de comandos que sero executados em uma seqncia linear, de cima para baixo
6
Os comandos sero executados na
mesma ordem em que foram escritos
C1C2...Cn
-
Tomando Decises Estruturas Condicionais
Estrutura Condicional:
tambm conhecida como de deciso ou seleo
Um desvio condicional usado para escolher entre cursos alternativos de ao em um programa
7
Estrutura Condicional: caracterizada por executar determinados cdigos de
programao que dependem da veracidade de uma condio
-
Tomando Decises Estruturas Condicionais
O nosso cotidiano repleto de tomadas de decises:
Voc deve decidir entre ir universidade de carro ou bicicleta
Estudar para a disciplina de Bases ou ir festa
Para cada deciso, h conseqncias especficas
Estrutura Condicional:
Esta estrutura se subdivide em outras duas estruturas:
Estrutura/desvio condicional simples (se-ento)
Estrutura/desvio condicional composta(o) (se-ento-seno)
8
-
Tomando Decises: Estrutura Condicional Simples
No desvio condicional simples uma condio avaliada e, se o resultado for verdadeiro, um conjunto de instrues executado
A condio ir determinar a execuo ou no de um determinado comando
9
Exemplo: Descrio narrativa: SE fizer sol ENTO vou praia Fluxograma:
SE tempo = Sol ENTO{
Vou Praia}
Linguagem Algortmica
-
Tomando Decises: Estrutura Condicional Composta
No desvio condicional composto, a condio ir determinar qual comando ser executado dentre dois listados
10
Na estrutura composta temos: Se.....Ento.....Sen
o.
Ento
Seno
-
Tomando Decises: Estrutura Condicional Composta
Exemplo:
Descrio Narrativa: SE fizer sol ENTO vou praia SENO jogarei cartas.
Fluxograma:
11
Linguagem Algortmica
SE tempo = sol ENTO{
Vou praia}SENO{
Jogarei cartas}
Ento
Seno
-
12
RoboMind
-
Mapas no RoboMind
Para maiores detalhes de como montar um mapa no RoboMind veja em: http://www.robomind.net/downloads/RoboMapFormat.pdf
Os elementos que podem ser colocados no mapa so:
Ladrilhos/Obstculos
Balizas/Objetos
Rob
Espaos em branco
Linha branca ou preta
13
-
Mapas no RoboMind Ladrilhos: os ladrilhos so representados por letras maisculas
Os ladrilhos existentes so:
14
-
Mapas no RoboMind15
mapaTeste2.map
-
Mapas no RoboMind Espao: para inserir
espaos em branco basta deixar um espao livro no arquivo *.map
Objeto/Baliza: o caracter * (asterisco)
insere um objeto/baliza no arquivo mapa
Incio do rob: utilize o caracter @ (arroba)
16
-
Mapas no RoboMind Traos (Pintar) : Traos podem ser adicionados ao mapa escrevendo uma
lista com os seguintes pares:
(cor, tipo, x , y)
cor = A cor da pintura
Pode ser somente w ou b, respectivamente branco e preto
tipo = A forma da linha
. = um ponto
= uma linha horizontal para a direita
| = uma linha vertical para baixo
x = a posio horizontal onde a linha comea
y = a posio vertical onde a linha comea
17
-
Mapas no RoboMind Linhas horizontais e verticais ocupam exatamente dois blocos
Um ponto ocupa um bloco
No exemplo duas linhas so definidas:
{ (w, -, 2, 2,) , (b, . , 2, 3) }
uma linha horizontal em x = 2, y = 2, e um ponto preto em x = 2, y = 3
O canto superior esquerdo da tela x = 0 e y = 0
A direo x da esquerda para a direita, a direo y de cima para baixo
Observe que o curso da lista deve comear imediatamente depois de pintar e no so permitidos espaos em branco (espaos, tabulaes, linhas de quebra)
18
-
Seguir o Rob ou No?
Comando Exibir-> Acompanhar Rob Caso esta opo tenha sido selecionada, a execuo
da simulao ir focar no movimento do rob. Sendo assim, no ser possvel analisar uma outra rea do mapa onde o rob no esteja. Voc pode tentar arrastar o mapa para tal posio, mas ele voltar para o local onde est o rob
Sem a opo de rastreamento o sistema mostra qualquer local do mapa, mesmo naqueles onde o rob no est
19
-
Estrutura Condicionais com o RoboMind
O RoboMind tem comandos para observar o ambiente, para que os seus programas possam tomar decises baseando-se no estado do ambiente
O rob pode observar as clulas da:
Esquerda
Direita
Frente
As observaes podem ser de cinco tipos diferentes:
Existe um obstculo na clula? (ladrilho)
A clula est vazia?
Tem um objeto na clula? (baliza)
A clula est pintada de branco?
A clula est pintada de preto?
20
-
Estrutura Condicional com o RoboMind
Resumo dos comandos para testar as observaes:
21
-
Estrutura Condicional com o RoboMind
Comandos de observao do ambiente podem ser usadas em combinao com estruturas de deciso para que o rob tome decises baseando-se no estado do mundo:
22
se (condio){
comandos}
Comandos so executados somente se a CONDIO for
VERDADEIRA
-
Estrutura Condicional com o RoboMind
O que faz o programa a seguir?
23
Observa a clula da esquerda e, se ela estiver pintada de
branco, repinta a clula de preto, voltando a sua
posio Digite estes comandos no RoboMind e salve-o com o nome
testeEsquerda.irobot Altere o arquivo mapaTeste2.map para inicializar o rob ao lado
direito da marca branca Execute o script testeEsquerda.irobot. Diminua a velocidade
de execuo e d um zoom para ver o rob mais de perto
-
Estrutura Condicional com o RoboMind
24
Se voc tentar executar esse programa e a clula da esquerda no estiver
pintada de branco?
Nada acontece pois o bloco de cdigo ser executado apenas se aquela clula estiver
pintada de branco
Como resolver esta situao??
-
Estrutura Condicional com o RoboMind
Voc pode usar uma variao dessa estrutura de controle para instruir o rob a realizar uma atividade alternativa, caso a condio NO seja verdadeira:
25
se (condio) {comandos} seno
{comandos}
Nesse caso, caso SE a clula esteja pintada de branco, o rob ir pint-la de preto e voltar a sua posio anterior. CASO CONTRRIO, o rob ir andar trs posies para a frente e parar
Observe que apenas UM dos blocos de comandos executado
-
Expresses Lgicas
No arquivo mapaTeste2.map altere a posio do rob para um local onde no haja marca branca na sua direita
Insira no script testeEsquerda.irobot os comandos a seguir:
seno{ andarFrente(3)}
26
-
Expresses Lgicas A condio do comando SE , na verdade, uma expresso lgica que pode
assumir os valores VERDADEIRO ou FALSO, dependendo do estado do cenrio
Expresses lgicas:
Tambm podem envolver combinao de expresses simples atravs do uso de conectivos lgicos
O RoboMind dispe de trs conectivos lgicos:
No
E
Ou
27
-
Expresses Lgicas O conectivo E compara duas expresses lgicas e o resultado
VERDADEIRO apenas se as DUAS forem VERDADEIRAS
O conectivo OU compara duas expresses e o resultado da expresso VERDADEIRO se qualquer uma das DUAS, ou AMBAS, forem VERDADEIRAS
28
-
Expresses Lgicas Insira o script a seguir no RoboMind
29
se(sortear() e no brancoEsquerda())
{ virarEsquerda() andarFrente(1) pintarPreto() pararPintar() andarTrs(1) virarDireita()}seno{ andarFrente(3)}
Abra um mapa onde o rob ser inicializado em um local que no haja marca branca na esquerda
Execute algumas vezes o programa e veja quantas vezes o trecho do cdigo SE foi executado
E quantas vezes o trecho do cdigo ENTO foi executado
Explique este comportamento do programa
-
30
Exerccio
-
31
Neste exerccio iremos fazer com que o rob tome decises para contornar os obstculos sua frente
Vamos criar um cenrio em que o rob deve se mover em linha reta da esquerda para a direita, mas com um obstculo frente. O arquivo para a criao do mapa para esse cenrio est a seguir:
-
32
O caminho a ser percorrido pelo rob para esse mapa pode ser visto na figura abaixo. A princpio poderamos usar uma estratgia parecida com a da aula passada, e programar o caminho na mo, e passando pelos pontos que contornam a caixa. Entretanto, essa abordagem no muito flexvel, pois se mudarmos a caixa de posio, o programa perde a utilidade
-
33
O programa a seguir faz com que o rob atravesse o cenrio da esquerda para a direita
O comando repetir(11) tem por objetivo repetir o comando andarLeste(1) onze vezes
Esse programa funcionaria se no houvesse a CAIXA no cenrio, mas se voc executar esse programa nesse cenrio, o seu programa ficar parado em frente caixa
Execute este programa e veja o que ocorre D um zoom no rob e diminua a velocidade de execuo da
simulao
-
34
Neste script o rob d um passo de cada vez, e se houver um obstculo na frente ele contorna a caixa dando um passo para o norte, dois para o leste, e um para o sul
Observe que o nmero de vezes em que a sequncia repetida foi diminuda para 10 pois o rob d dois passos para a frente quando est contornando a caixa
Vamos alterar o programa conforme o script a seguir:repetir(10){ se
(temObstculoFrente()) { andarNorte(1) andarLeste(2) andarSul(1) } seno { andarLeste(1) }}
-
35
Esse programa funciona para qualquer lugar que voc colocar a caixa no caminho do rob
Isto porque a posio da caixa no est codificada diretamente no cdigo, mas ela encontrada testando-se se h um obstculo frente
Experimente mudar a posio da caixa no cenrio para se certificar disso
repetir(10){ se
(temObstculoFrente()) { andarNorte(1) andarLeste(2) andarSul(1) } seno { andarLeste(1) }}
-
36
A mesma estrutura do programa funciona mesmo que existam duas caixas separadas no cenrio
Vamos test-lo agora num cenrio com duas caixas, que pode ser construdo usando a descrio do mapa mostrada na figura a seguir
Para percorrer esse cenrio voc pode usar o programa ao lado
repetir(9){ se
(temObstculoFrente())
{ andarNorte(1) andarLeste(2) andarSul(1) } seno { andarLeste(1) }}
-
37
Novamente, no importa a posio das caixa no caminho do rob (desde que elas no estejam
juntas), pois o rob ir verificar a posio delas testando se h um
obstculo a frente.
-
38
Faa um programa para que o rob, no ambiente dado pelo mapa openArea.map, pinte de branco um quadrado do seguinte modo: O rob anda para frente trs posies e escolhe
aleatoriamente uma direo (esquerda ou direita) Depois conclui a pintura segundo esta escolha
Execute o programa algumas vezes e observe quando ocorreu o sorteio. Quantas vezes ele fez o quadrado para cada lado?
-
39
pintarBranco()andarNorte(3)se (sortear()){ andarLeste(3) andarSul(3) andarOeste(3)}seno{ andarOeste(3) andarSul(3) andarLeste(3)}pararPintar()
-
40
Atividades para Casa
-
Atividades para Casa
Exerccios:
Propostos (1-7): Pgina 164;
Para Casa (1-8): Pginas 164-165.
41
Slide 1IntroduoIntroduoObjetivos da AulaEstruturasEstrutura de Controle SeqencialTomando Decises Estruturas CondicionaisTomando Decises Estruturas CondicionaisTomando Decises: Estrutura Condicional SimplesTomando Decises: Estrutura Condicional CompostaTomando Decises: Estrutura Condicional CompostaSlide 12Mapas no RoboMindMapas no RoboMindMapas no RoboMindMapas no RoboMindMapas no RoboMindMapas no RoboMindSeguir o Rob ou No?Estrutura Condicionais com o RoboMindEstrutura Condicional com o RoboMindEstrutura Condicional com o RoboMindEstrutura Condicional com o RoboMindEstrutura Condicional com o RoboMindEstrutura Condicional com o RoboMindExpresses LgicasExpresses LgicasExpresses LgicasExpresses LgicasSlide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Atividades para Casa