Algoritmos e Estruturas de Dados Portugol Prof. Me. Claudio Benossi [email protected] Sumário Representações de algoritmos Elementos básicos Algoritmos com qualidade Sumário Representações de algoritmos Elementos básicos Algoritmos com qualidade Representações de algoritmos Três formas de representação de algoritmos: Fluxograma Diagrama de Chapin Pseudo-código Representações de algoritmos - Fluxograma Fluxograma é uma forma padronizada para representar os passos lógicos de um determinado processamento. O fluxograma, podemos definir uma sequência de símbolos, com significado bem definido, portanto, sua principal função é a de facilitar a visualização dos passos de um processamento Representações de algoritmos - Fluxograma Simbologia do Diagrama de Bloco Existem diversos símbolos em um diagrama de bloco. Veja no quadro abaixo alguns dos símbolos que iremos utilizar: Símbolo Função TERMINAL Indica o início ou fim de um processamento Exemplo: Início do algoritmo Representações de algoritmos - Fluxograma Símbolo Função PROCESSAMENTO Processamento em geral Exemplo: x<- 2+3 ENTRADA MANUAL DE DADO Indica entrada de dados pelo usuário via teclado Exemplo: Digite a nota da prova 1 Representações de algoritmos - Fluxograma Símbolo Função EXIBIR Mostra informações ou resultados Exemplo: Mostre o resultado do cálculo DECISÃO Impõe uma condição do tipo se Exemplo: SE numero > 0 ENTÃO Fluxograma início C1 C2 C3 fim Fluxograma início separar ingredientes misturar ingredientes colocar massa no forno tirar bolo do forno fim Fluxograma início esperar assar separar ingredientes t ≥ 30min misturar ingredientes colocar massa no forno V tirar bolo do forno fim F Diagrama de Chapin separar ingredientes misturar ingredientes colocar massa no forno tirar bolo do forno Diagrama de Chapin separar ingredientes misturar ingredientes colocar massa no forno t ≥ 30min esperar assar tirar bolo do forno Pseudo-código (Portugol) Características: Sintaxe mais simples que a de uma Linguagem de Programação. Ênfase nas idéias e não nos detalhes. Facilita construir um programa em Linguagem de Programação. Pseudo-código (Portugol) Ingredientes: farinha, açúcar, leite Separar os ingredientes Misturar os ingredientes Colocar massa no forno Esperar assar por 30 minutos Retirar bolo do forno Sumário Representações de algoritmos Elementos básicos Algoritmos com qualidade Elementos básicos de um algoritmo Algoritmo <nome_do_algoritmo> <declarações de variáveis> <comandos> fim Elementos básicos de um algoritmo :: Exemplo Algoritmo perimetro_circunferência // declaração de constantes e variáveis const pi = 3,1415 float raio float perim // comandos ler (raio) perim = 2 * pi * raio escrever (perim) fim Elementos básicos de um algoritmo Dados (variáveis e constantes) Tipos de dados Operadores Comandos Funções Comentários Elementos básicos de um algoritmo :: Exemplo Algoritmo perimetro_circunferência // declaração de variáveis const PI = 3,1415 float raio dado constante dado variável float perim tipo de dado // comandos comentário ler (raio) operador perim = 2 * PI * raio escrever (perim) fim função Elementos básicos de um algoritmo :: Dados Dados Constantes O valor de uma constante não se altera após sua definição. Exemplos: N_NEPERIANO = 2,7182 UNIVERSIDADE = DRUMMOND' Dados Variáveis Elemento que têm a função de associar um nome a uma porção da memória onde um dado pode ser armazenado. Elementos básicos de um algoritmo :: Tipos de dados Definem a natureza do dado, as operações que podem ser realizadas com o dado e o espaço a ser ocupado na memória. Exemplos: Inteiro: 10 -5 Real (ponto flutuante): 1,34 -128 13,4 String de caracteres: 'quarta-feira' Lógico: TRUE (1) -5,0 'Abril' FALSE (0) Elementos básicos de um algoritmo :: Operadores Atribuição Aritméticos Relacionais Lógicos Elementos básicos de um algoritmo :: Operador Atribuição Utilizado para atribuir um valor a uma variável nome da variável Notação: x1 ← 23; temp ← x2; Valor Elementos básicos de um algoritmo :: Operadores Aritméticos Dados de entrada: tipo numérico (int ou float) Resultado: tipo numérico (int ou float) Exemplos: x_2 ← 2 + 3; alfa ← 1 / 5; ang ← 1 / 5.0; resto ← 10 % 3; resto ← 1 % 4; delta ← 5 * 5 – 4 * 1 * 4; Elementos básicos de um algoritmo :: Operadores Relacionais Dados de entrada: tipo numérico (int ou float) Resultado: tipo lógico Exemplos: cond1 ← 2 == 3; cond2 ← 1.6 ≠ 5.0; cond3 ← 1 > 5; cond4 ← (1 + 2) < 5; cond5 ← 10 ≥ 3; cond6 ← 1 ≤ (– 4 / 3); Elementos básicos de um algoritmo :: Operadores Lógicos Dados de entrada: tipo lógico Resultado: tipo lógico Exemplos: cond1 ← V AND F; cond2 ← F OR F; cond3 ← NOT cond1; cond4 ← (V AND F) OR (5 > 3); Elementos básicos de um algoritmo :: Precedência de Operadores 1. NOT – (negação) 2. * 3. + – (subtração) 4. == < 5. AND 6. OR 7. ← / % > ≠ ≥ ≤ Elementos básicos de um algoritmo :: Exercícios sobre Operadores d + y - z * a / p d / y y / a b / z r % q y % d ((z / a) + b*a ) – d y=2 z = 4.0 a=8 b = 6.0 d = 12 p=4 q=3 r = 10 Elementos básicos de um algoritmo :: Exercícios sobre Operadores (B == A * C) AND (LOG OR T) (B > A) OR (B == A) LOG OR (B / A ≥ C) AND NOT(A ≥ C) NOT LOG OR T AND (A + B ≥ C) NOT LOG OR (B * 2 - C == 0) LOG OR NOT (B * B ≤ C * 10 + A * B) A=2 B=7 C = 3.5 LOG = F Elementos básicos de um algoritmo :: Funções Pré-definidas Definidas pelo programador Exemplos: seno(angulo) pow(x,y) sqrt(resto) exp(tempo) ler(var1,var2,...) escrever(resul1,result2,...) Elementos básicos de um algoritmo :: Comentários Utilizados para descrever o algoritmo, esclarecendo trechos do código Notação em Linguagem C: // /* <comentário> */ Sumário Representações de algoritmos Elementos básicos Algoritmos com qualidade Algoritmos com qualidade Devem ser feitos para serem lidos por seres humanos! Escreva os comentários no momento em que estiver escrevendo o algoritmo. Algoritmos com qualidade Os comentários devem acrescentar alguma coisa, e não frasear o comando: // Multiplicação de b por h: area ← b * h; // Cálculo da área do retângulo: area ← b * h; Algoritmos com qualidade Use comentários no prólogo: /******************************** DRUMMOND – Colégio e Faculdade Fulano da Silva Data: 10/02/2014 Última modificação: 12/02/2014 Algoritmo de Demostração ********************************/ Algoritmos com qualidade Use espaços em branco para melhorar a legibilidade: hip←sqrt(cat1*cat1+cat2*cat2); hip ← sqrt(cat1 * cat1 + cat2 * cat2); Algoritmos com qualidade Escolha nomes representativos para as variáveis: p ← c + l; preco ← custo + lucro; Algoritmos com qualidade Utilize um comando por linha. Utilize parênteses para melhorar a compreensão e evitar erros. Utilize identação (recuo de texto). Atenção: identação ≠ endentação Exercício Uma fábrica de arruelas precisa calcular o custo de envio de um conjunto de unidades. Escreva um pseudo-código para tal. Exercício :: Algoritmo inicial 1. Calcular área 2. Calcular volume (área × espessura) 3. Calcular peso (volume × densidade × unidades) 4. Calcular custo (peso × frete) Exercício :: Algoritmo inicial 1. Calcular área d_int Areaint 2 2 d_int d _ ext Areaext 2 d_ext 2 Area Aext Aint Exercício :: Algoritmo inicial 2. Calcular volume: Volume Area espessura 3. Calcular peso: Peso Volume densidade unidades 4. Calcular custo (peso × frete) Custo Peso frete Exercício :: Pseudo-código Algoritmo arruela // Constantes const PI = 3,1415 // Variáveis de entrada float d_ext, d_int float espessura, densidade, unidades, frete // Variável de saída float custo // Variáveis do programa float area, area_ext, area_int, volume, peso ... Exercício :: Pseudo-código (cont.) ... // Início ler(d_ext, d_int, espessura, densidade, unidades, frete) area_ext ← pi * (d_ext/2) * (d_ext/2) area_int ← pi * (d_int/2) * (d_int/2) area ← area_ext – area_int volume ← area * espessura peso ← volume * densidade * unidades custo ← peso * frete escrever (custo) fim Questões