Algoritmos e Lógica de Programação Formas de representar um algoritmo Como representar um algoritmo? Algoritmos podem ser representados, dentre outras Construção de Algoritmos maneiras, por: • DESCRIÇÃO NARRATIVA – Utiliza Utili uma linguagem li de d escrita it natural t l para descrever d algoritmos l it • FLUXOGRAMA (DIAGRAMA DE MÓDULOS) – Utiliza uma linguagem de representação gráfica para descrever algoritmos Conceitos Introdutórios • LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO) – Utiliza uma linguagem de escrita artificial para descrever algoritmos Reinaldo Gomes [email protected] Formas de representar um algoritmo Exemplo: Algoritmo para converter uma temperatura em Fahrenheit para Celsius Descrição narrativa do algoritmo Fahrenheit Fahrenheit-Celsius Celsius Formas de representar um algoritmo Exemplo: Algoritmo para converter uma temperatura em Fahrenheit para Celsius Fluxograma Solicite a temperatura em Fahrenheit Transforme a temperatura em Fahrenheit para Celsius Informe a temperatura em Celsius Formas de representar um algoritmo Formas de representar um algoritmo Exemplo: Algoritmo para converter uma temperatura em Fahrenheit para Celsius Linguagem Algorítmica (Pseudo-Código) Algoritmo Fahrenheit-Celsius Fahrenheit Celsius Real: Fahrenheit, Celsius; Início Ler (Fahrenheit); Celsius -> 5/9 * (Fahrenheit – 32); Escrever (Celsius); Fim Ferramentas – Fluxograma (Principais Símbolos) Início Indica o ponto onde começa o algoritmo. Não é codificado em forma de comando. Ler X, ... Y Indica operação de leitura ou entrada dos dados para os locais chamados X, ..., Y na memória do computador. Z = Expressão Indica operação aritmética ou cálculo de uma fórmula. 1 Formas de representar um algoritmo Ferramentas - Fluxograma (Principais Símbolos) < > Comparar Z com W Formas de representar um algoritmo Indica comparação de um valor com outro. Conforme o resultado desta comparação, um dos três caminhos diferentes será seguido nesse algoritmo. algoritmo Ferramentas - Fluxograma (Principais Símbolos) N Conectivo que indica o local para onde o fluxo do algoritmo deve ser desviado, onde N é um número natural seqüencial, iniciando ) com o valor 1 ((um). = Z :: W ? Sim Não Indica verificação ou comparação em forma de pergunta, podem ocorrer uma das respostas ‘Sim’ ou ‘Não’. O sinal ‘::’ pode ser ‘=’, ‘<>’, ‘>’, ‘<’, etc. Formas de representar um algoritmo Ferramentas – Linguagem Algorítmica (Pseudo-Código) Ferramentas – Linguagem Algorítmica (Pseudo-Código) [<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 Pare ou Fim Indica o ponto onde o algoritmo suspende a execução de comando(s) ou seu fim. Ferramentas – Linguagem Algorítmica (Pseudo-Código) Algoritmo • Indica o início da definição do algoritmo Algoritmo <nome_do_algoritmo> [<declaração_de_variáveis>] [<sub-algoritmos>] Início <corpo_do_algoritmo> Fim. Indica operação de saída ou impressão do valor Z numa linha da impressora. Formas de representar um algoritmo A forma geral de um algoritmo em pseudo-código : Formas de representar um algoritmo Escrever Z <nome_do_algoritmo> • Nome dado ao algoritmo para distinguí-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 subalgoritmos Formas de representar um algoritmo Comparação Descrição Narrativa Solicite a temperatura em Fahrenheit. Transforme de Fahrenheit para Celsius. Informe a temperatura em Celsius Fluxograma Linguagem Algorítmica Algoritmo Fahrenheit-Celsius R l Fahrenheit, Real: F h h i C Celsius; l i Início Ler (Fahrenheit); Celsius 5/9 * (Fahrenheit – 32); Escrever (Celsius); Fim 2 Formas de representar um algoritmo Comparação Vantagens Desvantagens Descrição Narrativa O português é bastante conhecido por nós. Imprecisão; Pouca confiabilidade (a imprecisão acarreta a desconfiança); Extensão (normalmente, escreve-se muito para dizer pouca coisa). coisa) Fluxograma Padrão mundial; Ferramenta bem conhecida; Figuras dizem muito mais que palavras; Complica-se à medida que o algoritmo cresce; Pouca atenção aos dados, não oferecendo recursos para declará-los Linguagem Algorítmica Exige a definição de uma linguagem Independência de linguagem de não real para trabalho; programação; Não é padronizada. 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. Construindo Algoritmos No algoritmo Fahrenheit-Celsius temos Construindo Algoritmos Uma boa prática para construir algoritmos é dividir o problema em 3 fases (Entrada, Processamento e 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 Dividir o problema em Entrada, Processamento e Saída irá ajudá-lo a ordenar corretamente as instruções do seus algoritmos Por isso, antes de construir um algoritmo, pare para pensar e identificar: 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 Quais dados preciso para começar? – Entrada ENTRADA: Base e Altura do triângulo Quais são os cálculos e decisões? – Processamento PROCESSAMENTO: Área = (Base * Altura)/2 Quais dados devem ser exibidos? – Saída SAÍDA: Área Programação Estruturada Problema: Nos primórdios da programação os programas eram desenvolvidos de forma intuitiva Neste tipo de abordagem era comum o uso de desvios incondicionais (vá para/goto) para codificação das soluções Porém a abordagem intuitiva falha quando os programas são grandes e complicados Programação Estruturada Problema: Nos primórdios da programação os programas eram desenvolvidos de forma intuitiva Neste tipo de abordagem era comum o uso de desvios incondicionais (vá para/goto) para codificação das soluções Porém a abordagem intuitiva falha quando os programas são grandes e complicados 3 Programação Estruturada Programação Estruturada Algoritmo UmExemploNãoEstruturado; Inicio Escreva( “Início do programa”); Vá Para Marca; {ou GOTO Marca} //Isso nunca será executado! Escreva( “Meio do programa”); Marca; {continua a partir daqui} Escreva (“Fim do programa”); Fim. Nos anos 70 surgiu a programação estruturada como solução destes problemas Desvio Incondicional Exercício Identifique a entrada, o processamento e a saída dos problemas abaixo Calcular e exibir a média ponderada de 2 notas dadas. Como resolver esse tipo de problema? (nota1= peso 6 e nota2= peso 4) Reajustar um salário em 17,75% Calcular o desconto de 23% sobre o preço de um produto Dada uma taxa de câmbio, transformar um valor em Dólar para Reais Dada uma taxa de câmbio, transformar um valor em Reais para Dólar Programação estruturada (Algoritmo Estruturado) • “É a arte t ou té técnica i dde construir t i e fformular l algoritmos l it dde fforma sistemática ". Niklaus Wirth (Pai do PASCAL) Objetivos: • Facilitar a escrita, leitura e compreensão dos programas; • Permitir a verificação/testes a priori dos programas; • Facilitar a manutenção dos programas. • Possibilitar o desenvolvimento em equipe • Reduzir a complexidade Algoritmos e Lógica de Programação Construção de Algoritmos Conceitos Introdutórios Reinaldo Gomes [email protected] 4