Algoritmos e Estruturas de Dados Prof. Me. Claudio Benossi [email protected] Portugol.
Transcript of Algoritmos e Estruturas de Dados Prof. Me. Claudio Benossi [email protected] Portugol.
SumárioSumário
Representações de algoritmosRepresentações de algoritmos
Elementos básicosElementos básicos
Algoritmos com qualidadeAlgoritmos com qualidade
SumárioSumário
Representações de algoritmosRepresentações de algoritmos
Elementos básicosElementos básicos
Algoritmos com qualidadeAlgoritmos com qualidade
Representações de algoritmosRepresentações de algoritmos
Três formas de representação de Três formas de representação de algoritmos:algoritmos: FluxogramaFluxograma
Diagrama de ChapinDiagrama de Chapin
Pseudo-códigoPseudo-código
Representações de algoritmos - FluxogramaRepresentaçõ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 - FluxogramaRepresentaçõ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 - FluxogramaRepresentaçõ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 - FluxogramaRepresentaçõ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
FluxogramaFluxograma
início
C1
C3
C2
fim
FluxogramaFluxograma
início
separar ingredientes
fim
misturar ingredientes
colocar massa no forno
tirar bolo do forno
FluxogramaFluxograma
início
separar ingredientes
fim
misturar ingredientes
esperar assar
tirar bolo do forno
t ≥ 30min
colocar massa no forno
F
V
separar ingredientesseparar ingredientes
misturar ingredientesmisturar ingredientes
colocar massa no fornocolocar massa no forno
tirar bolo do fornotirar bolo do forno
Diagrama de ChapinDiagrama de Chapin
separar ingredientesseparar ingredientes
misturar ingredientesmisturar ingredientes
colocar massa no fornocolocar massa no forno
t ≥ 30mint ≥ 30min
esperar assaresperar assar
tirar bolo do fornotirar bolo do forno
Diagrama de ChapinDiagrama de Chapin
Pseudo-código (Portugol)Pseudo-código (Portugol)
Características:Características: Sintaxe mais simplesSintaxe mais simples que a de uma Linguagem que a de uma Linguagem
de Programação.de Programação.
Ênfase nas Ênfase nas idéiasidéias e não nos detalhes. e não nos detalhes.
Facilita construir um programa em Linguagem Facilita construir um programa em Linguagem de Programação.de Programação.
Pseudo-código (Portugol)Pseudo-código (Portugol)
Ingredientes: farinha, açúcar, leiteIngredientes: farinha, açúcar, leite
Separar os ingredientesSeparar os ingredientes
Misturar os ingredientesMisturar os ingredientes
Colocar massa no fornoColocar massa no forno
Esperar assar por 30 minutosEsperar assar por 30 minutos
Retirar bolo do fornoRetirar bolo do forno
SumárioSumário
Representações de algoritmosRepresentações de algoritmos
Elementos básicosElementos básicos
Algoritmos com qualidadeAlgoritmos com qualidade
Algoritmo <Algoritmo <nome_do_algoritmonome_do_algoritmo>>
fimfim
Elementos básicos de um algoritmoElementos básicos de um algoritmo
<declarações de variáveis><declarações de variáveis><declarações de variáveis><declarações de variáveis>
<comandos><comandos><comandos><comandos>
Elementos básicos de um algoritmo:: ExemploElementos básicos de um algoritmo:: Exemplo
Algoritmo Algoritmo perimetro_circunferênciaperimetro_circunferência
// declaração de constantes e variáveis// declaração de constantes e variáveis
const pi const pi = 3,1415= 3,1415
float raiofloat raio
float perimfloat perim
// comandos// comandos
ler (raio)ler (raio)
perim = 2 * pi * raioperim = 2 * pi * raio
escrever (perim)escrever (perim)
fimfim
Elementos básicos de um algoritmoElementos básicos de um algoritmo
Dados (variáveis e constantes)Dados (variáveis e constantes)
Tipos de dadosTipos de dados
OperadoresOperadores
ComandosComandos
FunçõesFunções
ComentáriosComentários
Elementos básicos de um algoritmo:: ExemploElementos básicos de um algoritmo:: Exemplo
Algoritmo Algoritmo perimetro_circunferênciaperimetro_circunferência
// declaração de variáveis// declaração de variáveis
const PI const PI = 3,1415= 3,1415
float raiofloat raio
float perimfloat perim
// comandos// comandos
ler (raio)ler (raio)
perim = 2 * PI * raioperim = 2 * PI * raio
escrever (perim)escrever (perim)
fimfim
Algoritmo Algoritmo perimetro_circunferênciaperimetro_circunferência
// declaração de variáveis// declaração de variáveis
const PI const PI = 3,1415= 3,1415
float raiofloat raio
float perimfloat perim
// comandos// comandos
ler (raio)ler (raio)
perim = 2 * PI * raioperim = 2 * PI * raio
escrever (perim)escrever (perim)
fimfim
dado variáveldado variável
dado constantedado constante
tipo de dadotipo de dado
operadoroperador
funçãofunção
comentáriocomentário
Elementos básicos de um algoritmo:: DadosElementos básicos de um algoritmo:: Dados
Dados ConstantesDados Constantes O valor de uma constante O valor de uma constante não se alteranão se altera após após
sua definição.sua definição.
Exemplos:Exemplos: N_NEPERIANO = 2,7182N_NEPERIANO = 2,7182
UNIVERSIDADE = DRUMMOND'UNIVERSIDADE = DRUMMOND'
Dados VariáveisDados Variáveis Elemento que têm a função de Elemento que têm a função de associar um associar um
nome a uma porção da memória nome a uma porção da memória onde um onde um dado pode ser armazenado.dado pode ser armazenado.
Elementos básicos de um algoritmo:: Tipos de dadosElementos básicos de um algoritmo:: Tipos de dados
Definem a Definem a natureza natureza do dado, as do dado, as operaçõesoperações que podem ser realizadas com que podem ser realizadas com o dado e o o dado e o espaçoespaço a ser ocupado na a ser ocupado na memória.memória.
Exemplos:Exemplos: Inteiro:Inteiro: 1010 -5 -5 -128 -128
Real (ponto flutuante):Real (ponto flutuante): 1,341,34 13,4 13,4 -5,0 -5,0
String de caracteres: String de caracteres: 'quarta-feira''quarta-feira' 'Abril' 'Abril'
Lógico:Lógico: TRUE (1)TRUE (1) FALSE (0) FALSE (0)
Elementos básicos de um algoritmo:: OperadoresElementos básicos de um algoritmo:: Operadores
AtribuiçãoAtribuição
AritméticosAritméticos
RelacionaisRelacionais
LógicosLógicos
Utilizado para atribuir um valor a uma Utilizado para atribuir um valor a uma variávelvariável
Notação:Notação:
x1x1 ←← 23;23;
temptemp ←← x2x2;;
nome da variável
nome da variável
ValorValor
Elementos básicos de um algoritmo:: Operador AtribuiçãoElementos básicos de um algoritmo:: Operador Atribuição
Elementos básicos de um algoritmo:: Operadores AritméticosElementos básicos de um algoritmo:: Operadores Aritméticos
Dados de entradaDados de entrada: tipo numérico (int ou : tipo numérico (int ou float)float)
ResultadoResultado: tipo numérico (int ou float): tipo numérico (int ou float)
Exemplos:Exemplos: x_2x_2 ←← 2 2 ++ 3; 3;
alfa alfa ←← 1 1 // 5; 5;
angang ←← 1 1 / / 5.0;5.0;
restoresto ←← 10 10 %% 3; 3;
restoresto ←← 1 1 %% 4; 4;
deltadelta ←← 5 5 ** 5 5 –– 4 4 ** 1 1 ** 4; 4;
Elementos básicos de um algoritmo:: Operadores RelacionaisElementos básicos de um algoritmo:: Operadores Relacionais
Dados de entradaDados de entrada: tipo numérico (int ou : tipo numérico (int ou float)float)
ResultadoResultado: tipo lógico: tipo lógico
Exemplos:Exemplos: cond1cond1 ←← 2 2 ==== 3; 3; cond2cond2 ←← 1.6 1.6 ≠≠ 5.0; 5.0; cond3cond3 ←← 1 1 >> 5; 5; cond4cond4 ←← (1 + 2) (1 + 2) << 5; 5; cond5cond5 ←← 10 10 ≥≥ 3; 3; cond6cond6 ←← 1 1 ≤≤ (– 4 / 3); (– 4 / 3);
Elementos básicos de um algoritmo:: Operadores LógicosElementos básicos de um algoritmo:: Operadores Lógicos
Dados de entradaDados de entrada: tipo lógico: tipo lógico
ResultadoResultado: tipo lógico: tipo lógico
Exemplos:Exemplos: cond1cond1 ←← V V ANDAND F; F;
cond2cond2 ←← F F OROR F; F;
cond3cond3 ←← NOTNOT cond1; cond1;
cond4cond4 ←← (V (V ANDAND F) F) OROR (5 > 3); (5 > 3);
Elementos básicos de um algoritmo:: Precedência de OperadoresElementos básicos de um algoritmo:: Precedência de Operadores
1.1. NOTNOT – (negação)– (negação)
2.2. ** / / %%
3.3. ++ – (subtração)– (subtração)
4.4. == == < < > > ≠ ≠ ≥ ≥ ≤≤
5.5. ANDAND
6.6. OROR
7.7. ←←
d + y - z * a / pd + y - z * a / p
d / yd / y
y / ay / a
b / zb / z
r % qr % q
y % dy % d
((z / a) + b*a ) – d((z / a) + b*a ) – d
y = 2z = 4.0a = 8b = 6.0d = 12p = 4q = 3 r = 10
Elementos básicos de um algoritmo:: Exercícios sobre OperadoresElementos básicos de um algoritmo:: Exercícios sobre Operadores
(B == A * C) (B == A * C) ANDAND (LOG (LOG OROR TT))
(B > A) (B > A) OROR (B == A) (B == A)
LOG LOG OROR (B / A ≥ C) (B / A ≥ C) AND NOTAND NOT(A ≥ C)(A ≥ C)
NOTNOT LOG LOG OROR TT ANDAND (A + B ≥ C) (A + B ≥ C)
NOTNOT LOG LOG OROR (B * 2 - C == 0) (B * 2 - C == 0)
LOG LOG OR NOTOR NOT (B * B ≤ C * 10 + A * B) (B * B ≤ C * 10 + A * B)
A = 2B = 7C = 3.5LOG = FF
Elementos básicos de um algoritmo:: Exercícios sobre OperadoresElementos básicos de um algoritmo:: Exercícios sobre Operadores
Elementos básicos de um algoritmo:: FunçõesElementos básicos de um algoritmo:: Funções
Pré-definidasPré-definidas
Definidas pelo programadorDefinidas pelo programador
Exemplos:Exemplos:
seno(angulo)seno(angulo)
pow(x,y)pow(x,y)
sqrt(resto)sqrt(resto)
exp(tempo)exp(tempo)
ler(var1,var2,...)ler(var1,var2,...)
escrever(resul1,result2,...)escrever(resul1,result2,...)
Elementos básicos de um algoritmo:: ComentáriosElementos básicos de um algoritmo:: Comentários
Utilizados para descrever o algoritmo, Utilizados para descrever o algoritmo, esclarecendo trechos do códigoesclarecendo trechos do código
Notação em Linguagem C:Notação em Linguagem C: ////
/*/* <comentário> <comentário> */ */
SumárioSumário
Representações de algoritmosRepresentações de algoritmos
Elementos básicosElementos básicos
Algoritmos com qualidadeAlgoritmos com qualidade
Algoritmos com qualidadeAlgoritmos com qualidade
Devem ser feitos para serem lidos por Devem ser feitos para serem lidos por seres humanos!seres humanos!
Escreva os comentários no momento em Escreva os comentários no momento em que estiver escrevendo o algoritmo.que estiver escrevendo o algoritmo.
// Cálculo da área do retângulo:// Cálculo da área do retângulo:area ← b * h;area ← b * h;
// Cálculo da área do retângulo:// Cálculo da área do retângulo:area ← b * h;area ← b * h;
// Multiplicação de b por h:// Multiplicação de b por h:area ← b * h;area ← b * h;
// Multiplicação de b por h:// Multiplicação de b por h:area ← b * h;area ← b * h;
Algoritmos com qualidadeAlgoritmos com qualidade
Os comentários devem Os comentários devem acrescentaracrescentar alguma coisa, e alguma coisa, e não frasearnão frasear o comando: o comando:
Algoritmos com qualidadeAlgoritmos com qualidade
Use comentários no prólogo:Use comentários no prólogo:
/********************************/********************************
DRUMMOND – Colégio e FaculdadeDRUMMOND – Colégio e Faculdade
Fulano da SilvaFulano da Silva
Data: 10/02/2014Data: 10/02/2014
Última modificação: 12/02/2014Última modificação: 12/02/2014
Algoritmo de DemostraçãoAlgoritmo de Demostração
********************************/********************************/
hip ← sqrt(cat1 * cat1 + cat2 * cat2);hip ← sqrt(cat1 * cat1 + cat2 * cat2);
hip←sqrt(cat1*cat1+cat2*cat2);hip←sqrt(cat1*cat1+cat2*cat2);
Algoritmos com qualidadeAlgoritmos com qualidade
Use espaços em branco para melhorar a Use espaços em branco para melhorar a legibilidade:legibilidade:
preco ← custo + lucro;preco ← custo + lucro;
p ← c + l;p ← c + l;
Algoritmos com qualidadeAlgoritmos com qualidade
Escolha nomes Escolha nomes representativosrepresentativos para as para as variáveis:variáveis:
Algoritmos com qualidadeAlgoritmos com qualidade
Utilize Utilize umum comando por linha. comando por linha.
Utilize Utilize parêntesesparênteses para melhorar a para melhorar a compreensão e evitar erros.compreensão e evitar erros.
Utilize Utilize identaçãoidentação (recuo de texto). (recuo de texto). Atenção: identação Atenção: identação ≠ ≠ endentaçãoendentação
ExercícioExercício
Uma fábrica de arruelas precisa calcular o Uma fábrica de arruelas precisa calcular o custo de envio de um conjunto de custo de envio de um conjunto de unidades. Escreva um pseudo-código para unidades. Escreva um pseudo-código para tal.tal.
Exercício:: Algoritmo inicialExercício:: Algoritmo inicial
1.1. Calcular Calcular áreaárea
2.2. Calcular Calcular volumevolume (área × espessura) (área × espessura)
3.3. Calcular Calcular pesopeso (volume × densidade × unidades) (volume × densidade × unidades)
4.4. Calcular Calcular custocusto (peso × frete) (peso × frete)
Exercício:: Algoritmo inicialExercício:: Algoritmo inicial
1.1. Calcular Calcular áreaárea
d_extd_ext
d_intd_int
2
int 2
d_int
Area
2
2
_
extdAreaext
intAAArea ext intAAArea ext
Exercício:: Algoritmo inicialExercício:: Algoritmo inicial
2.2. Calcular Calcular volumevolume::
3.3. Calcular Calcular pesopeso::
4.4. Calcular Calcular custocusto (peso × frete) (peso × frete)
espessuraAreaVolume espessuraAreaVolume
unidadesdensidadeVolumePeso unidadesdensidadeVolumePeso
fretePesoCusto fretePesoCusto
Exercício:: Pseudo-códigoExercício:: Pseudo-código
Algoritmo Algoritmo arruelaarruela
// Constantes// Constantes
const PI const PI = 3,1415= 3,1415
// Variáveis de entrada// Variáveis de entrada
float d_ext, d_intfloat d_ext, d_int
float espessura, densidade, unidades, fretefloat espessura, densidade, unidades, frete
// Variável de saída// Variável de saída
float custofloat custo
// Variáveis do programa// Variáveis do programa
float area, area_ext, area_int, volume, pesofloat area, area_ext, area_int, volume, peso
......
Exercício:: Pseudo-código (cont.)Exercício:: Pseudo-código (cont.)
......
// Início// Início
ler(d_ext, d_int, espessura, densidade, unidades, frete)ler(d_ext, d_int, espessura, densidade, unidades, frete)
area_ext area_ext ←← pi * (d_ext/2) * (d_ext/2) pi * (d_ext/2) * (d_ext/2)
area_int area_int ←← pi * (d_int/2) * (d_int/2) pi * (d_int/2) * (d_int/2)
area area ←← area_ext – area_int area_ext – area_int
volume volume ←← area * espessura area * espessura
peso peso ←← volume * densidade * unidades volume * densidade * unidades
custo custo ←← peso * frete peso * frete
escrever (custo)escrever (custo)
fimfim
QuestõesQuestões