Buscar

Algoritmos 02 - Construindo Algoritmos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 33 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 33 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 33 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

N575 - Algoritmos e 
Programação de Computadores 
 
Modelo Algorítmico –Construção de Algoritmos 
 
 
Prof. Raphael Torres Santos Carvalho 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
1 
Roteiro 
 Objetivo 
 O que é problema? 
 Lógica 
 Expressando algoritmos 
 Métodos para construção de algoritmos 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
2 
Objetivo 
 Identificar os conceitos básicos e a metodologia para a 
construção de algoritmos. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
3 
O que é problema? 
Conceito de Problema (Dicionário Michaelis): 
Questão matemática proposta para ser 
resolvida. 
Questão difícil, delicada, suscetível de diversas 
soluções. 
Qualquer coisa de difícil explicação; mistério, 
enigma. 
Dúvida, questão. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
4 
Problema 
Problemas fazem parte do nosso cotidiano. 
Exemplo de problemas cotidianos: 
 Trocar a resistência de um chuveiro. 
 Fazer um bolo. 
 Definir onde almoçar. 
 Calcular a média final 
Sempre que nos deparamos com um problema 
buscamos um procedimento para solucionar o 
mesmo. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
5 
Resolução de um problema 
Resolução de um problema (programa): 
 Compreender o problema 
 Descrever os passos 
 Codificar os passos 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
6 
Conceito de lógica 
O que orientou a obtenção dos procedimentos para as 
soluções vislumbradas? A lógica. 
O que é lógica? 
 A lógica é o ramo da Filosofia e da Matemática que estuda os 
métodos e princípios que permitem fazer distinção entre 
raciocínios válidos e não válidos, determinando o processo que 
leva ao conhecimento verdadeiro. 
O uso da lógica é primordial na solução de problemas. 
Com ela é possível alcançar objetivos com eficiência e 
eficácia. 
Ninguém ensina outra pessoa a pensar, mas a 
desenvolver e aperfeiçoar esta técnica, com persistência 
e constância 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
7 
Conceito de Algoritmo 
Algoritmo: 
 Sequência finita de passos (instruções) para resolver um 
determinado problema ou realizar um determinada tarefa. 
 Estas tarefas não podem ser redundantes nem subjetivas na 
sua definição, devem ser claras e precisas. 
 Exemplos: 
o Receitas (de comidas típicas, de bebidas) 
o Manual de instalação de equipamentos 
 
Qualquer tarefa que siga determinado padrão pode 
ser descrita por um algoritmo. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
8 
Premissas e tarefas 
 Para o desenvolvimento de um algoritmo eficiente, é 
necessário obedecermos algumas premissas básicas: 
 Definir ações simples e sem ambiguidade; 
 Organizar as ações de forma ordenada 
 Estabelecer as ações dentro de uma sequência finita de 
passos. 
 Algoritmos são capazes de realizar tarefas como: 
 1. Ler e escrever dados; 
 2. Avaliar expressões algébricas, relacionais e lógicas; 
 3. Tomar decisões com base nos resultados das expressões 
avaliadas; 
 4. Repetir um conjunto de ações de acordo com uma 
condição; 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
9 
Exemplo de Algoritmo 
Preparar uma caipirinha 
1º Algoritmo 
 Entrada de dados: 
o limão 
o açúcar 
o gelo 
o cachaça 
 
 Descrição: 
o Em um recipiente misture o limão, o açúcar , o gelo e a 
cachaça. 
o Servir em um copo com canudinho. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
10 
Exemplo de algoritmo 
 1º Algoritmo: Execução 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
11 
Exemplo de Algoritmo 
 2º Algoritmo - Caipirinha Cearense Tradicional 
 
 Entrada de dados: 
 01 limão 
 01 colher de sopa de açúcar refinado 
 01 recipiente com gelo picado 
 01 litro de cachaça Ypioca (o que sobrar você bebe depois) 
 faca, coqueteleira, socador, copo baixo, canudinhos. 
 
 Descrição: 
 Lave o limão e corte em fatias. 
 Coloque uma colher de açúcar no recipiente (copo ou coqueteleira). 
 Coloque o limão no recipiente e amasse juntamente com o açúcar com a 
ajuda de um socador. 
 Acrescente o gelo picado e complete com a cachaça. 
 Agite bem e coloque em um copo com um canudo, decorado com uma 
rodela de limão. 
 Nunca acrescente leite condensado à caipirinha. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
12 
Exemplo de Algoritmo 
 2º Algoritmo: Execução 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
13 
1 
2 
3 
4 5 
6 
7 
Exemplos de algoritmos 
Algoritmo: trocar uma lâmpada 
1. Pegar a lâmpada nova 
2. Pegar a escada 
3. Posicionar a escada embaixo da lâmpada queimada 
4. Subir na escada com a lâmpada nova 
5. Retirar a lâmpada queimada 
6. Colocar a lâmpada nova 
7. Descer da escada 
8. Ligar o interruptor 
9. Guardar a escada 
10. Jogar a lâmpada velha no lixo 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
14 
Exemplos de algoritmos 
 Algoritmo: Sacar dinheiro 
1. Ir até o caixa eletrônico 
2. Colocar o cartão 
3. Digitar a senha 
4. Solicitar o saldo 
5. Se o saldo for maior ou igual à quantia desejada, 
sacar a quantia desejada; caso contrário sacar o valor 
do saldo 
6. Retirar dinheiro e cartão 
7. Sair do caixa eletrônico 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
15 
Desenvolvimento de algoritmos 
 É importante ressaltar que qualquer tarefa que siga 
determinado padrão pode ser descrita por um algoritmo. 
 Entretanto ao montar um algoritmo, primeiro divide-se o 
problema apresentado em três fases fundamentais: 
 
Entrada Processamento Saída 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
16 
Desenvolvimento de algoritmos 
 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 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
17 
Representação dos algoritmos 
 No computador: um algoritmo será implementado em uma 
linguagem de computação gerando um programa, o qual visa 
instruir a máquina a executar determinadatarefa. 
 Computador não é dotado da capacidade de tomar decisões com 
base em premissas. 
 Portanto, não podemos instruir um computador com sentenças 
dúbias. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
18 
Representação dos algoritmos 
Algoritmo é uma sequência, que não permite 
ambiguidade, de passos finitos, passível de ser executada 
com um esforço finito em tempo finito e que acaba para 
qualquer entrada (inclusive erro). 
O algoritmo tem como papel fundamental ser o elo de 
ligação entre dois mundos (real e computacional). 
A atividade de programação tem início com a construção 
do algoritmo. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
19 
Representação dos algoritmos 
 Linguagem Narrativa 
 Linguagem Gráfica (fluxogramas) 
 Pseudo-linguagem 
 Linguagem de Programação (C, C++, Java, PHP...) 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
20 
Descrição Narrativa 
 Os algoritmos são descritos na linguagem natural como 
utilizada nos exemplos anteriores. 
 Qual a vantagem? 
 Não há a necessidade de aprender nenhum novo conceito. 
 Qual a desvantagem? 
 Em virtude da ambigüidade presente na linguagem natural a 
descrição narrativa é passível de mais de uma interpretação. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
21 
Descrição Narrativa 
 Exemplo de ambigüidade presente em uma sentença na 
linguagem natural é: 
“O policial escutou o barulho da porta.” 
 
 Esta frase pode ter pelo menos três interpretações: 
 1 - O policial escutou o barulho produzido pela porta. 
 2 - O policial estava junto à porta e escutou o barulho. 
 3 - O policial escutou o barulho que veio através da porta 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
22 
Métodos de Representação dos 
algoritmos 
 Algoritmo sob o enfoque computacional, como já foi 
mencionado, não podemos utilizar uma descrição narrativa 
para representar um algoritmo. 
 Sendo assim, veremos três métodos para representação de 
algoritmos: 
 Linguagem gráfica (fluxograma) 
 Pseudo-linguagem (português estruturado) 
 Linguagem de programação 
 Os métodos tem regras e disponibilizam um conjunto reduzido 
de palavras/símbolos passiveis de serem utilizados (rigidez 
sintática). 
 Objetivo: obter uma consistência semântica para a eliminação 
da ambiguidade intrínseca linguagem natural. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
23 
Fluxograma 
 Diagrama para representação gráfica de um processo. 
 Um conjunto de símbolos unidos por setas que indicam o fluxo do 
processo. 
 Vantagens: 
 Permite visão completa do fluxo do processo 
 Facilidade de entendimento e tradução para outras linguagens 
 Desvantagem: 
 Dependendo da complexidade do problema, pode se tornar 
muito extenso, dificultando o entendimento da representação. 
 Exemplos de símbolos: 
lave o 
limão 
mais 
uma? 
1 
início 
Ação: Decisão: Conectores: 
Início ou Fim: fim 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
24 
Fluxograma 
 Exemplo 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
25 
lave o 
limão 
1 
início 
não 
fim 
corte o limão 
em fatias 
coloque o açúcar 
no recipiente mais 
uma? 
1 
sim 
coloque o limão 
no recipiente 
2 
2 
amasse o limão 
e o açúcar 
coloque gelo picado 
no recipiente 
complete o recipiente 
com cachaça 
misture bem 
os ingredientes 
sirva em um 
copo com canudo 
3 
3 
enfeite o copo 
com limão 
Pseudo-linguagem 
Maneira intermediária entre a linguagem natural e uma 
linguagem de programação de representar um algoritmo. 
Utiliza um conjunto restrito de palavras-chave, em geral 
na língua nativa do programador, que tem equivalentes 
nas linguagens de programação. 
Não requer todo a rigidez sintática necessária numa 
linguagem de programação, permitindo que o aluno se 
detenha na lógica do algoritmos e não no formalismo da 
sua representação. 
Normalmente, são versões ultra reduzidas de linguagens 
de alto nível. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
26 
Pseudo-linguagem 
 Exemplo: 
 
leia (x, y) 
Se x > y então 
escreva (“x é maior”) 
senão 
se y > x então 
escreva (“y é maior”) 
senão 
escreva (“x e y são iguais!) 
fim-se 
fim-se 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
27 
Exercício 
 Calcular a média final dos alunos da cadeira de Algoritmos. Os 
alunos realizarão quatro provas: 1ª NP1, 2ª NP1, 1ª NP2 e 2ª 
NP2. 
 Quais são os dados de entrada? 
 Qual será o processamento a ser utilizado? 
 Quais serão os dados de saída? 
 Implemente o algoritmo para esse problema. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
28 
Linguagem de Programação C 
/* média de três números */ 
#include <stdio.h> 
#include <stdlib.h> 
 
int main(void) { 
 float a, b, c, m; 
 
 printf("digite três números: "); 
 scanf("%f %f %f", &a, &b, &c); 
 m = (a + b + c) / 3.0; 
 printf("média = %f\n", m); 
 return 0; 
} 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
29 
Linguagem de Programação C 
 Evolução 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
30 
Linguagem 
Natural 
Linguagem 
C++ / Java 
Linguagem 
C 
Linguagem 
Assembly 
Linguagem 
de Máquina 
... 
Linguagem Natural: 
 
 Calcule a raiz de 9. 
 
Linguagem de Máquina: 
 
 0100 0011 1100 1000 
 1111 0010 0011 1110 
 0100 0011 1000 0000 
 1100 1001 1110 1000 
 0100 0011 1100 1000 
 1111 0010 0011 1110 
 0100 0011 1000 0000 
 1100 1001 1110 1000 
 0100 0011 1100 1000 
 1111 0010 0011 1110 
 . . . 
Linguagem Assembly: 
 
0000: mov bx, [FFE6] 
0003: and bx, 1 
0006: cmp bx, 0 
0009: je 0000 
000C: mov ax, [FFE4] 
000F: nop 
0010: mov dx, ax 
0013: mov bl, al 
0015: cmp al 
0017: xor ax 
. . . 
Linguagem C/C++: 
 
#include <math.h> 
 int main(void) { 
 double x = 9.0; 
 printf(“%lf”, sqrt(x)); 
} 
Linguagem de Programação 
 São traduzidas em linguagem de máquina (compostas por 0s e 
1s) que podem ser processadas pelo computador 
 Livres de ambigüidades → única interpretação 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
31 
Linguagem de Alto Nível 
TRADUTOR 
Linguagem de Baixo Nível 
C, C++, Java, PHP,... 
Compilador 
Interpretador 
Linguagem de Máquina 
Resoluçãode um problema 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
32 
Entendimento 
do Problema 
Algoritmo 
de Solução 
Tradução do Algoritmo 
para uma Linguagem 
de Programação 
Ser Humano 
Tradução para a 
Linguagem de Máquina 
Execução 
do Programa 
Computador 
Dúvidas? 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
33

Outros materiais