460 likes | 641 Views
Prof. Me. Claudio Benossi claudio@beno.com.br. Algoritmos e Estruturas de Dados. Portugol. 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.
E N D
Prof. Me. Claudio Benossi claudio@beno.com.br Algoritmos e Estruturas de Dados Portugol
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:
Fluxograma início C1 C2 C3 fim
Fluxograma início separar ingredientes misturar ingredientes colocar massa no forno tirar bolo do forno fim
Fluxograma F V início esperar assar separar ingredientes t ≥ 30min misturar ingredientes tirar bolo do forno colocar massa no forno fim
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> fim <declarações de variáveis> <comandos>
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 dado constante dado variável tipo de dado comentário operador função Algoritmo perimetro_circunferência // declaração de 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 • 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 -128 • Real (ponto flutuante): 1,34 13,4 -5,0 • String de caracteres: 'quarta-feira' 'Abril' • Lógico: TRUE (1) 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 nome da variável Valor • Utilizado para atribuir um valor a uma variável • Notação: x1 ← 23; temp ← x2;
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 • NOT – (negação) • * / % • + – (subtração) • == < > ≠ ≥ ≤ • AND • OR • ←
d + y - z * a / p d / y y / a b / z r % q y % d ((z / a) + b*a ) – d Elementos básicos de um algoritmo:: Exercícios sobre Operadores • y = 2 • z = 4.0 • a = 8 • b = 6.0 • d = 12 • p = 4 • q = 3 • r = 10
(B == A * C) AND (LOG ORT) (B > A) OR (B == A) LOG OR (B / A ≥ C) AND NOT(A ≥ C) NOT LOG ORTAND (A + B ≥ C) NOT LOG OR (B * 2 - C == 0) LOG OR NOT (B * B ≤ C * 10 + A * B) Elementos básicos de um algoritmo:: Exercícios sobre Operadores • 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 • Calcular área • Calcular volume (área × espessura) • Calcular peso (volume × densidade × unidades) • Calcular custo (peso × frete)
Exercício:: Algoritmo inicial • Calcular área d_int d_ext
Exercício:: Algoritmo inicial • Calcular volume: • Calcular peso: • Calcular 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