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
Download

Início do algoritmo - Prof. Ms. Claudio Benossi