2. Instituto de Computação – UFAL
Processador do algoritmo
O agente que executa um algoritmo é chamado
processador
O processador precisa entender as instruções
contidas no algoritmo
Exemplo:
Elaborar um algoritmo para extrair o algarismo da
casa das unidades de um inteiro dado
Se o processador for um ser humano que saiba o que é
número inteiro, algarismo e casa das unidades, o algoritmo
teria uma única instrução:
“Forneca o algarismo das unidades do inteiro dado”
rodrigo@ic.ufal.br
3. Instituto de Computação – UFAL
Processador do algoritmo
E se o processador e uma maquina e não sabe
o que é algarismo, casa das unidades, "mais a
direita“, etc.?
Quem esta elaborando o algoritmo deveria
conhecer que instruções o processador e capaz
de executar para poder escrever o seu algoritmo
rodrigo@ic.ufal.br
4. Instituto de Computação – UFAL
Exemplo
O processador é capaz de
Determinar o resto de uma divisão inteira
Queremos
O algarismo da casa das unidades
Solução:
Chame de n o inteiro dado;
Calcule o resto da divisão de n por 10;
Forneça este resto como o algarismo pedido.
rodrigo@ic.ufal.br
5. Instituto de Computação – UFAL
Exemplo, um pouco mais formal
inicio
var n, resto : inteiro
leia n
resto = n % 10
imprima resto
fim
rodrigo@ic.ufal.br
6. Instituto de Computação – UFAL
Linguagem coloquial
Em muitos casos utilizamos uma linguagem
coloquial para expressar algoritmos
Nem sempre é adequado
Ambiguidades
Crianças que bebem leite materno freqüentemente são mais
sadias;
As crianças são mais sadias porque recebem leite
freqüentemente ou são freqüentemente mais sadias
porque recebem leite?
Gabriela deve pegar o estojo vazio da aliança de diamantes
que estava sobre a cama
O que estava sobre a cama: o estojo vazio ou a aliança
de diamantes?
rodrigo@ic.ufal.br
7. Instituto de Computação – UFAL
Linguagem coloquial
Dificuldade em expressar certas instruções
Exemplo
Algoritmo para calcular raízes de uma equação do segundo
grau
“Subtraia do quadrado do segundo coeficiente o produto do
numero quatro pelo produto dos dois outros coeficientes.”
rodrigo@ic.ufal.br
8. Instituto de Computação – UFAL
Equações :: uma linguagem um pouco mais
adequada
1. Chame de a, b e c os coeficientes da equação.
2. Calcule d = b2 - 4ac.
3. Se d < 0 forneça como resposta a mensagem:
A equação não possui raízes reais.
4. Se d ≥ 0
1. Calcule x1 = (-b + raiz(d))/2a e x2 = (-b - raiz(d))/2a.
2. Forneça x1 e x2 como raízes da equação.
rodrigo@ic.ufal.br
9. Instituto de Computação – UFAL
Exemplos
Suposições
O nosso processador de algoritmos é capaz de:
Somar
Subtrair
Dividir
Multiplicar
Comparar
Executar condicionalmente uma instrução
Repetir instruções
Número fixo
Condicionalmente
Representar por seqüências de caracteres (chamadas variáveis)
valores numéricos (que passam a ser chamados valores da variável)
Atribuir um valor a uma variável
Substituir o valor de uma variável por um outro valor
Emitir mensagens
rodrigo@ic.ufal.br
10. Instituto de Computação – UFAL
Exemplos de algoritmos matemáticos
Nosso processador não é capaz de calcular o
resto e nem o quociente de uma divisão inteira
Objetivo:
Algoritmo para a determinação do quociente e do
resto da divisão de dois inteiros positivos dados
Exemplo
30 / 7
Quociente: 4
Resto: 2
rodrigo@ic.ufal.br
11. Instituto de Computação – UFAL
Como resolver?
Qual a entrada?
Qual a saída esperada?
Quais os passos para “dada a entrada” chegar
na “saída esperada” ?
Resolva primeiro na sua “cabeça”
Use papel e caneta para entender e desenvolver a
solução
Só depois faça o algoritmo
rodrigo@ic.ufal.br
12. Instituto de Computação – UFAL
Algoritmo
inicio
// declaração de variáveis
var dividendo, divisor, i : inteiro
var quociente, resto : inteiro
// entrada de dados
leia dividendo, divisor
i = 1
repita enquanto ((i * divisor) <= dividendo )
i = i+1
fim_enquanto
quociente = i - 1
resto = dividendo - quociente*divisor
// saída
imprima "O resto é "+resto+" e o quociente é "+quociente
fim
rodrigo@ic.ufal.br
13. Instituto de Computação – UFAL
Execução do algoritmo
rodrigo@ic.ufal.br
Dividendo Divisor
Quociente
* i
i Quociente Resto
14. Instituto de Computação – UFAL
Exemplo 2
Determinar o menor divisor maior que 1 de um
inteiro dado
Exemplos:
10, resposta: 2
13, resposta: 13
15, resposta: 3
Considere que dessa vez o processador do
algoritmo sabe executar o resto:
10 % 3 == 1
2 % 5 == 2
10 % 4 == 2
rodrigo@ic.ufal.br
15. Instituto de Computação – UFAL
Algoritmo
inicio
numero, divisor : inteiro
leia numero
divisor = 2
repita enquanto ( (numero%divisor) !=0 )
divisor = divisor + 1
fim_enquanto
imprima "A resposta é "+divisor
fim
rodrigo@ic.ufal.br
Note que agora
já sabemos
calcular o resto
16. Instituto de Computação – UFAL
Exemplo 3
Calcular o Máximo Divisor Comum (mdc) de
dois números dados
Exemplo:
mdc(15, 20) = 5
mdc(8,32) = 8
mdc(56, 64)=8
rodrigo@ic.ufal.br
17. Instituto de Computação – UFAL
Solução
Algoritmo de Euclides
mdc (120, 84)
rodrigo@ic.ufal.br
120 84
1
36
2
12
3
0
18. Instituto de Computação – UFAL
Desafio
Você já conseguiria escrever esse algoritmo?
Tente !
Lembre-se
Qual a entrada?
Qual a saída esperada?
Como fazer para:
rodrigo@ic.ufal.br
Entrada SaídaAlgoritmo
19. Instituto de Computação – UFAL
Exercícios
1. Faça um algoritmo que leia 2 valores e mostre as
quatro operações matemáticas básicas entre estes
2 números.
2. Faça um algoritmo que calcule a área de um
triângulo. São dadas a base e a altura do triângulo.
3. Faça um algoritmo que através de quatro notas
calcule as médias aritmética, harmônica e
geométrica.
4. Faça um algoritmo que imprima como resposta o
sucessor e o antecessor de um número dado.
rodrigo@ic.ufal.br