• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Algoritmos
 

Algoritmos

on

  • 912 views

 

Statistics

Views

Total Views
912
Views on SlideShare
644
Embed Views
268

Actions

Likes
0
Downloads
36
Comments
0

1 Embed 268

https://mj89sp3sau2k7lj1eg3k40hkeppguj6j-a-sites-opensocial.googleusercontent.com 268

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Algoritmos Algoritmos Presentation Transcript

    • Algoritmos Prof. Sérgio Souza Costa
    • O que é um algoritmo ?
    • O que é um algoritmo ? A solução de muitos problemas podem ser alcançadas em uma ou mais sequências de passos e dentro de um tempo finito, ou seja, por um algoritmo.
    • Um algoritmo não formal pode ser descrito narrativamente em linguagem natural. Exemplos ….
    • Problema 1: Como trocar uma lâmpada? Passo 1: Pegar um lâmpada nova Passo 2: Pegar uma escada Passo 3: Posicionar a escada embaixo da lâmpada Passo 4: Desligar interruptor Passo 5: Subir na escada com a lâmpada na mão Passo 6: Retirar lâmpada queimada Passo 7: Colocar lâmpada nova Passo 8: Descer da escada Passo 9: Testar interruptor Passo 10: Guardar escada Passo 11: Jogar fora a lâmpada queimada
    • Problema 2: Como fazer um sanduíche? Passo 1: Pegar o pão Passo 2: Cortar o pão ao meio Passo 3: Pegar maionese Passo 4: Passar maionese no pão Passo 5: Pegar e cortar alface e tomate Passo 6: Colocar alface e tomate no pão Passo 7: Pegar hambúrguer Passo 8: Fritar hambúrguer Passo 9: Colocar hambúrguer no pão
    • Atividade Considerem o seguinte cenário. João está dentro do shopping são luis e precisa chegar na sala de multimidia I do BCT, usando transporte público. 1. Descreva os passos necessários em uma folha de papel. 2. Troque as folhas com seu amigo do lado. 3. Leia os passos descritos pelo seu amigo e verifique se conseguiria executá-los.
    • Em todos algoritmos existe: 1. Entrada (o que é dado) 2. Processamento (sequencia de passos) 3. Saída (o que é esperado)
    • Exemplo de um problema Como preparar um bolo de fubá ?
    • Ingredientes (Entrada) 4 ovos 2 xícaras de chá de açúcar 2 xícaras de chá de trigo 1 xícara de chá de fubá 3 colheres de sopa de margarina 1 xícara de chá de leite 4 colheres de chá de fermento Receita de bolo fubá, um exemplo de um algoritmo não formal.
    • Processamento 1.Bater as claras em neve, acrescentar o açúcar, continuar batendo 2.Acrescente aos poucos as gemas, a margarina, o leite, a farinha de trigo, o fubá e continue batendo 3.Coloque por último o fermento misturando com uma colher ou espátula 4.Coloque a massa numa forma untada e deixe assar em forno médio pré aquecido por aproximadamente 30 minutos Receita de bolo fubá, um exemplo de um algoritmo não formal.
    • Receita de bolo fubá, um exemplo de um algoritmo não formal. Saída esperada
    • A execução do algoritmo da receita de bolo não requer insight, esperteza, intuição, inteligênca ou clareza e lucidez ? Os trapalhões fazendo bolo Os três patetas
    • Descrição Narrativa Consiste em utilizar a linguagem natural para descrever os passos necessários para a resolução do problema Vantagem: Não é necessário aprender conceitos novos Desvantagem: A linguagem natural abre espaço para várias interpretações, o que pode dificultar sua tradução para um programa. Não é formal.
    • Algoritmos expressos formalmente, garante que dado uma entrada e um conjunto de instruções, chegue sempre ao mesmo resultado (determinísticos).
    • O que é um algoritmo ? Berlinski D. O advento do algoritmo. “Nas palavras de um lógico: Um algoritmo é um método finito, escrito em um vocabulário simbólico fixo, regido por instruções precisas, que se movem em passos discretos, 1,2,3 …., cuja execução não requer insight, esperteza, intuição, inteligênca ou clareza e lucidez, e que mais cedo ou mais tarde chega a um fim.”
    • “Ação ou acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem-definido. Portanto, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.” (FARRER, 1999) “Um algoritmo é uma lista de instruções que, quando executadas, transformam dados de entrada até a saída. As instruções são um conjunto finito de etapas que podem ser executadas, numa ordem precisa, por um mecanismo determinista. Quando estas etapas são efetivamente executadas , a execução deve terminar após um tempo finito.” (HOLLOWAY, 2006) Outras definições
    • Importância do algoritmo Todo problema pode ser resolvido computacionalmente desde que exista um algoritmo para resolvê-lo. “A noção de algoritmo é básica para toda a programação de computadores”. [KNUTH - Professor da Universidade de Stanford, autor da coleção “The art of computer programming”]
    • Todo algoritmo deve apresentar algumas características básicas: Não dar margem à dupla interpretação (não ser ambíguo); Ter capacidade de receber dado(s) de entrada; Poder gerar informações de saída; Ser efetivo, ou seja todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito; Ter fim. Principais características dos algoritmos
    • Método para a construção de Algoritmos Segundo ASCENCIO e CAMPOS (2002), os passos para a construção de algoritmos são os seguintes: 1. Ler atentamente o enunciado, destacando os pontos mais importantes; 2. Definir os dados de entrada; 3. Definir o processamento; 4. Definir os dados de saída; 5. Construir o algoritmo. 6. Testar o algoritmo realizando simulações.
    • ● Divida X por Y e obtenha o resto R1. Se R1 for zero, o mdc entre X e Y é Y. ● Se R1 não for zero, divida Y por R1 e obtenha o resto R2. Se R2 for zero, o mdc entre X e Y é R1. ● Se R2 não for zero, divida R1 por R2 e obtenha o resto R3. Se R3 for zero, o mdc entre X e Y é R2. ● ... ● Se Rn não for zero, divida Rn-1 por Rn e obtenha o resto Rn+1. Se Rn+1 for zero, o mdc entre X e Y é Rn Um dos algoritmos mais antigos, conhecido desde que surgiu nos Livros VII e X da obra Elementos de Euclides por volta de 300 a.C Calculando o MDC
    • Fonte: http://www.educ.fc.ul.pt/icm/icm98/icm12/algoritmos.htm#Crivo Crivo de Erastotenes Erastotenes (no século III a.C.) teve a brilhante ideia de organizar estas maravilhosas computações, na forma de um bem conhecido crivo. Tal crivo, serve para determinar todos os números primos até um dado número N. Vamos ilustrar para N= 101. 1. Escrevem-se todos os números até 101 2. Cortam-se, com um traço, todos os múltiplos de 2; 3. A cada passo seguinte cortam-se todos os números múltiplos do seguinte menor número restante de p, que seja maior do que p. Então os números primos até 101 são, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101.
    • Como obter exatamente 4 litros de água dispondo de dois recipientes com capacidades de 3 litros e 5 litros? Indiquemos por (X, n) o fato de o recipiente X conter n litros de água. Então, no início temos (A, 0) e (B, 0) . Atividade: Resolva o problema proposto. Considere o seguinte problema.
    • Algoritmos em alto e baixo nível Calcular a média das notas de uma dada turma. 111 1101101 101 111001 100 111001 110 110101 Alto nível Baixo nível As pessoas e os computadores utilizam diferentes linguagens. Em computação, dizemos que uma linguagem é mais de baixo nível a medida que se aproxima da linguagem do computador. Linguagens de programação
    • inicio: S(x)->Ac+ x S(x)->Ah- y Cc->S(x) xmaior S(x)->Ac+ y At->S(x) maior S(x)->Ac+ x At->S(x) menor halt xmaior: S(x)->Ac+ x At->S(x) maior S(x)->Ac+ y At->S(x) menor menor: .data 0 maior: .data 0 x: .data 50 y: .data 8 maior x y | x > y = x | otherwise = y Assembler (instruções do processador) Haskell (linguagem de programação) Algoritmos em alto e baixo nível Ambos algoritmos identificam qual o menor e o maior valore, dados apenas dois valores.
    • Linguagem de Programação ■ É um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. ■ Os programas instruem o computador a realizar determinadas tarefas específicas. ■ Cada linguagem possui um conjunto único de palavras-chave (palavras que ela reconhece) e uma sintaxe (regras) específica para organizar as instruções dos programas.
    • Português Estruturado ou Portugol Uma linguagem de programação utilizada para ensino de programação em paises de lingua portuguesa. Vantagem A transformação do algoritmo para uma linguagem de programação é simples Desvantagem É necessário aprender as regras de especificação da linguagem.
    • Crie um algoritmo para mostrar o resultado da multiplicação de dois números ALGORITMO Multiplicação DECLARE N1, N2, M Numérico ESCREVA “Digite dois números” LEIA N1, N2 M ← N1 * N2 ESCREVA “Multiplicação = “, M FIM_ALGORITMO Exemplo 1
    • Interpretador vs Compilador Compilador Compila o código fonte em um código- objeto (tradução de um código fonte para um código executável – binário – código de máquina). Dependente de Arquitetura Exemplo Gcc Linguagem de Programação Interpretador Interpreta (executa) sequencialmente os comandos contidos no código fonte. Exemplo ● Browser interpreta Java Script ● Python
    • Código Fonte Linguagem de Máquina (Assembly) Processador Memória (Principal) Compilação ExecuçãoPrograma executável linkedição Linguagem de Programação Compilação
    • Código-Fonte Texto (human readable) que contém o código do programa. Código-objeto Código de máquina (executável - binário). Linkeditor Programa que combina as funções de bibliotecas incluídas com o programa (código-fonte) que o programador escreveu. Linguagem de Programação Terminologias
    • Biblioteca/API Arquivo que contém as funções/primitivas/rotinas que seu programa pode utilizar. Tempo de Compilação Eventos que podem ocorrer enquanto o seu código-fonte está sendo compilado. Tempo de Execução Eventos que podem ocorrer enquanto o seu código-objeto está sendo executado. Linguagem de Programação Terminologias
    • Sintáticos: o programa não é compilado Execução: dá uma mensagem de erro durante a execução Semântico: o programa não faz o que eu quero! Linguagem de Programação Tipos de erros
    • Representações gráficas
    • Fluxograma Início/Fim Direção do fluxo Indica Cálculos e Atribuições Indica Entrada de Dados Indica Tomada de decisão Saída de Dados O fluxograma consiste em analisar o problema e escrever o algoritmo de sua solução utilizando símbolos gráficos
    • Exemplo 1 Crie um algoritmo para mostrar o resultado da multiplicação de dois números Descrição Narrativa Passo1: Receber os dois números que serão multiplicados Passo2: Multiplicar os números Passo3: Mostrar o resultado obtido na multiplicação
    • inicio N1, N2 M = N1 * N2 Imprime M Fim Exemplo 1
    • Faça um algoritmo para mostrar a divisão de dois números Passo 1: receber os dois números Passo 2: Se o numerador (segundo número) for igual a zero a divisão não poderá ser feita; caso contrário dividir os dois números e mostrar o resultado Exemplo 2
    • inicio N1, N2 N2=0 Impossível dividir D = N1/N2 Imprime D fim Sim Não Exemplo 2
    • Fluxograma Vantagem: o entendimento de elementos gráficos é mais simples, facilitando a comunicação útil como linguagem de alto nível, entender como um dado processo funciona. Desvantagens É necessário aprender uma nova simbologia O algoritmo resultante pode não apresentar muitos detalhes, dificultando sua tradução para uma linguagem de programação Um algoritmo detalhado pode ser complexo de entender
    • Diagrama de Chapin Scratch Outras representações gráficas