180 likes | 377 Views
Lógica de Programação. Introdução. Introdução. Nesta aula Introdução à Lógica de Programação Algoritmizando a Lógica Conceitos e Exemplos de Algoritmos Noções de Fluxo de Controle Objetivos Apresentar os conceitos elementares de lógica e sua aplicações no cotidiano Definir algoritmo
E N D
Lógica de Programação Introdução
Introdução • Nesta aula • Introdução à Lógica de Programação • Algoritmizando a Lógica • Conceitos e Exemplos de Algoritmos • Noções de Fluxo de Controle • Objetivos • Apresentar os conceitos elementares de lógica e sua aplicações no cotidiano • Definir algoritmo • Estabelecer uma relação entre lógica e algoritmos
Noções de Lógica • Lógica: Ciência que estuda as formas do pensamento • Sempre que pensamos a lógica nos acompanha • Um bebê sabe que precisa chorar para receber atenção • Um casal com 3 filhos notou que um vaso estava quebrado, enquanto 2 das crianças estavam na escola. Quem é o culpado? • A gaveta está fechada. A caneta está dentro da gaveta. Precisamos primeiro abrir a gaveta para depois pegar a caneta. • O pensamento (e a lógica) pode ser expresso através da palavra falada ou da palavra escrita • Um mesmo pensamento pode ser expresso em inúmeros idiomas, tanto oralmente quanto por escrito • Vamos estudar uma forma única de representação
Algoritmo • É o pensamento descrito como uma sequência de passos que visam atingir um objetivo • Algoritmos no dia-a-dia: Receita de bolo, orientação para se chegar em algum endereço • Qual sua importância na programação? • Representar o raciocínio, independentemente de detalhes computacionais, que podem ser acrescentados mais tarde • Focalizar primeiro na resolução algorítmica do problema, possibilitando depois codificá-la em qualquer linguagem
Exemplos • Trocar uma lâmpada • Sequência Algoritmo 1.1: pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; subir na escada; retirar lâmpada velha; colocar lâmpada nova.
Exemplos • Trocar uma lâmpada SE estiver queimada • Seleção (Decisão) Algoritmo 1.2: pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; acionar o interruptor; se a lâmpada não acender, então subir na escada; retirar lâmpada queimada; colocar lâmpada nova.
Exemplos • Trocar uma lâmpada SE estiver queimada (v. 2) • Seleção (Decisão) Algoritmo 1.3: Evita buscar a escada e lâmpada acionar o interruptor; se a lâmpada não acender, então pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; acionar o interruptor; subir na escada; retirar lâmpada queimada; colocar lâmpada nova.
Exemplos • Trocar uma lâmpada SE estiver queimada (v. 3) • Seleção (Decisão) Algoritmo 1.4: Re-teste depois da troca acionar o interruptor; se a lâmpada não acender, então pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; acionar o interruptor; subir na escada; retirar lâmpada queimada; colocar lâmpada nova; se a lâmpada não acender, então retirar lâmpada queimada; colocar lâmpada nova; se a lâmpada não acender, então . . .
Exemplos • Trocar uma lâmpada SE estiver queimada (v. 4) • Repetição Algoritmo 1.5: Re-teste depois da troca (por repetição) acionar o interruptor; se a lâmpada não acender, então pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; acionar o interruptor; subir na escada; retirar lâmpada queimada; colocar lâmpada nova; enquanto a lâmpada não acender, faça retirar lâmpada queimada; colocar lâmpada nova;
Exemplos • Trocar 10 lâmpadas SE estiverem queimadas • Repetição Algoritmo 1.6: Escrever 10 vezes acionar o interruptor do primeiro soquete; se a lâmpada não acender, então pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; acionar o interruptor; subir na escada; retirar lâmpada queimada; colocar lâmpada nova; enquanto a lâmpada não acender, faça retirar lâmpada queimada; colocar lâmpada nova; acionar o interruptor do segundo soquete; . . .
Exemplos • Trocar 10 lâmpadas SE estiverem queimadas (v. 2) • Repetição Algoritmo 1.7: Contagem de trocas ir até o interruptor do primeiro soquete; enquanto a quantidade de soquetes testados for menor que 10, faça acionar o interruptor; se a lâmpada não acender, então pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; acionar o interruptor; subir na escada; retirar lâmpada queimada; colocar lâmpada nova; enquanto a lâmpada não acender, faça retirar lâmpada queimada; colocar lâmpada nova; ir até o interruptor do próximo soquete;
Formas de Representação • Algoritmo 1.7 em Fluxograma início ir para o primeiro soquete posicionar escada não acendeu? F soquetes restantes < 10 buscar lâmpada nova F V acionar o interruptor retirar a lâmpada queimada V acionar o interruptor subir na escada colocar lâmpada nova não acendeu? retirar a lâmpada queimada F ir ao próximo soquete colocar lâmpada nova V pegar uma escada acionar o interruptor fim
Formas de Representação • Algoritmo 1.7 em Chapin
Formas de Representação • Gráficas (Fluxograma e Chapin) • Características • Maior clareza no fluxo de execução • Linguagem visual • Requer conhecimento de convenções gráficas • Textuais (Português Estruturado) • Apresenta mais vantagens, desde que se tomem alguns cuidados: • Riqueza gramatical de nossa língua pode levar a ambiguidades • A frase “O pregador foi grampeado durante o conserto” tem 8 sentidos diferentes quando pronunciada • Para resolver, utilizaremos um conjunto restrito de regras, conhecido como Português Estruturado
Exercício 01 • No torneio de atletismo, Barnabé, Gumercindo e Teodoro participam das provas de 100 metros rasos, salto em distância e arremesso de dardo. Cada um deles conseguiu um primeiro lugar, um segundo e um terceiro. Descubra o que cada um conquistou, sabendo que: • Gumercindo venceu Barnabé no salto em distância; • Teodoro chegou atrás de Gumercindo no arremesso de dardo; • Barnabé não chegou em primeiro nos 100 metros rasos;
Resposta 01 A primeira informação garante que Barnabé não foi o primeiro e Gumercindo não foi o último no salto em distância. Com a segunda informação sabemos que Teodoro não foi o primeiro no arremesso de dardo e Gumercindo não foi o último. Assim podemos concluir que Gumercindo foi o último nos cem metros rasos. A terceira informação garante que Barnabé não foi o primeiro nos cem metros, como também não chegou em último (lugar ocupado por Gumercindo); logo ele foi segundo. Portanto, o primeiro ficou com Teodoro. Sabemos da primeira informação que Barnabé não foi o primeiro no salto; também sabemos que não foi segundo, pois ocupou essa posição nos cem metros. Portanto, terá sido o terceiro, e isso o coloca como primeiro no arremesso de dardo. No dardo, Gumercindo só pode ter sido o segundo, pois a informação número dois nos garantiu que ele não foi o último. Então sobrou para Teodoro o último lugar. No salto em distância, sabemos que Barnabé foi o terceiro, Gumercindo o primeiro e Teodoro o segundo.
Resposta 01 (cont.) • Colocação final (do primeiro lugar para o terceiro): • Cem metros rasos: Teodoro, Barnabé, Gumercindo; • Arremesso de dardo: Barnabé, Gumercindo, Teodoro; • Salto em distância: Gumercindo, Teodoro, Barnabé.
Exercício 02 • Tendo como exemplo os algoritmos desenvolvidos para solucionar o problema da troca de lâmpadas, elabore um algoritmo que mostre os passos necessários para trocar um pneu furado. Considere o seguinte conjunto de situações: • Trocar o pneu traseiro esquerdo; • Trocar o pneu traseiro esquerdo e, antes, verificar se o pneu reserva está em condições de uso; • Verificar se existe algum pneu furado; se houver, verificar o pneu reserva e, então, trocar o pneu correto. Para cada algoritmo faça um refinamento do anterior, introduzindo novas ações e alterando o fluxo de execução de forma compatível com as situações apresentadas