Aula 1

1,995 views
1,846 views

Published on

Lógica de programação e introdução a algoritmos

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,995
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
64
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Aula 1

  1. 1. Prof. Fernando Augusto Salla LÓGICA DE PROGRAMAÇÃO E ALGORITMOS
  2. 2. Introdução à Lógica ¨  Comumente associada apenas à matemática ¤  Não percebemos a sua área de atuação ¤  Relação com diversas ciências ¨  Pode ser considerada a “correção do pensamento” ¤  Preocupa-se em determinar quais operações são válidas ou não ¨  Como filosofia, procura entender o motivo de pensarmos assim e não de outra maneira ¨  Como arte ou técnica, ensina a usar as leis do pensamento corretamente
  3. 3. Introdução à Lógica ¨  Pode ser definida como: ¤  “Arte de pensar bem” ¤  “Ciência das forma do pensamento” ¨  A forma mais complexa de pensar é o raciocínio ¤  A lógica estuda a “correção do raciocínio” ¨  Tem em vista a “ordem da razão ¤  Podemos pensar de maneira desordenada ¨  A lógica ensina a pôr “ordem no pensamento”
  4. 4. Introdução à Lógica ¨  Exemplos ¤  Todo mamífero é um animal ¤  Todo cavalo é um mamífero ¤  Logo, todo cavalo é um animal ¤  Brasil é um país do planeta Terra ¤  Todos os brasileiros são do Brasil ¤  Portanto, todo brasileiro é terráqueo
  5. 5. Introdução à Lógica ¨  Argumentos compostos de duas premissas e uma conclusão ¤  As relações podem ser válidas ou inválidas ¨  Um dos objetivos da lógica é permitir verificar a validade dos argumentos ¨  Lógica ou ilógica nos acompanha sempre que pensamos
  6. 6. Introdução à Lógica ¨  Quando falamos ou escrevemos precisamos pensar ¤  Logo, utilizamos a lógica ¨  A lógica é muito importante em nossa vida ¤  Na teoria e na prática ¤  Ao falar, pensar, escrever ou agir corretamente ¤  Precisamos “ordenar o pensamento” ¨  Exemplo: ¤  A gaveta está fechada ¤  A caneta está dentro da gaveta ¤  É preciso primeiro abrir a gaveta para pegar a caneta
  7. 7. Lógica de Programação ¨  Uso correto das leis do pensamento, ordem da razão e processos de raciocínio e simbolização formais na programação de computadores ¨  Resolver com qualidade os problemas que se deseja solucionar ¤  Soluções logicamente coerentes e válidas ¨  O raciocínio é abstrato, algo intangível ¤  O ser humano o expressa pela fala ou escrita ¤  Baseia-se em um determinado idioma ¤  Idiomas possuem uma série de padrões (gramática)
  8. 8. Lógica de Programação ¨  É possível expressar o mesmo raciocínio em diversos idiomas ¤  Continuará representando o mesmo raciocínio ¤  Usará apenas outra convenção ¨  Algo similar ocorre com a lógica de programação ¤  É criada por uma mente treinada ¤  Pode ser aplicada em qualquer uma das diversas linguagens de programação ¤  Cada linguagem possui suas diversidades ¨  Usamos os ALGORITMOS para fugir destas diferenças ¤  Representa mais fielmente o raciocínio da lógica de programação
  9. 9. Algoritmos ¨  Conceito central da programação e da ciência da computação ¨  Sequência finita de passos que visam atingir um objetivo bem definido ¨  Para especificar uma sequência de passos é necessário utilizar ordem ¤  Pensar em ordem ¤  Utilizamos lógica
  10. 10. Algoritmos ¨  São comuns no nosso dia-a-dia ¨  Pode ser aplicado a qualquer situação que exija a descrição da solução ¨  A receita de um bolo é um bom exemplo ¤  Ingredientes e a sequência de passos para o preparo (ações) ¤  Se cumpridos fielmente teremos o bolo conforme desejado inicialmente (objetivo bem definido)
  11. 11. Algoritmos ¨  Outros exemplos de algoritmos em nosso cotidiano ¤  Instruções de uso ¤  Manual de instalação ¤  Receitas de cozinha ¤  Partituras musicais ¨  Quando perguntamos o caminho de um local, temos um algoritmos cujo seguimento nos leva ao objetivo
  12. 12. Algoritmos ¨  Um algoritmo precisa ter ações claras e precisas ¨  Parte de um estado inicial e após um período de tempo finito produz um estado final ¤  Resultado previsível e bem definido ¨  Fixa um padrão de comportamento a ser seguido ¤  Tem como resultado final a solução de um problema ¤  Sempre que executado (sob as mesmas condições) deve produzir o mesmo resultado
  13. 13. Algoritmos ¨  Normas para execução de ações ¤  Evento que ocorre em período de tempo finito ¤  Possui efeito bem definido e intencionado ¤  Exemplos: n  “Caminhar até a próxima esquina” n  “Colocar um livro em cima da mesa” ¨  Programar é, basicamente, construir algoritmos
  14. 14. Algoritmos ¨  Construir algoritmos eficientes exige considerar algumas regras no momento da construção ¤  Definir ações simples e sem ambiguidade ¤  Organizar as ações em uma ordem lógica ¤  Estabelecer as ações dentro de uma sequência finita de passos Ação 1 Ação 2 Ação 3
  15. 15. Algoritmos ¨  Exemplo de algoritmo (em português) para a troca de uma lâmpada ¤  Pegar uma escada; ¤  Posicionar a escada embaixo da lâmpada; ¤  Buscar uma lâmpada nova; ¤  Subir na escada; ¤  Retirar a lâmpada queimada; ¤  Instalar a lâmpada nova.
  16. 16. Algoritmos ¨  Involuntariamente definimos uma sequência de ações ¤  Naturalmente seguido por qualquer pessoa (padrão de comportamento) ¨  A sequenciação rege o fluxo de execução do algoritmo ¤  Determina a primeira ação a ser executada e qual a ação seguinte ¤  Sequência linear (de cima para baixo)
  17. 17. Algoritmos ¨  Exercício: Descrevam os passos necessários para a troca de um pneu 1.  Desligar o carro 2.  Pegar a chave de roda e o macaco 3.  Pegar o estepe 4.  Erguer o carro com o macaco 5.  Retirar os 4 parafusos do pneu furado 6.  Remover o pneu furado 7.  Colocar o estepe 8.  Apertar os 4 parafusos 9.  Baixar o carro com o macaco 10.  Guardar as ferramentas
  18. 18. Algoritmos ¨  No algoritmo da lâmpada tínhamos um objetivo bem definido ¤  Trocar a lâmpada ¨  E se a lâmpada não estivesse queimada? ¤  A execução das ações levaria a troca da lâmpada ¤  Independente de estar queimada ou não ¤  Essa situação não foi prevista na construção do algoritmo
  19. 19. Algoritmos ¨  Podemos efetuar um teste e verificar se a lâmpada está queimada ou não ¤  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 n  Subir na escada; n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova.
  20. 20. Algoritmos ¨  Ligamos ações à condição “lâmpada não acender” ¤  Condição verdadeira = lâmpada queimada n  Efetuamos a troca ¤  Condição falsa = lâmpada funcionando n  Nenhuma ação de troca é executada ¨  Incluímos uma condição para indicar as ações que serão executadas ¤  Conforme resultado da condição (verdadeiro ou falso)
  21. 21. Algoritmos ¨  Algoritmo correto mas pode ser melhorado ¤  A escada e a lâmpada nova são buscados mesmo sem saber se o uso será necessário ¨  Uma solução ideal para este caso seria: ¤  Acionar o interruptor; ¤  Se a lâmpada não acender, então n  Pegar uma escada; n  Posicionar a escada embaixo da lâmpada; n  Buscar uma lâmpada nova; n  Subir na escada; n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova.
  22. 22. Algoritmos ¨  Existem muitas formas de resolver um problema ¤  Cada pessoa pensa e age de maneira diferente ¤  Casa indivíduo possui uma heurística própria ¨  Para o mesmo problema de troca da lâmpada podemos ter diversas soluções corretas ¨  Bom senso e prática indicarão a solução mais adequada ¤  Menor esforço e maior objetividade produza o resultado desejado
  23. 23. Algoritmos ¨  E se a lâmpada nova não funcionar? ¨  O objetivo especificado não será alcançado ¨  Podemos ajustar o algoritmo ¤  Trocar a lâmpada até que ela funcione corretamente ¤  Vejamos uma solução a seguir
  24. 24. ¤  Acionar o interruptor; ¤  Se a lâmpada não acender, então n  Pegar uma escada; n  Posicionar a escada embaixo da lâmpada; n  Buscar uma lâmpada nova; n  Subir na escada; n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova; n  Se a lâmpada não acender, então n  Retirar a lâmpada queimada; n  Instalar outra lâmpada nova; n  Se a lâmpada não acender, então n  Retirar a lâmpada queimada; n  Instalar outra lâmpada nova; n  ... Até quando?
  25. 25. Algoritmos ¨  Não é possível definir a quantidade de testes necessária ¨  Precisamos indicar até quando o teste será feito ¤  Neste caso, quando uma que funcione for instalada ¨  É possível alterar o fluxo sequencial de execução ¨  Ao executar “Colocar outra lâmpada nova” voltamos a executar o teste “Se a lâmpada não acender” ¤  Ações executadas várias vezes ¤  Sem a necessidade de reescrevê-las
  26. 26. Algoritmos ¨  Expressamos a repetição sem repetir o texto que representa a ação ¨  Também é preciso determinar um limite para a operação ¤  Criar uma condição de parada ¤  No exemplo, deve parar a repetição se a lâmpada nova acender
  27. 27. Algoritmos ¨  Uma solução seria: ¤  Enquanto a lâmpada não acender, faça n  Retirar a lâmpada queimada; n  Instalar outra lâmpada nova; ¨  A condição “lâmpada não acender” estabelece um fluxo repetitivo ¤  Será finalizado assim que a condição for FALSA ¤  O número de repetições indefinido porém finito
  28. 28. Algoritmos ¨  Uma nova solução seria: ¤  Acionar o interruptor; ¤  Se a lâmpada não acender, então n  Pegar uma escada; n  Posicionar a escada embaixo da lâmpada; n  Buscar uma lâmpada nova; n  Subir na escada; n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova; n  Enquanto a lâmpada não acender, faça n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova;
  29. 29. Algoritmos ¨  Até agora trocamos a lâmpada de apenas um soquete ¨  O que faríamos se fosse preciso testar 10 soquetes? ¨  A solução mais óbvia seria repetir o algoritmo de uma única lâmpada para os 10 soquetes existentes ¨  Veja exemplo a seguir
  30. 30. ¤  Acionar o primeiro interruptor; ¤  Se a lâmpada não acender, então n  Pegar uma escada; n  Posicionar a escada embaixo da lâmpada; n  Buscar uma lâmpada nova; n  Subir na escada; n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova; n  Enquanto a lâmpada não acender, faça n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova; ¤  Acionar o segundo interruptor; ¤  Se a lâmpada não acender, então n  Pegar uma escada; n  Posicionar a escada embaixo da lâmpada; n  ... ¤  ... ¤  Acionar o décimo interruptor; ¤  Se a lâmpada não acender, então n  Pegar uma escada; n  Posicionar a escada embaixo da lâmpada; n  ...
  31. 31. Algoritmos ¨  Temos um algoritmo com 10 repetições do algoritmo de troca de um soquete ¨  O conjunto de operações a ser executada é o mesmo ¤  O que muda é o soquete ¨  Podemos alterar o fluxo sequencial da execução ¤  Executar o conjunto de ações de um único soquete ¤  Quantas vezes forem necessárias ¨  Vejamos uma possível solução
  32. 32. ¤  Ir até o interruptor do primeiro soquete; ¤  Enquanto a quantidade de soquetes testados for menor que dez, faça; n  Acionar o interruptor; n  Se a lâmpada não acender, então n  Pegar uma escada; n  Posicionar a escada embaixo da lâmpada; n  Buscar uma lâmpada nova; n  Subir na escada; n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova; n  Enquanto a lâmpada não acender, faça n  Retirar a lâmpada queimada; n  Instalar a lâmpada nova; n  Ir até interruptor do próximo soquete;
  33. 33. Algoritmos ¨  Inicialmente tínhamos um pequeno conjunto de ações ¤  Deveriam ser executadas passo a passo ¤  Uma após a outra ¤  Ordem sequencial de execução (estrutura sequencial) ¨  Vimos que nem todas as ações previstas precisariam ser executadas ¤  Um determinado conjunto de ações poderia ser evitado ¤  Conforme resultado de determinada condição ¤  Criamos uma estrutura condicional
  34. 34. Algoritmos ¨  Foi preciso repetir um trecho do algoritmo ¤  Repetir enquanto uma condição era verdadeira ¨  Agimos de forma semelhante quando foi preciso trocar dez lâmpadas ¨  Criamos uma estrutura de repetição
  35. 35. Algoritmos ¨  Qualquer pessoa seria capaz de resolver o problema na prática ¤  Inclusive imprevistos que viessem a surgir ¨  Programas de computador tradicionais não tem conhecimento prévio e nem adquirem experiência ¤  Devemos determinar todas as ações a serem executadas em detalhes ¤  Sequência finita de passos que garantam a solução do problema
  36. 36. Algoritmos ¨  Até o momento representamos os algoritmos em forma textual ¤  Usando português coloquial ¨  Formas gráficas são mais fiéis ao raciocínio original ¤  Convenções de desenhos no lugar de um grande número de palavras ¨  Conheceremos duas formas de representar os algoritmos graficamente ¤  Fluxograma tradicional ¤  Diagrama de Chapin
  37. 37. Algoritmos ¨  Cada técnica possui vantagens e desvantagens ¨  Ambas permitem um grande nível de clareza quanto ao fluxo de execução ¨  O algoritmo em forma textual deve ser mais fácil de compreender ¤  Nas formas gráficas é necessário conhecer suas convenções ¤  São simples mas não são naturais ¤  Estamos condicionados a nos expressar por palavras
  38. 38. Algoritmos ¨  Sempre é mais trabalhoso fazer um desenho do que escrever um texto ¨  O problema aumenta quando é necessário alterar ou corrigir o desenho ¨  Esses pontos podem desencorajar o uso de representações gráfica ¤  E, de maneira errada, a própria construção de algoritmos ¨  Portanto, usaremos o método textual ¤  É menos claro mas é natural e fácil de usar
  39. 39. Algoritmos ¨  Usaremos o português para representar textualmente os algoritmos ¨  Usaremos um conjunto de regras para restringir e estruturar o uso nos algoritmos ¤  Facilitar a codificação dos algoritmos em uma linguagem de programação ¤  Faremos essa codificação em C++
  40. 40. Exercícios de Fixação 1.  Três senhoras (Dona Branca, Dona Rosa e Dona Violeta) passeavam pelo parque, quando Dona Rosa disse: ¤  Não é curioso? Estamos usando vestidos de cores branca, rosa e violeta, embora nenhuma de nós esteja usando um vestido de cor igual ao seu próprio nome. ¤  Uma simples coincidência - respondeu a senhora com vestido violeta. ¤  Qual a cor do vestido de cada senhora?
  41. 41. Exercícios de Fixação 2.  Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e um maço de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? ¤  Não podem ficar sozinhos do mesmo lado n  Lobo e bode n  Bode e alfafa ¤  Escreva um algoritmo mostrando a resposta, ou seja, indicar todas as ações necessárias para efetuar uma travessia segura
  42. 42. Exercícios de Fixação 3.  Elabore um algoritmo que mova três discos de uma Torre de Hanói, que consiste em três hastes (a-b-c), uma das quais serve de suporte para três discos de tamanhos diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo é transferir os três discos para outra haste.
  43. 43. Exercícios de Fixação 4.  Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um barco com capacidade para duas pessoas. Por medidas de segurança não se permite que em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a sequência de passos que permitiria a travessia com segurança?
  44. 44. Exercícios de Fixação 5.  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 de distância; ¤  Teodoro chegou atrás de Gumercindo no arremesso de dardo; ¤  Barnabé não chegou em primeiro nos 100 metros rasos.
  45. 45. Exercícios de Fixação 6.  João tem três barris. No barril A, que está vazio, cabem 8 litros. No barril B, 5 litros e no barril C, 3 litros ambos estão cheios. Que deve ele fazer para deixar os barris A e B com 4 litros cada e o C vazio?
  46. 46. Exercícios de Fixação 7.  Considere que uma calculadora comum, de quatro operações, está com as teclas de divisão e multiplicação inoperantes. Escreva algoritmos que resolvam as expressões matemáticas a seguir usando apenas a operação de adição e de subtração. ¤  12 x 4 ¤  23 x 11 ¤  10 / 2 ¤  175 / 7 ¤  28
  47. 47. Exercícios de Fixação 8.  Aprimore o exercício de troca de pneu para considerar 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.

×