Aulas 13 e 14 - Algoritmos

2,953 views

Published on

Aulas 13 e 14 da disciplina Computação Aplicada, Unijorge, 2012.2

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

  • Be the first to like this

No Downloads
Views
Total views
2,953
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
103
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Aulas 13 e 14 - Algoritmos

  1. 1. AlgoritmosProfª Jocelma RiosOut/2012
  2. 2. O que pretendemos:• Revisar conceitos de lógica na perspectiva da filosofia• Apresentar os conceitos de algoritmos e suas estruturas• Orientar quanto à construção de algoritmos• Exercitar o raciocínio lógico formal, através da elaboração de algoritmos
  3. 3. Lógica Para a filosofia: área que trata das formas do pensamento em geral (dedução, indução, hipótese, inferência etc.) e das operações intelectuais que visam à determinação do que é verdadeiro ou não. Para a computação: organização e planejamento das instruções, assertivas etc. em um algoritmo, a fim de viabilizar a implantação de um programa. Fonte: Houaiss
  4. 4. Sequência lógica São passos executados até atingir um objetivo ou solução de um problema.
  5. 5. Instruções São um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em computação, é o que indica a um computador uma ação elementar a executar.
  6. 6. Lógica de programação Significa o uso correto das leis de pensamento, da ordem da razão1 e de processos de raciocínio e simbolização formais na programação de computadores, objetivando a racionalidade e o desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar.
  7. 7. Lógica de programação Um mesmo raciocínio pode ser expresso em qualquer um dos inúmeros idiomas existentes, mas continuará representando o mesmo raciocínio. O mesmo ocorre com a Lógica de Programação, que uma vez concebida, pode ser representada em qualquer das inúmeras linguagens de programação. Sua concepção se dá através dos Algoritmos.
  8. 8. Algoritmos É formalmente uma sequência finita e bem definida de passos, não ambígua, que levam a execução de uma tarefa. ou É um conjunto de passos lógicos, bem definidos, que descreve a solução de um problema.
  9. 9. Software São algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic, Java, PHP, dentre outras ) e que são interpretados e executados por uma máquina computacional.
  10. 10. Algoritmos - exemplo Considera este Algoritmo “Trocar lâmpada” algoritmo Início suficientemente detalhado? Pegar uma escada; Posicionar a escada embaixo da lâmpada; Buscar uma lâmpada nova; Subir na escada; Retirar a lâmpada velha; Colocar a lâmpada nova. Fim
  11. 11. Algoritmos – outro exemplo E agora, Algoritmo “Trocar lâmpada” Melhorou? Você poderia Início elaborar outra Pegar uma escada; sequência? 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 a lâmpada queimada; Colocar a lâmpada nova. Fim
  12. 12. Algoritmos Essencialmente, os algoritmos orientam sobre o modo de processar os dados de entrada, gerando outros dados como saída. Dados de Dados de Dados de Dados de Processamento Processamento entrada entrada entrada entrada
  13. 13. Algoritmos Para qualquer processo computacional, o algoritmo precisa estar rigorosamente definido, especificando a maneira que ele se comportará em todas as circunstâncias. A corretude do algoritmo pode ser provada matematicamente, bem como a quantidade de tempo e espaço (complexidade) necessários para a sua execução → estes aspectos são alvo da análise de algoritmos.
  14. 14. Algoritmos Os algoritmos são construídos utilizando-se: Linguagem natural, através de uma lista de procedimentos bem definida, na qual as instruções são executadas passo a passo a partir do começo da lista Fluxograma: uma ideia que pode ser facilmente visualizada através de uma notação gráfica Linguagem de programação, tal como o Pascal.
  15. 15. Fluxograma • Utilização de símbolos gráficos para representar algoritmos. • No fluxograma existem símbolos padronizados para início, entrada de dados, cálculos, saída de dados, fim etc. Comando Decisão Saída Entrada Início/Fim
  16. 16. Fluxograma Início do algoritmo Entrada do número Cálculo do dobro do número Apresentação do resultado Fim do algoritmo
  17. 17. Algoritmos – dicas de construção 1.Faça uma leitura de todo o problema até o final, a fim de formar a primeira impressão. A seguir, releia o problema e faça anotações sobre os pontos principais 2.Verifique se o problema foi bem entendido, se preciso releia o problema quantas vezes for preciso para tentar entendê-lo 3.Extraia do problema todas as suas saídas 4.Extraia do problema todas as suas entradas 5.Identifique qual é o processamento principal
  18. 18. Algoritmos – dicas de construção6. Verifique se será necessário algum valorintermediário que auxilie a transformação dasentradas em saídas. Esta etapa pode parecerobscura no início, mas com certeza nodesenrolar do algoritmo, estes valoresaparecerão naturalmente.7.Teste cada passo do algoritmo, com todos osseus caminhos para verificar se oprocessamento está gerando os resultadosesperados.8.Crie valores de teste para submeter aoalgoritmo9.Reveja o algoritmo, checando as boas normasde criação.
  19. 19. Engenharia de software– algumas observações Portabilidade: programas que podem ser executados em uma variedade de máquinas com pouca ou nenhuma alteração de código. A linguagem Java é o exemplo mais conhecido Prevenção de erros: Primeiramente, escrever programas livres de erros. Como isso não existe, usar técnicas de depuração e eliminação de erros Aparência e Comportamento: Uso de técnicas de projeto de interfaces com o usuário e facilidade de uso
  20. 20. Engenharia de software– algumas observações Boas Práticas de programação: escrever programas claros, mais compreensíveis, mais sustentáveis e mais fáceis de testar e depurar Uso de comentários: usar sempre que possível para ilustrar os passos ao longo do algoritmo Erros comuns de programação: problemas que devem ser observados para serem evitados Desempenho: programas de rápida execução e que ocupam pouco espaço de memória
  21. 21. Estrutura de um Algoritmo Cabeçalho Declaração de variáveis Declaração de constantes Início Bloco de comandos Fim
  22. 22. Constantes Constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme o seu tipo, a constante é classificada como sendo numérica, lógica e literal. 3 =CONSTANTE Pi := 3,141516
  23. 23. Variáveis Variável é a representação simbólica dos elementos de um certo conjunto. Cada variável corresponde a uma posição de memória, cujo conteúdo pode ser alterado ao longo do tempo durante a execução de um programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. Variável Conteúdo NOME := "JOSE" IDADE := 50
  24. 24. Variáveis – declaração • As variáveis só podem armazenar valores de um mesmo tipo, de maneira que também são classificadas como sendo numéricas, lógicas e literais • Precisam ser declaradas no início (cabeçalho) de cada algoritmo, indicando o nome e o tipo
  25. 25. Variáveis – tipos • Numéricas: – Específicas para armazenamento de números, que poderão ser utilizados para cálculos. Podem ser ainda classificadas como Inteiras (integer) ou Reais (real) – As variáveis do tipo inteiro são para armazenamento de números inteiros e as reais são para o armazenamento de números que possuam casas decimais • Caracteres: – Específicas para armazenamento de conjunto de caracteres que não contenham números (literais) → Ex: nome
  26. 26. Variáveis – tipos • Alfanuméricas: – Específicas para dados que contenham letras e/ou números. Pode em determinados momentos conter somente dados numéricos ou somente literais. Se usado somente para armazenamento de números, não poderá ser utilizada para operações matemáticas. • Lógicas: – Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso. Falso
  27. 27. Operadores Os operadores são meios pelo quais incrementamos, decrementamos, comparamos e avaliamos dados em um algoritmo. Temos três tipos de operadores: – Operadores Aritméticos – Operadores Relacionais – Operadores Lógicos
  28. 28. Operadores aritméticos • Adição + • Subtração - • Multiplicação * • Divisão /OBS: A linguagem Pascal não possui um operador para potenciação; a mesma é calculada a partir de cálculos de produto ou através de uma função exponencial (ex) e função logarítmica (LN(X)).Sintaxe: XY := EXP(Y*LN(X))EX. X0.5 = EXP(0.5 * LN(X))
  29. 29. Operadores relacionais Descrição Símbolo • Igual a = • Diferente de <> • Maior que > • Menor que < • Maior ou igual a >= • Menor ou igual a <=
  30. 30. Operadores lógicos • E – AND – ^ (conjunção) • OU – OR – v (disjunção) • NÃO – NOT - ~ (negação) Exemplos de uso: A terra é redonda E A terra é um planeta O artista é famoso, logo OU ele é rico OU ele é talentoso
  31. 31. Tabela-verdade Tabela-verdade é o conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações (V ou F), e um conjunto de operadores lógicos.
  32. 32. Tabela-verdade Operação de negação AA Não A Não A FF VV VV FF Ex: (A) A menina é obediente → V (Não A) A menina é desobediente → F
  33. 33. Tabela-verdade Operação de conjunção AA BB A eeB A B VV VV VV VV FF FF FF VV FF FF FF FF Ex: (A) A menina é obediente (B) A menina é estudiosa (A e B) A menina é obediente e estudiosa.
  34. 34. Tabela-verdade Operação de disjunção não exclusiva AA BB A ou B A ou B VV VV VV VV FF VV FF VV VV FF FF FF Ex: (A) A menina é obediente (B) A menina é estudiosa (A ou B) A menina é obediente ou estudiosa.
  35. 35. Tabela-verdade Operação de disjunção exclusiva AA BB A ou B A ou B VV VV FF VV FF VV FF VV VV FF FF FF Ex: (A) A menina é obediente (B) A menina é estudiosa (A ou B) A menina é obediente ou a menina é estudiosa.
  36. 36. Bloco de comandos Compreende: * Comandos de atribuição * Estruturas de controle - Estruturas de decisão - Estruturas de repetição
  37. 37. Comandos de atribuição Um comando de atribuição permite-nos fornecer um valor a uma variável Tipos – Comandos de entrada • Ex: leia (A) – Comandos de saída • Ex: escreva (A) O tipo do dado deve ser compatível com o tipo da variável, isto é: – Somente podemos atribuir um valor lógico a uma variável capaz de comportá-lo, ou seja, um variável declarada como sendo do tipo lógicos
  38. 38. Estrutura de decisão Os comandos de decisão ou desvio fazem parte das técnicas de programação que conduzem a estruturas de programas que não são totalmente sequenciais. As principais estruturas de decisão são: “Se … Então”, “Se … então … Senão” e “Caso … Selecione”
  39. 39. Estrutura de decisão INÍCIO “Iniciar regime” Verificar o calendário • Verificar o calendário Não Sim É segunda-feira • É segunda-feira? • Se sim, – Iniciar regime Aproveitar... Iniciar regime – Matricular na Matricular na academia academia • Se não, – Aproveitar FIM
  40. 40. Condicional (If ... Then ... Else ...) Algoritmo Teste Definir variáveis; Início; S N1=N2 N1=N2 Ler N1; ? Ler N2; N Se N1=N2 Então N1>N2 N Escrever (N1=N2) N1<N2 ? Senão {ELSE} S Se N1>N2 Então Escrever (N1>N2) N1>N2 Senão {ELSE} Escrever (N2>N1); Fim.
  41. 41. Estruturas de repetição É uma estrutura de desvio do fluxo de controle que realiza e repete diferentes comandos ou ações dependendo se uma condição é verdadeira ou falsa Estão associados a uma estrutura de repetição, uma condição e um bloco de código Enquanto ... faça <comando(s)> Repita <comando(s)> até que ...
  42. 42. Estruturas de repetição Enquanto ... faça <comando(s)> A condição é verificada inicialmente, e caso seja verdadeira, o bloco de comandos é executado. Após o final da execução do bloco, a condição é verificada novamente, e caso ela ainda seja verdadeira, o código é executado novamente. Repita <comando(s)> até que ... Primeiro, o bloco de comandos é executado, e depois que a condição é verificada. Caso seja verdadeira, o bloco de comandos é novamente executado.
  43. 43. Estruturas de repetição Deve-se observar que, caso o bloco de comandos nunca modificar o estado da condição, a estrutura será executada para sempre, uma situação chamada laço (loop) infinito. Da mesma forma, é possível especificar uma estrutura em que o bloco de comandos modifica o estado da condição, mas esta é sempre verdadeira.
  44. 44. Ler dois números e uma letra. Se a letra for a, adicionar, se for s, subtrair, se for m, multiplicar, se for d, dividir, senão, exibir “Operação inexistente” Início 1 Início 1 S Resultado:=Definir N1,N2,Resultado:Real; S Operação: Definir N1,N2,Resultado:Real; Letra=m? Resultado:= Operação:Definir Letra,Tecla: Char; N1*N2 Multiplicação Definir Letra,Tecla: Char; Letra=m? N1*N2 Multiplicação n n Ler N1; Resultado:= Operação: Ler N1; Letra=d? Resultado:= Operação: N1/N2 Divisão Letra=d? N1/N2 Divisão Ler N2; Ler N2; Operação: Ler Letra; Operação: Ler Letra; Inexistente Inexistente S Operação: S Resultado:= Operação: Letra=a? Resultado:= Adiçao Letra=a? N1+N2 Adiçao N1+N2 Fim Fim n n S Operação: S Resultado:= Operação: Letra=s? Resultado:= Subtração N1-N2 Subtração Letra=s? N1-N2 n n 1 1
  45. 45. Algumas pontuações...• A lógica se relaciona com a ordem da razão, com a correção do pensamento• É necessário utilizar processos lógicos de programação para construir algoritmos
  46. 46. Um pouco de humor Um pouco de humor sempre cai bem... sempre cai bem...
  47. 47. Talvez se tivesse casado com uma programadora oodiálogo seria melhor… Talvez se tivesse casado com uma programadora diálogo seria melhor…
  48. 48. Exercícios 1. Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou falsas. a) (A+C) > B b) B >= (A + 2) c) C = (B –A) d) (B + A) <= C e) (C+A) > B 2. Construa um algoritmo que avalie cada uma das expressões acima, considerando que os valores de A, B e C são variáveis e são dados pelo usuário.
  49. 49. Exercícios 3. Elabore um algoritmo que dada a idade de um nadador classifique-o em uma das seguintes categorias: Infantil A = 5 a 7 anos Infantil B = 8 a 11 anos Juvenil A = 12 a 13 anos Juvenil B = 14 a 17 anos Adultos = Maiores de 18 anos
  50. 50. Exercícios 3. A média parcial (MP) de uma disciplina semestral no Ifba é calculada com base na média aritmética não ponderada de 3 notas (Uni1, Uni2, Uni3). Caso o estudante alcance média parcial igual ou superior a 7,0, ele é aprovado sem precisar fazer prova final (PF). Caso ele alcance média parcial entre 3,0 e 6,9, ele precisará fazer prova final. Caso ele obtenha média inferior a 3,0, ele é reprovado. Utilizando uma pseudo linguagem (português estruturado), construa um algoritmo que leia o nome do estudante, suas notas nas 3 unidades, calcule sua média parcial e informe a situação de aprovação. Para os casos de ser necessário fazer prova final, deve também mostrar a nota mínima que ele precisa na prova final. O cálculo para a nota mínima necessária na prova final é =(7*MP)/3. (2,0) MP < 3 → reprovado3,0 <= MP < 7,0 → precisa fazer prova finalMP >= 7,0 → aprovado
  51. 51. Referências FORBELLONE, André Luiz Vilar; EBERSPACHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estrutura de dados. 3. São Paulo: Prentice Hall, 2005. Cap. 1, 2 e 3.

×