introdução à programação 2006/07ltodi.est.ips.pt/ip/ficheiros/algoritmos.pdf · introdução...
TRANSCRIPT
Introdução à Programação 2006/07
Algoritmos
Introdução à Programação 2006/2007
Objectivos da Aula
Algoritmos e suas características Técnicas de Descrição de Algoritmos
Linguagem NaturalPseudocódigoFluxogramas
Especificação do problemaDecomposição hierárquica da solução
Introdução à Programação 2006/2007
Algoritmos e suas características
Um algoritmo é um conjunto de acções detalhadas que representam a solução do problema.Um algoritmo deve considerar sempre a resolução de classes de problemas e não de problemas particulares (deve contemplar alternativas para toda a gama de valores das variáveis de entrada)Um algoritmo deve ser eficiente, resolvendo o problema da maneira mais e com o menor custo possível.
Introdução à Programação 2006/2007
Técnicas de Descrição de Algoritmos
Existem várias técnicas para a descrição de algoritmos:linguagem natural, em que os algoritmos são expressos directamente em linguagem natural.O pseudocódigo é um código de escrita em que se utilizam termos convencionais para indicar as instruções do programa
esses termos são geralmente um misto de palavras da nossa linguagem natural com palavras e notações típicas das linguagens de programação. A utilização de pseudocódigo permite ao programador expressar as suas ideias sem ter de se preocupar com a sintaxe da linguagem de programação.
fluxogramas. Os fluxogramas são diagramas representativos do fluxo de acções de um programa, através de símbolos, que representam os diferentes tipos de acções e seu encadeamento na sequência do programa
Introdução à Programação 2006/2007
Algoritmo – Linguagem NaturalElaborar um algoritmo que calcule a área total das paredes de uma caixa de secção rectangular a partir das suas dimensões.
Identificação das variáveis que o algoritmo vai manipular:Dados de entrada: comprimento -> comp, largura -> largura, altura -> alturaValores intermédias: area_base, area_lateral1, area_lateral2Dados de saida: área da caixa -> area_caixa
Algoritmo:Introdução dos valores iniciais
Pedir comprimento da caixa Ler compPedir largura da caixaLer larguraPedir altura da caixaLer altura
Transformaçãoarea_base = comp * larguraarea_lateral1 = comp * alturaarea_lateral2 = largura * alturaarea_caixa = 2 * area_base + 2 * area_lateral1 + 2 * area_lateral2
Apresentação dos resultadosEscrever area_caixa
Introdução à Programação 2006/2007
Algoritmo – Pseudocódigonome: Conversão de distâncias (milhas para quilómetros){
/* Leitura com validação da distância expressa em milhas */do{
output(“Distância em milhas?”);input( Milhas);
} while (Milhas < 0.0 )/* conversão da distância de milhas para quilómetros */Quilometros = 1.609 * Milhas;/* Escrita da distância em quilómetros */output ( “Distância em Kilómetros = “, Quilometros);
}
Introdução à Programação 2006/2007
Algoritmo – FluxogramaInício
Ler a
Escrever “O quadrado é:”
result
Fim
result = a*a
Pedir a
Introdução à Programação 2006/2007
Especificação do problema
A especificação completa da solução de um problema consiste:
Definição de uma estrutura de dados capaz de armazenar a informação necessária àresolução do problema
Desenvolvimento do algoritmo, capaz de executar o funcionamento pretendido
Introdução à Programação 2006/2007
Especificação do problema (cont.)
Problema 1
Pretende-se escrever um programa que, dada uma distância expressa em milhas, que é lida do teclado, converte-a para quilómetros e escreve-a no monitor
Introdução à Programação 2006/2007
Especificação do problema (cont.)
Introdução à Programação 2006/2007
Especificação do problema (cont.)
Problema 2
Pretende-se escrever um programa que, dados os parâmetros A, B e C, que são lidos do teclado, determina as raízes da equação de 2ºgrau, Ax2+Bx+C=0, e escreve-as no monitor
Introdução à Programação 2006/2007
Especificação do problema (cont.)
Introdução à Programação 2006/2007
Decomposição hierárquica da solução
Introdução à Programação 2006/2007
Decomposição hierárquica da solução
Introdução à Programação 2006/2007
Regras Gramaticais do Pseudocódigo
Introdução à Programação 2006/2007
Definição da operação composta
{sequência de operações simples
}
Introdução à Programação 2006/2007
Selecção
Introdução à Programação 2006/2007
Selecção (cont.)
Introdução à Programação 2006/2007
Selecção (cont.)
Introdução à Programação 2006/2007
Selecção (cont.)
Introdução à Programação 2006/2007
Repetiçãofor ( contador = valor_inicial; contador <= valor_final; actualização do contador)
operação simples ou composta
Introdução à Programação 2006/2007
Repetição (cont.)
Introdução à Programação 2006/2007
Repetição (cont.)
Introdução à Programação 2006/2007
Input e Output
input ( lista de variáveis de entrada);
output ( lista de variáveis de saída e/ou mensagens);
Introdução à Programação 2006/2007
Decomposição hierárquica (cont.)
Introdução à Programação 2006/2007
Decomposição hierárquica (cont.)nome: Conversão de distâncias (milhas para quilómetros){
/* Leitura com validação da distância expressa em milhas */do{
output(“Distância em milhas?”);input( Milhas);
} while (Milhas < 0.0 )/* conversão da distância de milhas para quilómetros */Quilometros = 1.609 * Milhas;/* Escrita da distância em quilómetros */output ( “Distância em Kilómetros = “, Quilometros);
}
Introdução à Programação 2006/2007
Algoritmos: Exercício 1
Pretende-se escrever um programa que, dado um numero indeterminado de números introduzidos pelo teclado, até que apareça o número zero como indicador de paragem, calcule a média dos números lidos e escreva-a no monitor.
a) Efectue a especificação da estrutura de dados e solução do cálculo da média de uma sequência.
b) Faça o algoritmo do programa.
Introdução à Programação 2006/2007
Algoritmos: Exercício 2
Pretende-se um programa que leia números inteiros positivos introduzidos pelo teclado, atéque apareça o número zero como indicador de paragem ou até à leitura de um máximo 50 números, e que determine e escreva o maior dos números lidos no monitor. Portanto, pretende-se ignorar eventuais números negativos que forem introduzidos pelo teclado.
a) Efectue a especificação da estrutura de dados e solução do problema.
b) Faça o algoritmo do programa.