1. O documento apresenta uma aula introdutória sobre algoritmos, definindo o que é um algoritmo e discutindo seus principais elementos.
2. São apresentados exemplos de algoritmos, como uma receita de bolo e os passos para fritar um ovo.
3. Existem diferentes tipos de representação de algoritmos, como descrição narrativa, fluxograma e pseudocódigo.
4. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
O que é um algoritmo?
Δ Sequência finita de instruções, ordenadas de forma lógica para a resolução
de uma determinada tarefa ou problema;
Δ Não necessariamente envolve aspectos computacionais. Ex.:
• Uma receita de bolo,
• Trocar um pneu de carro,
• Trocar uma lâmpada...;
Δ Um algoritmo também não representa, necessariamente, um programa
de computador e sim os passos necessários para realizar uma tarefa ou
solucionar um problema, seja de que área for.
5. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
O que é um algoritmo?
Δ Exemplo: Sequência para fritar um ovo:
1. Retirar o ovo da geladeira;
2. Colocar a frigideira no fogo;
3. Colocar óleo;
4. Esperar até o óleo ficar quente;
5. Quebrar o ovo separando a casca;
6. Colocar o conteúdo do ovo na frigideira;
7. Esperar um minuto;
8. Retirar o ovo da frigideira;
9. Apagar o fogo;
6. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
O que é um algoritmo?
Δ Tal sequência é um algoritmo? Vejamos...
• A sequência anterior possui instruções finitas e ordenadas?
o SIM. 9 instruções ordenadas;
o O início de uma instrução depende da conclusão de uma instrução anterior;
Δ O objetivo da sequência foi atingido?
• SIM. O ovo foi frito;
Δ Logo, a sequência anterior é um algoritmo!
7. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
O que é um Algoritmo?
Δ Todo algoritmo precisa possuir as seguintes características:
• Entrada: zero ou mais valores de entrada;
• Saída: pelo menos um valor é produzido;
• Clareza ou Definição: cada passo/instrução/etapa de um algoritmo
deve ser claro e não ambíguo;
• Efetividade: cada passo/instrução/etapa de um algoritmo deve ser
executável;
• Finitude: o algoritmo deve ter um conjunto finito de passos.
9. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
O que é um algoritmo?
Δ Uma possível solução:
1. Tirar o telefone do gancho;
2. Ouvir o sinal de linha;
3. Introduzir o cartão no orelhão;
4. Teclar o número desejado;
5. Conversar;
6. Desligar;
7. Tirar o cartão;
10. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
O que é um algoritmo?
Δ A solução anterior... mais robusta:
1. Tirar o telefone do gancho;
2. Ouvir o sinal de linha;
3. Introduzir o cartão no orelhão;
4. Teclar o número desejado;
5. Se chamar e alguém atender...
1. Conversar;
2. Desligar;
3. Retirar o cartão;
6. Senão...
1. Desligar;
2. Voltar para a instrução 1;
11. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Desafio
Δ Escreva um algoritmo que ajude o homem do barco a levar o lobo, a ovelha
e a caixa de verduras para o outro lado do lago. Utilize a descrição narrativa
para representar o algoritmo. Lembre-se:
• Lobos comem ovelhas e ovelhas comem as verduras quando o homem está na
outra margem!
• O Barco tem apenas dois lugares;
12. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Desafio
Δ Solução:
1. Pega a ovelha
2. Vai para a outra margem
3. Deixa a ovelha
4. Volta a margem inicial
5. Pega a caixa de verduras
6. Vai para a outra margem
7. Deixa a caixa de verduras e pega a ovelha
8. Volta a margem inicial
9. Deixa a ovelha e pega o lobo
10. Vai para a outra margem
11. Deixa o lobo
12. Volta a margem inicial
13. Pega a ovelha
14. Vai para a outra margem
15. Deixa a ovelha
13. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Por que criamos algoritmos?
Δ A linguagem natural não pode ser
interpretada por computadores;
Δ Computadores são projetados para
executar tarefas bem definidas a partir
de instruções;
Δ Para desenvolver software, utilizamos
linguagens de programação...
Δ A linguagem algorítmica é similar a
uma linguagem de programação;
Δ Logo, aprendendo a criar algoritmos,
estamos aptos a programar em
qualquer linguagem de programação;
14. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Por que programar?
Δ No fundo, programar é ensinar um computador a resolver problemas!
Δ Mesmo que você não seja um programador no futuro, programar ajuda a
despertar as seguintes habilidades:
• Ajuda a encontrar a solução para problemas;
• Ensina a persistir;
• Desperta para o mundo;
• Estimula a criatividade;
• Desperta a paixão em aprender;
• Ensina a trabalhar coletivamente;
16. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Descrição Narrativa
• Utiliza-se preferencialmente um verbo por frase;
• Formada por frases curtas e simples;
• É objetiva;
• Evita palavras com sentido dúbio;
17. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Descrição Narrativa – Exemplo:
• Dobro de um número (dobro = número x 2)
oDigitar um número;
oGravar em uma variável;
oMultiplicar o número digitado por 2;
oGravar o resultado em outra variável;
oMostrar o resultado da operação;
18. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Fluxograma
• Descrevem o fluxo de ação de um determinado trabalho lógico;
• Usa símbolos convencionais, permitindo poucas variações;
• Representados por símbolos geométricos;
19. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Fluxograma – Conjunto de Símbolos:
INÍCIO OU FIM DE
ALGORITMO
CÁLCULO OU
ATRIBUIÇÃO DE VALOR
ENTRADA DE
DADOS
SAÍDA DE DADOS
DECISÃO
FLUXO DE DADOS
21. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Exemplo: Faça um algoritmo que calcula e apresenta a multiplicação entre
dois números.
INÍCIO
Calcule a Multiplicação
M = N1 * N2
Leia Notas
N1, N2
Apresente Resultado:
M FIM
22. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Exercício: Faça um algoritmo (narrativa) que calcula a média de três notas
de um determinado aluno e informa se o aluno está aprovado ou
reprovado.
• O aluno estará aprovado se sua média for maior ou igual a 6;
Δ Solução:
• Lê as Notas N1, N2 e N3;
• Calcula a MÉDIA entre N1, N2 e N3;
• Se MÉDIA é maior que 6,
oO Aluno está aprovado;
• Senão,
oO Aluno está Reprovado;
23. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Exercício: Faça um algoritmo (fluxograma) que calcula a média de três notas
de um determinado aluno e informa se o aluno está aprovado ou
reprovado.
• O aluno estará aprovado se sua média for maior ou igual a 6;
INÍCIO
CALCULE A MÉDIA
MEDIA = (N1 + N2 + N3) / 3
LEIA NOTAS:
N1, N2, N3
APROVADO
FIM
MEDIA
>= 6
SIM NÃO
REPROVADO
24. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Português Estruturado (Portugol)
• Linguagem mais restrita que o português em linguagem natural;
• Simplificação extrema do português;
• Significados bem definidos para todos os termos utilizados nas instruções;
• Possui um conjunto de palavras e regras específicas (sintaxe da linguagem);
• Normalmente as implementações são feitas em papel, escritas a mão;
25. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Forma básica de um algoritmo em portugol:
• ALGORITMO
oDECLARE/DEFINA
• FIM_ALGORITMO
VARIÁVEIS
INSTRUÇÕES
TIPOS DE DADOS
28. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Tipos de algoritmos
Δ Exemplo: Faça um algoritmo que calcula e apresenta a multiplicação entre
dois números.
ALGORITMO
DECLARE N1, N2, M NUMÉRICO
ESCREVA “Digite dois números”
LEIA N1, N2
M <- N1 * N2
ESCREVA “MULTIPLICAÇÃO = ” , M
FIM_ALGORITMO
30. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
O computador não nos entende ...
Δ O computador não entende linguagem natural, pseudocódigo ou
fluxograma.
Δ Problema de comunicação !
Fala alguma coisa
!
011011011
32. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Computadores conversam ... ?
• Qual linguagem os computadores entendem ?
• Qual o problema com a linguagem de máquina ?
• Palavras são mais fáceis de lembrar do que sequencias de zeros e uns.
• Qual instrução é mais fácil de ler:
AL=1;
mov $1, AL
10110000
01100001
33. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Linguagens de baixo nível
movl $5, %eax
movl $1, %edx
.L4:
imull %eax, %edx
decl %eax
testl %eax, $0
jg .L4
Coloque 5 em eax
Coloque 1 em edx
Multiplique eax por edx e coloque o
resultado em edx
Subtraia 1 de eax
Teste se eax é 0
34. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Linguagens de Alto nível
Δ Utiliza uma linguagem cuja sintaxe é mais próxima da linguagem natural;
Δ Principais características:
• Alta legibilidade;
• Independente da arquitetura do computador (alta portabilidade);
• Fácil manipulação (uso de abstrações);
• Maior confiabilidade;
• Maior produtividade do programador;
• Usada por não-especialistas.
35. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Linguagens de Alto nível - C
#include<stdio.h>
int main()
{
int n1, n2, p3; //n1 = numero 1 n2 = numero 2 p3 = produto
printf("Sejam Bem Vindos!!n");
printf("Digite o primeiro Numeron");
scanf("%d",&n1);
printf("Digite o Segundo Numeron");
scanf("%d",&n2);
p3=n2*n1 ;
printf("O Resultado eh: %dn",p3);
}
36. I
n
t
r
o
d
u
ç
ã
o
a
A
l
g
o
r
i
t
m
o
s ALGORITMOS - 02/2015 – ÊNIO FILHO
Mas o computador não entende só zeros e uns ... ?
Δ Linguagem de alto nível permite uma maior produtividade ao programador
e uma maior legibilidade, confiabilidade e portabilidade aos programas
desenvolvidos.
Δ Linguagem de máquina é a linguagem que o computador entende e
consegue executar.
Δ Linguagem de montagem usa mnemônicos para facilitar um pouco o
trabalho do programador, mas apresentam os mesmos fundamentos da
linguagem de máquina.
TRADUÇÃO
38. DÚVIDAS?
Contatos:
E-mail: enio.filho@alfa.br
Skype: eniopvf
Twitter: eniopvf
Bibliografia:
• MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lógica para
desenvolvimento de programação de computadores. 18ª. ed. São Paulo: Érica, 2006. 236 p. ISBN
857194718;
• FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de programação: a construção
de algoritmos e estruturas de dados. 3ª. ed. São Paulo (SP): Pearson Prentice Hall, 2005. 195 p. ISBN
9788576050247;