Estrutura de Dados Algoritmos Antonio Felicio Netto [email protected] 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) Apresentação do resultado Celsius 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 1- Solicite a temperatura em Fahrenheit. 2- Transforme de Fahrenheit para Celsius. 3- Informe a temperatura em Celsius. Fluxograma Início Fahrenheit Celsius = 5/9 * (Fahrenheit – 32) Celsius Fim Ling. Algorítmica Algoritmo Fahrenheit-Celsius Real: Fahrenheit, Celsius; Início Leia (Fahrenheit); Celsius 5/9 * (Fahrenheit – 32); Escreva (Celsius); Fim Formas de representar o algoritmo Vantagens Desvantagens Descrição Narrativa • O português é bastante conhecido • Imprecisão. Fluxograma • 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. Linguagem Algorítmica por nós. • 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: Entrada Que dados preciso para começar? Quais são os cálculos e decisões? Processamento Que dados devem ser exibidos 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