CAPíTULO 1 Introdução aos algoritmos computacionais é um procedimento que descreve, sem ambiguidade, uma sequência nita de passos a serem seguidos em uma ordem especíca para resolver um problema ou aproximar a solução de tal problema. A estrutura de um algoritmo pode ser considerado dividido em três partes: (1) Dados de entrada; (2) Processo de obtenção de resultados; (3) Saída de dados. Exemplo 1. Somar três números Exemplos Passo: 1. Receber os três números (Dados de entrada) Passo: 2. Somar os três números (Procedimento) Passo: 3. Mostrar o resultado obtido (Resultado ou dados de saída) Exemplo 2. Receita de bolo Passo: 1. Ingredientes (Dados de entrada) Passo: 2. Modo de preparo (Procedimento) Passo: 3. Bolo (Resultado ou dados de saída) Exemplo 3. Determinar um procedimento para saber se um número natural é par ou ímpar. Passo: 1. Número natural (Dados de entrada) Passo: 2. Determinar o resto do número por 2 (Processo) Passo: 3. Resposta, ímpar ou par ( Dados de saída ) computacional É um algoritmo que pode ser executado por um computador. Para isto: (1) O computador deve executar a tarefa (2) Precisamos de uma linguagem de comunicação com o computador (linguagem de programação) (3) É preciso transformar a ideia (receita) em um programa (conjunto de instruções escritas em uma linguagem de programação). Algumas sugestões para elaboração de algoritmos. Seguir os seguintes passos: (1) do problema; (2) Elaboração do ; (3) do algoritmo. Em resumo: a): Compreender completamente o problema a ser resolvido, destacando os pontos mais importantes e os objetos que a compõem. b): Denir os dados de entrada, ou seja, quais dados serão fornecidos e quais objetos fazem parte desse cenário-problema. c): Denir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições para esses cálculos. O processamento é responsável pela transformação dos dados de entrada em dados de saída 1
ALGORITMO COMPUTACIONAL 2 d): Denir os dados de saída, ou seja, quais dados serão gerados depois do processamento. e): Testar o algoritmo realizando simulações. Linguagens de programação e programa. São linguagens entendíveis para o programador e para o computador. Exemplos de linguagens de programação: C, Fortran, Pascal, Java, Scilab, R, etc. Ao invés de estudar C ou outra linguagem de programação, vamos denir uma linguagem padrão para construir algoritmos computacionais chamada de Pseudo-código e usar esse pseudo-código para apresentar os conceitos comuns às linguagens de programação. A Figura abaixo mostra que o programa ou software é produto de douas coisas: algoritmo e linguagem de programação. Figura Programa.eps Pseudocódigo. O que é pseudo-código? Resposta: É uma linguagem genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem escreve, de forma a ser entendida por qualquer pessoa ) sem a necessidade de conhecer a sintaxe de nenhuma linguagem de programação. Objetivos: (1) Sintaxe mais éxivel que a de uma linguagem de programação real (a) Permite que pensemos nos passos que o algoritmo computacional deve executar sem nós preocuparmos demais com a forma de escrevê-los; (2) Ênfase no processo de solução e não nos detalhes da linguagem de programação (3) Poderemos construir um programa, em uma linguagem estruturada, com facilidade se tivermos um algoritmo em pseudo-código estruturado adequadamente (a) Os elementos do pseudo-código são os mesmos das linguagens de programação,isto é, depois de desenvolver as idéias, a tradução para linguagem de programação é um processo simples e mecânico Algumas palavras usadas na elaboração de pseudo-códigos Leia (read na linguagem Fortran) Calcule (do na linguagem Fortran) Se (), então. Escreva. (write na linguagem Fortran) Para (for na linguagem Fortran e na linguagem C) Fazer. Exemplos de Pseudo-códigos. Exemplo 4. Determinar se um número dado é par ou ímpar Pseudo-código: (1) Leia o número natural n (Dado de entrada) (2) Calcule o resíduo r de n por 2 (Procedimento) (3) Se r = 0, então escreva que n é par (Dado de saída) Se não, escreva n é ímpar (Dado de saída) Exemplo 5. Calcular a soma n i=1 x i, onde n e os números x 1, x 2, x 3,... x n são dados Pseudo-código Leia n, x 1, x 2, x 3,......, x n (Entrada) Passo 1: Faça sma =0 (Inicializar o acumulador) Passo 2: Para i = 1, 2,..., n fazer Faça sma = sma + x i (Adicionar o próximo termo) Passo 3. Escreva: A soma é sma n A soma i=1 x i (Saída) Exemplo 6. Calcular a média aritmética de n números reais Pseudo-código
ALGORITMO COMPUTACIONAL 3 Logo: Leia n, x 1, x 2, x 3,......, x n (Entrada) Passo 1: Faça sma =0 (Inicializar o acumulador) Passo 2: Para i = 1, 2,..., n fazer Faça sma = sma + x i (Adicionar o próximo termo) Passo 3. Faça: sma = sma/n A média aritmética é: sma (Saída) Exercícios de algoritmos. Exercício 7. Escrever um algoritmo que calcule a soma das componentes de um vetor Seja v = [4, 0, 1], então v(1) = 4, v(2) = 0, v(3) = 1. soma = ( v(1) + v(2) ) + v(3) = (4 + 0) + 1 = 4 + 1 = 5 Dados de entrada: n tamanho do vetor e v vetor informado Processo: soma = 0 (Inicialização da variável soma, elemento neutro da soma) Para i=1 até n fazer soma = soma+v(i) Dados de saída: A soma das componentes do vetor v é soma do processo acima para vericar a validade do algoritmo Exemplo de teste Seja n = 5 e v = [1, 3, 0, 1, 2]. Então, v(1) = 1, v(2) = 3, v(3) = 0, v(4) = 1, v(5) = 2. Soma = 1+3+0-1+2=5 Executando o algoritmo soma = 0 i = 1: soma = soma + v(1) = 0+1 = 1 i = 2: soma = soma + v(2) = 1+3 = 4 i = 3: soma = soma + v(3) = 4+0 = 4 i = 4: soma = soma + v(4) = 4+(-1) = 3 i = 4: soma = soma + v(5) = 3+2 = 5 Logo, o algoritmo aparentemente está ok!!! Exercício 8. Escrever um algoritmo que calcule o produto das componentes de um vetor. Exemplo. Seja v = [4, 1, 2], então v(1) = 4, v(2) = 1 e v(3) = 2. Logo, produto = v(1) v(2) v(3) = (v(1) v(2)) v(3) = (4)(2) = 8
Dados de entrada: n tamanho do vetor e v, vetor informado Processo ALGORITMO COMPUTACIONAL 4 prod = 1(Inicializando o valor da variável produto usando o elemento neutro da multiplicação) Para i = 1 até n fazer prod = prod v(i) Dado de saída: Produto das componentes do vetor v é prod. do processo acima para vericar a validade do algoritmo Exemplo de teste: Seja n = 4 e v = [ 1, 2, 3, 4]. Então, v(1) = 1, v(2) = 2, v(3) = 3, v(4) = 4. Produto = (-1)(-2)(-3)(4)=-24. Executando o algoritmo prod =1; i = 1 prod = prod v(1) = (1)(-1) = -1 i = 2 prod = prod v(2) = (-1)(-2) = 2 i = 3 prod = prod v(3) = (2)(-3) = -6 i = 4 prod = prod v(4) = (-6)(4) = -24 Logo, o algoritmo aparentemente está ok!!! Exercício 9. Escrever um algoritmo que calcule a norma Euclidiana de um vetor Exemplo. n = 3 e v = [1, 1, 2]. Então, v(1) = 1, v(2) = 1 e v(3) = 2 Em geral: v 2 = (v(1)) 2 + (v(2)) 2 + (v(3)) 2 v 2 = (1) 2 + ( 1) 2 + (2) 2 = 6 v 2 = n (v(i)) 2 i=1 Dados de entrada: n, tamanho do vetor e v, vetor informado Processo: norma = 0 (Inicializando o valor da norma) Para i = 1 até n, fazer norma = norma + v(i) 2 norma = sqrt(norma) Dados de saída: A norma do vetor v é norma Simulando o algoritmo Exercício 10. Escrever um algoritmo que calcule os n primeiros números da sequência de Fibonacci. Solução s 0 = 0, s 1 = 1, s n = s n 1 + s n 2, n 2.
Para n =5, então: ALGORITMO COMPUTACIONAL 5 s 2 = s 1 + s 0 = 1 + 0 = 1 s 3 = s 2 + s 1 = 1 + 1 = 2 s 4 = s 3 + s 2 = 2 + 1 = 3 s 5 = s 4 + s 3 = 3 + 2 = 5 Dados de entrada: n número de elementos da sequência de Fibonacci a ser mostrada Processo szero = 0 sum = 1 Se n = 0, então escreva: o número de Fibonicci para n = 0 é szero Se n = 1, então escreva: os números de Fibonacci para n = 1 são sum e szero Se n > 1, então Escrever: szero, sum Para i = 2 até n, fazer sn= szero+sum Escrever sum szero = sum sum = sn Exercício 11. Escrever um algoritmo que calcule as raízes da equação: ax 2 + bx + c = 0 As raízes da equação quadrática ax 2 + bx + c = 0 são sempre que: x 1 = b + b 2 4ac e = b 2 4ac 0. x 2 = b b 2 4ac Exemplo 2x 2 + 4x + 5 = 0, ( ). Neste caso, a = 2, b = 4 e c = 5. = b 2 4ac = (4) 2 4(2)(5) < 0, então a equação ( ) não possui raízes reais. x 2 3x + 2 = 0, ( ). Neste caso, a = 1, b = 3 e c = 2. = b 2 4ac = ( 3) 2 4(1)(2) = 1 > 0. Como > 0, então a equação quadrática ( ) possui raízes: Dados de entrada: a, b e c Processo: Calcular delta = b*b-4*a*c Se delta 0, então Calcular: x1 = b+ delta 2 a x 1 = b + b 2 4ac x 2 = b b 2 4ac x2 = b delta 2 a = 3 + 1 2 = 3 1 2 = 2 = 1
ALGORITMO COMPUTACIONAL 6 Escrever: As raízes são: x1 e x2 Senão: Escrever: A equação quadrática ax 2 + bx + c = 0não possui soluções reais