Estrutura de Dados Algoritmos Antonio Felicio Netto antonio.felicio@anhanguera.com
Algoritmo O que é um algoritmo? Processo sistemático para computar um resultado a partir de dados de entrada O que são estruturas de dados? Maneira de organizar dados e operar sobre eles Algoritmos + estruturas de dados = programas Um programa é a expressão em linguagem formal (inteligível por um computador) de um algoritmo
Formas de Representar Algoritmo DESCRIÇÃO NARRATIVA Utiliza uma linguagem de escrita natural para descrever algoritmos. FLUXOGRAMA (DIAGRAMA DE MÓDULOS) Utiliza uma linguagem de representação gráfica para descrever algoritmos. LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO) Utiliza uma linguagem de escrita artificial para descrever algoritmos.
Exemplo de representação Um algoritmo para converter Fahrenheit e Celsius
Descrição Narrativa 1 - solicite a temperatura em Fahrenheit; 2 - transforme a temperatura em Fahrenheit para Celsius; 3- informe a temperatura em Celsius.
Fluxograma Seus principais símbolos gráficos são: = Início e final do fluxograma = Operação de entrada de dados = Operação de saída de dados em impressora = Operação de saída de dados em vídeo = Operações de processamento = Decisão = Seta de Fluxo de Dados
Fluxograma do algoritmo Início Início do algoritmo Fahrenheit Entrada da temperatura (F) Celsius = 5/9 * (Fahrenheit 32) Cálculo da temperatura (C) Celsius Apresentação do resultado Fim do algoritmo Fim
Linguagem Algorítmica A forma geral de um algoritmo em pseudo-código: Algoritmo <nome_do_algoritmo> [<declaração_de_variáveis>] [<sub-algoritmos>] Início <corpo_do_algoritmo> Fim
Linguagem Algorítmica Onde: Algoritmo Indica o início da definição do algoritmo. <nome_do_algoritmo> Nome dado ao algoritmo para distingui-lo dos demais. [<declaração_de_variáveis>] Parte opcional onde são declaradas as variáveis globais usadas no algoritmo principal e, eventualmente, nos sub-algoritmos.
Linguagem Algorítmica Onde: [<subalgoritmos>] Parte opcional onde são definidos os sub-algoritmos. Início Palavra que delimita o início do corpo do algoritmo. <corpo_do_algoritmo> Conjunto de instruções do algoritmo. Fim Palavra que delimita o término do corpo do algoritmo.
Pseudo-código do Algoritmo Algoritmo Fahrenheit-Celsius Real: Fahrenheit, Celsius; Início Leia (Fahrenheit); Celsius 5/9 * (Fahrenheit 32); Escreva (Celsius); Fim
Formas de representar o algoritmo Desc. Narrativa Fluxograma Ling. Algorítmica 1- Solicite a temperatura em Fahrenheit. 2- Transforme de Fahrenheit para Celsius. 3- Informe a temperatura em Celsius. Início Fahrenheit Celsius = 5/9 * (Fahrenheit 32) Celsius Algoritmo Fahrenheit-Celsius Real: Fahrenheit, Celsius; Início Leia (Fahrenheit); Celsius 5/9 * (Fahrenheit 32); Escreva (Celsius); Fim Fim
Formas de representar o algoritmo Descrição Narrativa Fluxograma Linguagem Algorítmica Vantagens O português é bastante conhecido por nós. Padrão mundial. Ferramenta bem conhecida. Figuras dizem muito mais que palavras. Independência de linguagem de programação. Usa o português como base. Define-se melhor quais e como os dados vão estar estruturados. Passagem quase imediata do algoritmo para uma linguagem de programação qualquer. Desvantagens Imprecisão. Pouca confiabilidade (a imprecisão acarreta a desconfiança). Extensão (normalmente, escreve-se muito para dizer pouca coisa). Complica-se à medida que o algoritmo cresce. Pouca atenção aos dados, não oferecendo recursos para declará-los. Exige a definição de uma linguagem não real para trabalho. Não é padronizada.
Construindo Algoritmos Uma boa prática para construir algoritmos é dividir o problema em 3 fases (Entrada, Processamento e Saída). Entrada Processamento Saída ENTRADA: São os dados de entrada do algoritmo. PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final. SAÍDA: São os dados já processados.
Construindo Algoritmos No algoritmo Fahrenheit-Celsius temos: ENTRADA: Temperatura em Fahrenheit PROCESSAMENTO: Celsius = 5/9 *(Fahrenheit 32) SAÍDA: Temperatura em Celsius Num algoritmo para calcular a área de um triângulo temos: ENTRADA: Base e Altura do triângulo PROCESSAMENTO: Área = (Base * Altura)/2 SAÍDA: Área
Construindo Algoritmos Dividir o problema poderá ajudá-lo na solução (divisão e conquista); Por isso, antes de começar a elaborar o algoritmo divida o problema em: Que dados preciso para começar? Entrada Quais são os cálculos e decisões? Que dados devem ser exibidos Processamento Saída
Exercícios Identifique a entrada, o processamento e a saída dos problemas abaixo: 1. Calcular e exibir a média ponderada de 2 notas dadas. (nota1= peso 6 e nota2= peso 4) 2. Reajustar um salário em 17,75%. 3. Calcular o desconto de 23% sobre o preço de um produto. 4. Dada uma taxa de câmbio, transformar um valor em Dólar para Reais. 5. Dada uma taxa de câmbio, transformar um valor em Reais para Dólar.
Respostas 1 - Calcular e exibir a média ponderada de 2 notas dadas. (nota1= peso 6 e nota2= peso 4) ENTRADA: nota1 e nota2 PROCESSAMENTO: médiap=((nota1 * 6)+(nota2 * 4))/(6+4) SAÍDA: médiap 2 - Reajustar um salário em 17,75%. ENTRADA: salário PROCESSAMENTO: salárior = salário+(salário*0,1775) SAÍDA: salárior
Respostas 3- Calcular o desconto de 23% sobre o preço de um produto. ENTRADA: preço PROCESSAMENTO: desconto = preço*0,23 SAÍDA: desconto 4 - Dada uma taxa de câmbio, transformar um valor em Dólar para Reais. ENTRADA: câmbio e dólar PROCESSAMENTO: real = dólar * câmbio SAÍDA: real
Respostas 5- Dada uma taxa de câmbio, transformar um valor em Reais para Dólar. ENTRADA: câmbio e real PROCESSAMENTO: dólar = real/câmbio SAÍDA: dólar
Respostas 5- Dada uma taxa de câmbio, transformar um valor em Reais para Dólar. ENTRADA: câmbio e real PROCESSAMENTO: dólar = real/câmbio SAÍDA: dólar
Linguagem Algorítmica Adotaremos a seguinte sintaxe Algoritmo <nome_do_algoritmo> [<declaração_de_variáveis>] tipo: <nome> [<sub-algoritmos>] função <nome> <argumentos> : <retorno> Início <corpo_do_algoritmo> Fim
Linguagem Algorítmica Comandos: Condição : Se <comparação> então ; senão; fimse Laços: Enquanto <comparação> faça; fimenquanto Para <variável> até <valor> passo <incremento> faça; fimpara Atribuição: Entrada de dados : Leia (<variável>) Saída de dados : Escreva ( Texto <variavel)
Exercícios Elabore os algoritmos dos problemas abaixo: 1. Calcular e exibir a média ponderada de 2 notas dadas. (nota1= peso 6 e nota2= peso 4) 2. Reajustar um salário em 17,75%. 3. Calcular o desconto de 23% sobre o preço de um produto. 4. Dada uma taxa de câmbio, transformar um valor em Dólar para Reais.
Respostas Calcular e exibir a média ponderada de 2 notas dadas. (nota1= peso 6 e nota2= peso 4) Algoritmo CalculaNota Real: nota1, nota2, mediap Início Escreva ( Digite a Nota 1 ) Leia (nota1) Escreva ( Digite a Nota 2 ) Leia (nota2) mediap ((nota1 * 6)+(nota2 * 4))/(6+4) Escreva ( A média das notas é:, mediap) Fim
Respostas Reajustar um salário em 17,75%. Algoritmo ReajusteSalario Real: salario, salarior Início Escreva ( Digite o salário atual ) Leia (salario) salarior salario+(salario*0,1775) Escreva ( O salário reajustado é:, salarior) Fim
Respostas Calcular o desconto de 23% sobre o preço de um produto Algoritmo Desconto Real: desconto, preco Início Escreva ( Digite o preço do produto ) Leia (preco) desconto preco * 0,23 Escreva ( O desconto do preço do produto é de :, desconto ) Fim
Respostas Dada uma taxa de câmbio, transformar um valor em Dólar para Reais Algoritmo Cambio Real: vlrreal, vlrdolar, txcambio Início Escreva ( Digite o valor em Dólar ) Leia (vlrdolar) Escreva ( Digite a taxa de câmbio ) Leia (txcambio) vlrreal vlrdolar * txcambio Escreva ( O Valor em Reais é de R$, vlrreal) Fim
Respostas Dada uma taxa de câmbio, transformar um valor em Dólar para Reais Algoritmo Cambio Real: vlrreal, vlrdolar, txcambio Início Escreva ( Digite o valor em Dólar ) Leia (vlrreal) Escreva ( Digite a taxa de câmbio ) Leia (txcambio) vlrreal vlrdolar * txcambio Escreva ( O Valor em Reais é de R$, vlrreal) Fim