Introdução à Algoritmos Professora: Fabíola Gonçalves. AGENDA Algoritmos Definição Por que precisamos de Algoritmos Características Formas de representação Descrição Narrativa Fluxograma Linguagem Algorítmica Um ambiente para escrever algoritmos Funcionamento do Computador DEFINIÇÃO “Um conjunto finito de regras que provê uma sequência de operações para resolver um tipo de problema específico” [KNUTH]. “Sequência ordenada, e não ambígua, de passos que levam à solução de um dado problema” [TREMBLAY]. “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” [AURÉLIO]. DEFINIÇÃO Algoritmos do nosso dia-a-dia: instruções para se utilizar um aparelho eletrodoméstico; uma receita para preparo de algum prato; guia de preenchimento da declaração do imposto de renda; maneira como as contas de água, luz e telefone são calculadas mensalmente; etc. ETAPAS PARA O DESENVOLVIMENTO Análise Algoritmo Estudo do problema e definição dos dados de entrada, processamento e dados de saída. Solução do problema em descrita em fluxograma ou português estruturado. Codificação Transformação programação. do algoritmo em uma linguagem de POR QUE É IMPORTANTE CONSTRUIR UM ALGORITMO? Ele representa fielmente o raciocínio envolvido na lógica de programação. Temos que especificar uma sequência de passos lógicos para que o computador possa executar uma tarefa qualquer. Ele não tem vontade própria!!! Uma vez concebida uma solução algorítmica para um problema, esta pode ser traduzido para qualquer linguagem de programação. POR QUE PRECISAMOS DE ALGORITMOS? “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”]. Com uma ferramenta algorítmica, podemos conceber uma solução para um dado problema. Independente de linguagem e de computador!!! ALGORITMOS “Algoritmo não é a solução de todos os problemas, pois senão cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitas.” Algoritmos não se aprende: - Copiando Algoritmos - Estudando Algoritmos Algoritmos só se aprendem: - Construindo Algoritmos - Testando Algoritmos CARACTERÍSTICAS DE UM ALGORITMO Todo algoritmo deve apresentar algumas características básicas: ter fim não dar margem à dupla interpretação (não ambíguo) capacidade de receber dado(s) de entrada do mundo exterior gerar dados de saída para o mundo externo ao do ambiente do algoritmo; ser efetivo todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito. O CONCEITO DE ALGORITMO Considere que um algoritmo deve consistir de passos executáveis. Para tanto, considerar as instruções: Passo 1. Construir uma lista de todos os inteiros positivos Passo 2. Organizar esta lista em ordem decrescente Passo 3. Extrair o primeiro inteiro da lista resultante. Esta sequência caracteriza um algoritmo? ENTIDADES BÁSICAS Do ponto de vista da forma como decorre o fluxo de execução num algoritmo (qual a sequência de execução dos passos), pode ser demonstrado que qualquer algoritmo de computador pode ser construído utilizando apenas três tipos de entidade de construção: 1. Sequência - Salvo outra indicação, os passos são executados em sequencia, de cima para baixo. 2. Decisão - Uma forma de decidir entre a execução de duas instruções ou dois conjuntos de instruções. 3. Repetição - Uma forma de repetir, várias vezes, a execução de uma dada instrução ou conjunto de instruções. Isto é, qualquer método de representação que permita representar as três entidades acima descritas é suficiente para representar qualquer tipo de algoritmo. FORMAS DE REPRESENTAÇÃO Algoritmos podem ser representados, dentre outras maneiras, por: Descrição Narrativa Fluxograma Linguagem Algorítmica FORMAS DE REPRESENTAÇÃO DESCRIÇÃO NARRATIVA FORMAS DE REPRESENTAÇÃO FLUXOGRAMA FORMAS DE REPRESENTAÇÃO FLUXOGRAMA (...CONT.) FORMAS DE REPRESENTAÇÃO FLUXOGRAMA (...CONT.) FORMAS DE REPRESENTAÇÃO LINGUAGEM ALGORÍTMICA UM AMBIENTE PARA ESCREVER ALGORITMOS FUNCIONAMENTO DO COMPUTADOR Resumidamente, podemos afirmar que existem 4 operações básicas: a) operações de entrada e saída: ler dados do teclado e escrever dados na tela. servem para introduzir dados na memória do nosso computador e exibir dados que já estejam lá armazenados; b) operações aritméticas: utilizadas na realização de operações matemáticas (adição, subtração, multiplicação e divisão); FUNCIONAMENTO DO COMPUTADOR c) operações lógicas e relacionais: têm aplicabilidade em comparações, testes de condições lógicas (2 > 6 ? X = Y ?); movimentação componentes: d) de dados entre os vários operações aritméticas são executadas na Unidade Lógica e Aritmética, necessitando da transferência dos dados para essa unidade e da volta do resultado final para guardar na memória. O ALGORITMO É DIVIDO EM TRÊS FASES Entradas Processamento Saídas Dados Dados Dados Dados ... Operações (Programa) Informação ANALOGIA COM O SER HUMANO ESTRUTURA BÁSICA DE UM ALGORITMO Os algoritmos estrutura: terão a seguinte ALGORITMO <Nome do algoritmo> <definições> INÍCIO <Comandos> FIM EXEMPLOS DE ALGORITMOS ALGORITMO PARA FALAR AO TELEFONE: 1. 2. 3. 4. 5. 6. Retirar o telefone do gancho Esperar o sinal Colocar o cartão Discar o número Falar no telefone Colocar o telefone no gancho É como se fossemos ensinar uma máquina a fazer alguma tarefa específica! ALGORITMO PARA TROCAR LÂMPADAS... 1. 2. 3. 4. 5. Se (lâmpada estiver fora de alcance) pegar a escada; Pegar a lâmpada; Se (lâmpada estiver quente) pegar pano; Tirar lâmpada queimada; Colocar lâmpada boa; CALCULAR A MÉDIA FINAL DOS ALUNOS DO CURSO DE ENGENHARIA: Média final = N1*0.3 + N2*0.7 Quais são os dados de entrada? Qual será o processamento utilizado? Quais serão os dados de saída? Faça o algoritmo deste problema: CALCULAR A MÉDIA FINAL DOS ALUNOS DO CURSO DE ENGENHARIA: ALGORITMO PROPOSTO: Receba a nota da primeira avaliação Receba a nota da segunda avaliação Multiplique a 1ª avaliação por 0.3 Multiplique a 2ª avaliação por 0.7 Some as duas notas Mostre o resultado EXEMPLO: CÁLCULO DA MÉDIA DOS ALUNOS Pseudocódigo: Algoritmo Calculo_Media Var N1, N2, Media : real Início Leia (N1); Leia (N2); Media (N1 + N2) / 2; Se Media > 7 Então Escreva ("Aprovado“); Senão Escreva( "Reprovado“); Fim_se FimAlgoritmo TESTE DE MESA Todo algoritmo deve ser testado Usar dados e resultados previamente calculados, seguir precisamente as instruções do algoritmo e verificar se o procedimento está correto ou não 32 PROGRAMA: Algoritmo escrito em uma linguagem de computador (linguagem de programação - C, Pascal, COBOL, Fortran, Java, Lua, etc.) Interpretado e executado por um computador Interpretação rigorosa, exata, do computador escrita do algoritmo na linguagem de prog. tem que seguir regras mais rigorosas 33 PROBLEMA ILUSTRATIVO 1 Dispomos de duas vasilhas com capacidades de 9 e 4 litros respectivamente. As vasilhas não tem nenhum tipo de marcação, de modo que não é possível ter medidas como metade ou um terço. Mostre uma sequência de passos, que usando as vasilhas de 9 e 4 litros encha uma terceira vasilha de medida desconhecida com seis litros de água. PROBLEMA ILUSTRATIVO 1 Uma possível solução: Encha a vasilha de 9 litros; Usando a vasilha de 9 litros, encha a vasilha de 4 litros; Despeje o que sobrou na vasilha de 9 litros (5 litros) na terceira vasilha. Observe que falta um litro para completar os seis litros; Esvazie a vasilha de 4 litros; Torne a encher a vasilha de 9 litros; Usando a vasilha de 9 litros encha a vasilha de 4 litros; Esvazie a de 4 litros; Usando o que restou na vasilha de 9 litros (5 litros), encha novamente a vasilha de quatro litros; Despeje o que sobrou na vasilha de 9 litros (1 litro) na terceira vasilha, que agora tem 6 litros. PROBLEMA ILUSTRATIVO II O indivíduo A é encarregado de determinar a idade dos três filhos do indivíduo B. B conta a A que o produto das idades das crianças é 36. Depois de levar em conta esta informação. A responde que precisa de mais informação, e então B conta a A a soma das idades das crianças. Novamente, A diz que necessita de mais informação, e assim B conta que a criança mais velha toca piano. Depois de ouvir isto, A responde para B a idade das três crianças. Qual é a idade de cada uma das três crianças? PROBLEMA ILUSTRATIVO II À primeira vista, a ultima informação parece não ter conexão com o problema, mas é ela que permite que A finalmente determine a idade das crianças. Como isso acontece? Vamos formular um plano de ataque para depois segui-lo, embora ainda temos muitas perguntas a fazer a cerca do problema.. Nosso plano consiste em rastrear os passos descritos pelo enunciado do problema, mantendo passo a passo, o registro da informação disponível ao indivíduo A, ao longo do tempo. PROBLEMA ILUSTRATIVO II PROBLEMA ILUSTRATIVO II - DICAS Assim, neste caso, enquanto não tentamos implementar nosso plano para resolver o problema (fase 3), não foi possível ter uma plena compreensão do mesmo (fase 1). Se tivéssemos "teimado" em completar a fase 1 antes de começar a resolver o problema, provavelmente nunca teríamos achado as idades das crianças. Tais irregularidade no processo de resolução de problemas contribuem para a dificultar o desenvolvimento de métodos sistemáticos para a resolução de problemas. PROBLEMA ILUSTRATIVO III Antes de A, B, C e D participarem de uma corrida, eles fizeram as seguintes previsões: A previu que B ganharia B previu que D seria o último C previu que A seria o terceiro D previu que a previsão de A estaria correta Apenas uma destas previsões deu certo (está correta), e esta foi feita pelo vencedor da corrida. Em que ordem A, B, C e D terminaram a corrida? EXERCÍCIOS... a) Assistir a um programa qualquer na TV, considerando que o aparelho está desligado. b) Resolver um exercício qualquer de matemática, considerando que o enunciado está impresso e a resolução deverá ser feita utilizando-se lápis e papel. c) Preparar um omelete, considerando que os ovos estão na geladeira. d) Trocar um pneu de um automóvel e) Orientar um robô para percorrer um labirinto qualquer. EXERCÍCIOS... Faça o algoritmo (portugol) e o fluxograma para: Exibir o resultado da multiplicação de dois números. Ler 3 notas e seus respectivos pesos, calcular e exibir a média ponderada das notas. Calcular a área e o perímetro de um círculo. área do circulo é igual a π . r² Perímetro é p = 2.pi.r Converta graus Celcius em graus Fahrenheit Use: F = 180(C+32)/100