O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Algoritmos

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 55 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Algoritmos (20)

Anúncio

Mais recentes (20)

Algoritmos

  1. 1. Bases deBases de ProgramaçãoProgramação Lógica de Programação
  2. 2. Funcionamento básico doFuncionamento básico do computador - Fluxo de dadoscomputador - Fluxo de dados Entrada Saída Memória Processamento
  3. 3. Lógica de ProgramaçãoLógica de Programação Lógica A lógica de programação é necessária para as pessoas que desejam trabalhar com o desenvolvimento de sistemas e programas de computador Permite definir as instruções que serão executadas pelo computador dentro de uma sequência lógica. Desta forma, pode-se definir a lógica de programação como a técnica de encadear pensamentos para atingir um determinado objectivo.
  4. 4. Lógica de ProgramaçãoLógica de Programação Sequência Lógica Estes pensamentos devem ser descritos como um sequência de instruções ou passos que devem ser seguidos para se cumprir uma determinada tarefa. Desta forma, uma sequência lógica pode ser entendida como um conjunto de passos que devem ser seguidos até se atingir um objectivo ou a solução de um problema.
  5. 5. Lógica de ProgramaçãoLógica de Programação Instruções Em informática uma instrução é uma informação que indica ao computador uma acção a executar. Uma ordem ou acção isolada normalmente não permite a especificação de todas as instruções para se atingir um objectivo ou realizar uma tarefa completa sendo, para isto, necessário um conjunto de instruções colocadas numa certa sequencia lógica. - Por exemplo, se quisermos fazer um omelete de batatas, precisamos de: descascar as batatas, bater os ovos, fritar as batatas, etc, etc. É evidente também que essas instruções devem ser executadas numa ordem adequada (não se pode descascar as batatas depois de fritá-las).
  6. 6. Algoritmo x ProgramaAlgoritmo x Programa Algoritmo: “Conjunto de etapas finitas, ordenadamente definidas com o propósito de obter soluções para um determinado problema.” Programa: “Formalização de um algoritmo numa linguagem compreensível pelo computador. É escrito numa linguagem de alto nível, gerando o programa fonte.”
  7. 7. AlgoritmoAlgoritmo Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e geralmente, os caminhos que levam a uma solução são muitos. Problema Algoritmo Programa
  8. 8. AlgoritmosAlgoritmos Aprender a criar algoritmos consegue-se através de muitos exercícios. Algoritmos não se aprendem: Copiando Algoritmos Estudando Algoritmos Algoritmos só se aprendem: Construindo Algoritmos Testando Algoritmos
  9. 9. Como criar um algoritmoComo criar um algoritmo Detectar os dados envolvidos no problema. Identificar os dados que são de entrada e os dados que são de saída. Efectuar a leitura dos dados de entrada. Identificar que operações devem ser feitas com os dados lidos. Armazenar os resultados destas operações. Mostrar os dados de saída.
  10. 10. Características de um AlgoritmoCaracterísticas de um Algoritmo Segundo Knuth, um algoritmo é uma sequência de passos bem definida que resolve determinado problema, através da transformação de dados iniciais na resposta desejada, tendo cinco importantes características: - Deve ser finito (finitness); - Os passos devem ser bem definidos, sem ambiguidades, - ou seja, os passos não devem ter várias interpretações (definiteness); - Deve ser eficaz, ou seja, deve produzir resultados em tempo “aceitável” (effectiveness); - Deve possuir uma entrada (input); - Deve produzir uma saída ou resultado (output).
  11. 11. Formas de RepresentaçãoFormas de Representação Os Algoritmos podem ser representados, dentre outras maneiras, por: Descrição Narrativa; Fuxogramas; Pseudocódigo.
  12. 12. Formas de RepresentaçãoFormas de Representação Descrição Narrativa Faz-se uso do português para descrever algoritmos. - EXEMPLO: Receita de Bolo: Arranje manteiga, ovos, 2 Kg de massa, açucar. Misture os ingredientes Despeje a mistura na forma de bolo Leve a forma ao forno Espere 20 minutos Retire a forma do forno Deixe arrefecer Prove
  13. 13. Formas de RepresentaçãoFormas de Representação Descrição Narrativa Vantagens: - O português é bastante conhecido por nós; Desvantagens: - Imprecisão; - Pouca confiabilidade (a imprecisão acarreta a desconfiança); - Extensão (normalmente, escreve-se muito para dizer pouca coisa).
  14. 14. Formas de RepresentaçãoFormas de Representação 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. Cálculo Decisão Entrada Saída Início/Fim
  15. 15. Formas de RepresentaçãoFormas de Representação Fluxograma Exemplo - Algoritmo que receba um numero e mostre o seu dobro: EXEMPLOEXEMPLO EXPLICAÇÃOEXPLICAÇÃO Início do algoritmo Entrada do número Cálculo do dobro do número Apresentação do resultado Fim do algoritmo Início Leia NUM DOBRO <- NUM * 2 Escreva DOBRO Fim
  16. 16. Formas de RepresentaçãoFormas de Representação Fluxograma Vantagens - Uma das ferramentas mais conhecidas; - Figuras dizem muito mais que palavras; - Padrão mundial. Desvantagens - Qualquer alteração obriga a re-desenhar o fluxograma; - Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los; - Complica-se à medida que o algoritmo cresce.
  17. 17. Formas de RepresentaçãoFormas de Representação PseudoCódigo Consiste na definição de uma pseudolinguagem de programação, cujos comandos são em português, para representar algoritmos. - EXEMPLO: Algoritmo CALCULA_DOBRO início Ler (NUM) DOBRO  2 * NUM Escrever (DOBRO) fim
  18. 18. Formas de RepresentaçãoFormas de Representação PseudoCódigo Vantagens: - Independência física da solução (solução lógica apenas); - Usa o português como base; - Pode-se definir quais e como os dados vão estar estruturados; - Passagem quase imediata do algoritmo para uma linguagem de programação qualquer. Desvantagens: - Exige a definição de uma linguagem não real para trabalho; - Não padronizado.
  19. 19. Refinamentos SucessivosRefinamentos Sucessivos Top-DownTop-Down Um algoritmo é considerado completo se os seus comandos forem entendidos pelo destinatário. Caso isso não aconteça, terá que ser desdobrado em novos comandos, que constituirão um refinamento do comando inicial, e assim sucessivamente, até que os comandos sejam entendidos pelo destinatário. Por exemplo, o algoritmo para calcular a média aritmética de dois números pode ser escrito da seguinte forma: Algoritmo CALCULA_MÉDIA Início Receba os dois números Calcule a média dos dois números Exiba o resultado Fim
  20. 20. Refinamentos SucessivosRefinamentos Sucessivos Top-DownTop-Down Podemos desdobrar o comando “Calcule a média dos dois números” em: Soma os dois números Divida o resultado por 2 Após esse refinamento, o algoritmo pode ser considerado completo, a menos que o destinatário não saiba fazer as operações de adição e divisão, ou não seja capaz de entender directamente algum comando. Estando o algoritmo estando completo, podemos reescrevê-lo, inserindo o refinamento na posição do comando que foi refinado. Assim sendo, obtém- se: Algoritmo CALCULA_MÉDIA Início Receba os dois números Soma os dois números Divida o resultado por 2 Mostre o resultado Fim
  21. 21. Refinamentos SucessivosRefinamentos Sucessivos Top-DownTop-Down Reescrever um algoritmo completo, com os refinamentos sucessivos inseridos nos seus devidos lugares, permite ter uma visão global de como o algoritmo deve ser executado. À medida que o algoritmo passa a ser maior e mais complexo, esta visão global torna-se menos clara . Um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entendê-lo.
  22. 22. Refinamentos SucessivosRefinamentos Sucessivos Top-DownTop-Down Algoritmo 1 Algoritmo 2 Molhar o cabelo Colocar shampoo Massajar Enxaguar Secar o cabelo Abrir a torneira do chuveiro Entrar na água Molhar o cabelo Abrir o shampoo Colocar um pouco na mão Levar à cabeça Massajar Enxaguar Sair da água Fechar o chuveiro Secar o cabelo
  23. 23. ESTRUTURA GERAL DE UMESTRUTURA GERAL DE UM ALGORITMOALGORITMO - Algoritmo Nome-do-Algoritmo; - Declaração de constantes, tipos e variáveis; - Início  Sequências de Comandos; - Fim.
  24. 24. VariáveisVariáveis Nos algoritmos a cada variável corresponde uma posição de memória, cujo conteúdo pode variar ao longo do tempo durante a execução de um algoritmo. Embora a variável possa assumir diferentes valores, ela só pode armazenar um valor a cada instante. Espaço de memória primária Possui um endereço físico - lógico Exemplo: Endereço Físico = 3000: B712 Endereço Lógico = Nome Conteúdo = “João”
  25. 25. VariáveisVariáveis Toda variável é identificada por um nome ou identificador. Assim, por exemplo, num algoritmo para calcular a área de um triângulo rectângulo pelo teorema de pitágoras (a2 = b2 + c2), os identificadores A, B e C podem representar as posições de memória que armazenam o valor da hipotenusa e dos catetos. Criar uma variável significa reservar uma gaveta na memória do computador atribuindo-lhe um nome e escolher o tipo de dado que esta gaveta armazenará.
  26. 26. ConstantesConstantes Constantes Informação que não sofre alteração no decorrer do algoritmo. Ex: PI=3,14, Aprovado=Falso.
  27. 27. Variáveis e ConstantesVariáveis e Constantes Declaração de Variáveis e Constantes Quando definir variáveis ? - Quando um dado necessário à resolução do problema sofrer alterações de valor ao longo desta resolução. Quando definir constantes ? - Quando uma valor fixo for utilizado várias vezes para a resolução do problema.
  28. 28. Variáveis e ConstantesVariáveis e Constantes Nomes de variáveis e Constantes: podem ter um ou mais caracteres; o primeiro caracter deve ser letra; não pode ter espaços em branco nem acentos; não podem utilizar caracteres especiais, somente letras e números;
  29. 29. Tipos de DadosTipos de Dados Tipo de Dados Exemplo Inteiro 102 Real 13,5 Lógico Verdadeiro Falso Caractere ‘S’ String “Programação” Os algoritmos e as linguagens trabalham com dados. Estes dados são classificados em tipos.
  30. 30. Tipos de OperadoresTipos de Operadores Operadores Aritméticos Exemplos Operador Operação + Adição - Subtracção * Multiplicação / Divisão Real DIV Divisão Inteira MOD Resto da Divisão ^ Expoente Expressão Resultado 1 + 2 3 5.0 - 1 4.0 2 * 1.5 3.0 5 / 2 2.5 5 DIV 2 2 5 MOD 2 1 3^2 9
  31. 31. Tipos de OperadoresTipos de Operadores PRIORIDADE Numa expressão aritmética, a ordem de avaliação dos operadores obedece a tabela abaixo: Exemplo: Se tivermos a seguinte fórmula matemática: Fórmula aceita pelo computador: Area ← (base*altura)/2 2 alturabase area • = Prioridade Operadores 1ª * / DIV MOD 2ª + -
  32. 32. Tipos de OperadoresTipos de Operadores Operadores de Comparação Exemplos Operador Operação = igual > maior < menor >= maior ou igual <= menor ou igual <> diferente Expressão Resultado 1 = 2 Falso 'A' = 'a' Falso 5 > 2 Verdadeiro 3 <= 3 Verdadeiro 'JOAO' > 'JOSE' Falso 2 + 3 <> 5 Falso 'comp' <> 'COMP' Verdadeiro
  33. 33. Tipos de OperadoresTipos de Operadores Operadores lógicos Prioridade Operador Operação notnot não (negação) andand e (conjunção) oror ou (disjunção) Prioridade Operadores 1ª NOT 2ª AND 3ª OR 4ª = > < >= <= <>
  34. 34. Tabelas de VerdadeTabelas de Verdade p não p V F F V p q p e q V V V V F F F V F F F F p q p ou q V V V V F V F V V F F F
  35. 35. Prioridades entre todos osPrioridades entre todos os OperadoresOperadores 1. parênteses mais internos 2. operadores aritméticos 3. operadores comparação 4. operadores lógicos
  36. 36. AtribuiçãoAtribuição Fornece um valor a uma variável. Ex: a ← 1; sexo ← “FEMININO”; salário ← 128,00;
  37. 37. InstruçõesInstruções Entrada de Dados Ler ( ) Saída de Dados Escrever ( ) Atribuição (memória) ←
  38. 38. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO Nas estruturas de um algoritmo é, frequentemente, necessário: jogar com determinadas condições, para decidir se se deve executar uma ou outra acção; repetir uma série de instruções, um determinado número de vezes ou enquanto se verificar uma certa condição; E de acordo com a Programação Estruturada os mecanismos utilizados para esse controle são : Sequência, Selecção e Repetição
  39. 39. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO SEQUÊNCIA : usada para executar comandos passo a passo, sabendo que todos eles serão executados na ordem de escrita, sem nenhum desvio. Uma sequência pode possuir um ou vários comandos, os quais devem ser delimitados pelos identificadores Início e Fim. Exemplo: programa media_final; var nota1, nota2, nota3, nota4, media: real; nome : string inicio ler (nome); ler (nota1, nota2, nota3, nota4); media ← (nota1 + nota2 + nota3 + nota4) / 4; escrever (nome, media) fim.
  40. 40. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO SelecçãoSelecção : usada para tomar decisões, ou seja desviar a execução do algoritmo de acordo com uma condição, podendo ser simples ou composta . Simples Composta se condição então Instruções; FimSe; se condição então Instruções; Senão Instruções; FimSe;
  41. 41. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO SelecçãoSelecção Muito importante: - Sempre que existir mais do que uma instrução dentro do então ou do senão, deve colocar-se Inicio e Fim. - Exemplo: se condição então inicio Instrução 1; Instrução 2; Fim Senão inicio Instrução 1; Instrução 2; Instrução 3; Fim FimSe;
  42. 42. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO SelecçãoSelecção Fluxogramas Simples Composta Condição Comando-1 Comando-2 Comando-n Condição Comando-A1 Comando-A2 Comando-An Comando-B1 Comando-B2 Comando-Bn VV FF
  43. 43. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO SelecçãoSelecção Exemplos Pseudocódigo Simples Composta PROGRAMA MEDIA_FINAL; VAR MEDIA: REAL; INICIO LER (MEDIA); SE (MEDIA>=9,5) ENTÃO ESCREVER (‘APROVADO’) FIMSE FIM. PROGRAMA MEDIA_FINAL; VAR MEDIA: REAL; INICIO LER (MEDIA); SE (MEDIA>=9,5) ENTÃO ESCREVER (‘APROVADO’) SENÃO ESCREVER (‘REPROVADO’) FIMSE FIM.
  44. 44. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO SelecçãoSelecção Exemplos Fluxogramas Simples Composta SE MEDIA >=9,5 V F INICI O FIM Ler (MEDIA) Escrever (“Aprovado”) SE MEDIA >=9,5 V F INICI O FIM Ler (MEDIA) Escrever (“Aprovado”) Escrever (“Reprovado”)
  45. 45. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO Selecção MúltiplaSelecção Múltipla Caso - Muito útil quando existem várias hipóteses de selecção, pois permite reduzir a complexidade do algoritmo. Sintaxe CASO (variável) SEJA valor1: instruções; valor2: instruções; . . valorn: instruções; SENÃO: instruções; FimCaso
  46. 46. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO Selecção MúltiplaSelecção Múltipla Exemplo de um algoritmo utilizando o Se e o Caso SE CASO PROGRAMA LANCHE; VAR LETRA: CARACTERE; INICIO LER (LETRA); SE (LETRA=‘H’) ENTÃO ESCREVER (‘HAMBURGUER’); SENÃO SE (LETRA=‘P’) ENTÃO ESCREVER (‘PIZZA’); SENÃO SE (LETRA=‘T’) ENTÃO ESCREVER (‘TOSTA MISTA’); SENÃO SE (LETRA=‘S’) ENTÃO ESCREVER (‘SANDES’); SENÃO ESCREVER (‘ERRO NA LETRA’); FIMSE PROGRAMA LANCHE; VAR LETRA: CARACTERE; INICIO LER (LETRA); CASO (LETRA) SEJA ‘H’: ESCREVER(“HAMBURGUER”); ‘P’: ESCREVER (“PIZZA”); ‘T’:ESCREVER (“TOSTA MISTA”); ‘S’:ESCREVER (“SANDES”); SENÃO:ESCREVER (“ERRO NA LETRA”) FIMCASO FIM.
  47. 47. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO RepetiçãoRepetição Serve para efectuar um conjunto de acções repetidas vezes. A estrutura de repetição, assim como a de selecção, envolve sempre a avaliação de uma condição. Existem três tipos básicos de repetições, sendo elas: - Para - Repetir - Enquanto
  48. 48. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO RepetiçãoRepetição ParaPara ParaPara variávelvariável ←← valor_inicialvalor_inicial atéaté valor_finalvalor_final façafaça instruções;instruções; FimParaFimPara • O comando Para aumenta, a variável, a partir do valor_inicial em uma unidade, até que, esta atinja o valor_final. • E para cada aumento as instruções são executadas.. • NotaNota! No VisualAlg faz-se :! No VisualAlg faz-se : • para j de valor_inicial ate valor_final facapara j de valor_inicial ate valor_final faca • InstruçõesInstruções • fimparafimpara
  49. 49. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO RepetiçãoRepetição ParaPara Exemplo: Algoritmo que mostra primeiros 100 números pares. PROGRAMA PARES; VAR NUM: INTEIRO; INICIO PARA NUM ←← 1 ATE 100 FACA INICIO SE (NUM MOD 2 =0) ENTÃO ESCREVER (NUM); FIM FIMPARA. FIM
  50. 50. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO RepetiçãoRepetição ENQUANTOENQUANTO EnquantoEnquanto (condição)(condição) façafaça Instruções;Instruções; FimEnquantoFimEnquanto O comando Enquanto analisa a Condição, e enquanto o seu resultado for Verdadeiro executa as instruções. • NotaNota! No VisualAlg faz-se da mesma forma! No VisualAlg faz-se da mesma forma
  51. 51. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO RepetiçãoRepetição EnquantoEnquanto Exemplo: Algoritmo que mostra primeiros 100 números pares. PROGRAMA PARES; VAR NUM: INTEIRO; INICIO NUM ←1; ENQUANTO (NUM<=100) FACA INICIO SE (NUM MOD 2 =0) ENTÃO ESCREVER (NUM); NUM ←NUM+1;; FIM FIMPARA. FIM.
  52. 52. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO RepetiçãoRepetição REPETIRREPETIR RepetirRepetir instruções;instruções; AtéAté (condição);(condição); • O comando Repetir executa as instruções até que o valor retornado pela condição seja Verdadeiro • NotaNota! No VisualAlg faz-se :! No VisualAlg faz-se : • Repita • <instruções> • ate <condição>
  53. 53. COMANDOS DE CONTROLE DECOMANDOS DE CONTROLE DE FLUXOFLUXO RepetiçãoRepetição RepetirRepetir Exemplo: Algoritmo que mostra primeiros 100 números pares. PROGRAMA PARES; VAR NUM: INTEIRO; INICIO NUM ←1; REPETIR INICIO SE (NUM MOD 2 =0) ENTÃO ESCREVER (NUM); NUM ←NUM+1;; FIM ATÉ (NUM=100) . FIM.
  54. 54. CONTADOR VS ACUMULADORCONTADOR VS ACUMULADOR Um Contador é uma variável que vai aumentando o seu valor. Nos exemplos anteriores, a variável NUM é um contador. Contador é uma linha que, a cada vez que é executada, soma um número fixo (geralmente 1) a uma variável. Assim, pode-se contar, por exemplo, quantas vezes aquela parte do código foi executada e, dessa forma, controlar o numero de repetições. O Acumulador é uma estrutura criada para ir acumulando valores a uma determinada variável. O contador recebe incrementos constantes enquanto o acumulador recebe incrementos variáveis
  55. 55. CONTADOR VS ACUMULADORCONTADOR VS ACUMULADOR Exemplo: Programa que calcula a soma dos 5 primeiros números. PROGRAMA SOMA; VAR NUM, SOMA:INTEIRO; INICIO SOMA ←0; NUM ←1; REPETIR SOMA ←SOMA+NUM; NUM ←NUM+1; ATÉ QUE (NUM=5); FIM Contador: Num Acumulador: Soma

×