Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação - PDF
Download "Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação"
Larissa Belém Castel-Branco
1 1 Algoritmo Prof. Anderson Almeida Ferreira Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação
2 Desenvolvimento de programas 2 Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução / Interpretação Teste e depuração
3 3 Análise do problema Conhecer exatamente o que o problema requer é vital para a solução do mesmo. Metodologia: Especificar de forma clara e precisa os dados de entrada e os dados de saída (resultados) do problema. A especificação dos dados de entrada e saída deve responder às seguintes questões:» Quais são os dados de entrada?» Quais são os seus valores válidos e inválidos?» Quais valores serão produzidos?» Qual o formato dos resultados?
4 4 Análise do problema Problema: cálculo da área de um triângulo Quais são os dados de entrada? Base e altura do triângulo. Quais são os seus valores válidos e inválidos? Os dados de entrada devem ser valores numéricos positivos. Quais valores serão produzidos? Apenas a área do triângulo através da fórmula: (base altura) / 2. Qual o formato dos resultados? Um valor numérico positivo.
5 5 Desenvolvimento do algoritmo Algoritmo é um conjunto de passos lógicos bem organizado e suficientemente detalhado para se resolver um problema. A elaboração do algoritmo pressupõe o conhecimento prévio dos métodos, estratégias e fórmulas para a solução do problema. A versão inicial descreve, em linhas gerais, as principais funções a serem executadas. Em seguida, o algoritmo deve ser refinado até que a sequência de instruções resultante esteja bem clara e detalhada.
6 6 Codificação do programa O processo de codificação se resume no mapeamento das instruções de um algoritmo em instruções de uma linguagem de programação. Para um melhor entendimento do programa são essenciais: documentação; indentação; escolha representativa dos identificadores. A documentação consiste de: cabeçalho; comentários.
7 7 Compilação e execução Programa fonte Compilador da linguagem Compilação Programa objeto Dados de entrada Programa objeto Execução Resultados
8 8 Interpretação Programa fonte Dados de entrada Interpretador Resultados Interpretação
9 9 Teste e depuração Teste é o processo de executar um programa com a finalidade de encontrar erros. Depuração é o processo de localizar e corrigir os erros encontrados. Possíveis tipos de erros são: Erros de compilação:» escrever errado um comando;» usar dados inadequados a uma operação. Erros de execução:» divisão por zero;» loop infinito. Erros de lógica:» erro nos limites de uma comparação;» erro nas fórmulas e expressões.
10 Refinamentos sucessivos 10 Problema: cálculo da área de um triângulo Versão inicial do algoritmo: Forneça a base e a altura do triângulo Realize o cálculo da área do triângulo
11 Refinamentos sucessivos 11 Ref. Forneça a base e a altura do triângulo Leia base, altura Ref. Realize o cálculo da área do triângulo Se a base e a altura forem positivos Então Calcule a área do triângulo Apresente o valor calculado Senão Apresente uma mensagem de erro Fim Se
12 Refinamentos sucessivos 12 Ref. (condição) Base e altura forem positivos (base > 0) e (altura > 0) Ref. Calcule a área do triângulo área (base altura) / 2 Ref. Apresente o valor calculado Escreva área Ref. Apresente uma mensagem de erro Escreva "mensagem de erro"
13 Refinamentos Sucessivos 13 Algoritmo final: Leia base, altura Se (base > 0) e (altura > 0) Então área (base altura) / 2 Escreva área Senão Escreva "mensagem de erro" Fim Se
14 14 Diagrama de blocos ou fluxograma: Início Leia base, altura (base > 0) e (altura > 0) Não? Sim área (base altura)/2 Escreva área Escreva "mensagem de erro" Fim
15 Refinamentos sucessivos 15 Problema: apresentar o menor dentre três valores numéricos. Versão inicial do algoritmo: Forneça os três números Determine o menor número Apresente o menor número
16 Refinamentos sucessivos 16 Ref. Forneça os três números Leia A, B, C Ref. Determine o menor número Se (A < B) e (A < C) Então menor A Senão Determine o menor dentre B e C Fim Se Ref. Apresente o menor número Escreva menor
17 Refinamentos sucessivos 17 Ref. Determine o menor dentre B e C Se (B < C) Então menor B Senão menor C Fim Se
18 Refinamentos sucessivos 18 Algoritmo final: Leia A, B, C Se (A < B) e (A < C) Então menor A Senão Se (B < C) Então menor B Senão menor C Fim Se Fim Se Escreva menor
19 19 Diagrama de blocos ou fluxograma: Início Leia A, B, C (A < B) e Sim (A < C)? Não menor A (B < C)? Sim menor B Não menor C Escreva menor Fim
20 O Comando if if <condição> then <bloco então > else <bloco senão > end 20
21 Cláusula else vazia if <condição> then <bloco então > else // Nenhum comando aqui end if <condição> then end <bloco então > 21
22 Equações de Segundo Grau: Programa Scilab Eq2g_3.sce - 2 //Cálculo e impressão das raízes delta = b^2-4*a*c; if delta > 0 then r1 = (-b+sqrt(delta))/(2*a); r2 = (-b-sqrt(delta))/(2*a); printf("raízes: %g e %g.",r1,r2); else printf("raízes complexas.") end 22
23 Partes de um comando If <condição> <bloco então > if delta >= 0 then r1 = (-b+sqrt(delta))/(2*a) r2 = (-b-sqrt(delta))/(2*a) printf("as raízes são %g e %g",r1,r2) else printf("as raízes são complexas") end <bloco senão > 23
24 Palavras-chave de um Comando if Início do comando Fim da condição e começo do bloco então if delta < 0 then printf('raízes complexas!'); else r1 = (-b + sqrt(delta))/(2*a); r2 = (-b - sqrt(delta))/(2*a); printf('r1=%g e r2=%g.',r1,r2) end Fim do bloco senão e fim do comando Fim do bloco então e começo do bloco senão 24
25 Operadores Relacionais > maior que >= maior ou igual a < menor que <= menor ou igual a == igual a <>ou ~= diferente de 25
26 Tipos primitivos Inteiro Ex.: 2, 25, -30, 255 Ponto-flutante reais Ex.: 2.5, 0.27, 2.456D-5, 2.7D+5 String Cadeia de caracteres abcdefghij abcdefghij Cadeia de caracteres Programação de computadores Programação de computadores
27 Exercícios Criar um algoritmo e um programa em Scilab que leia dois valores para as variáveis A e B, que efetue a troca dos valores de forma que a variável A passe a ter o valor da variável B e que a variável B passe a ter o valor da variável A. Apresente os valores trocados. Criar um algoritmo e um programa em Scilab para calcular e apresentar o valor do volume de uma lata de óleo, utilizando a fórmula: V= R 2 h onde V é o volume, R é o raio e h é a altura. Criar um algoritmo e um programa em Scilab que leia um valor de hora (hora:minutos) e informe (calcule) o total de minutos se passaram desde o início do dia (0:00h).
28 Refinamentos Sucessivos 28 Problema: apresentar a soma dos números pares de 100 até 200, inclusive. Versão inicial do algoritmo: Realize a soma desejada Apresente o valor da soma Ref. Realize a soma desejada Inicialize a soma com zero Inicialize o número par com 100 Enquanto o número par for menor ou igual a 200 Faça Adicione à soma o valor do número par Determine o próximo número par fim enquanto Ref. Apresente o valor da soma Escreva soma
29 Refinamentos Sucessivos 29 Ref. Inicialize a soma com zero soma 0 Ref. Inicialize o número par com 100 par 100 Ref. Adicione à soma o valor do número par soma soma + par Ref. Determine o próximo número par par par + 2
30 Refinamentos Sucessivos 30 Algoritmo final: soma 0 par 100 Enquanto par <= 20 Faça soma soma + par par par + 2 Fim enquanto Escreva soma
31 Refinamentos Sucessivos 31 Diagrama de blocos ou fluxograma: Início soma 0 par 100 par<=200 Não? Sim soma soma + par par par + 2 Escreva soma Fim