Professional Documents
Culture Documents
Programao
Entenda o problema
Construa uma estratgia de resoluo
Execute a estratgia
Revise
Aplicao do mtodo
Entenda o problema
Cdulas = 1,5,10,50,100
Construa uma estratgia de resoluo
Usar os operadores de diviso (div) e de resto (mod)
Execute a estratgia
ncedulas q = (div q 100) +
(div (mod q 100) 50) +
Revise
H uma outra forma de resolver o problema?
ncedulas q = (div q 100) +
(div (mod q 100) 50) +
(div (mod (mod q 100) 50) 10) +
(div (mod (mod (mod q 100) 50) 10) 5) +
(div (mod (mod (mod (mod q 100) 50) 10) 5) 1)
Aplicao do mtodo
Outra verso
nMinCedulas q = n100 + n50 + n10 + n5 + n1
where
n100= div q 100
r100 = mod q 100
n50 = div r100 50
r50 = mod r100 50
n10 = div r50 10
r10 = mod r50 10
n5 = div r10 5
r5 = mod r10 5
n1 = div r5 1
Dividir para
conquistar
Princpios para Resoluo de Problemas
Abstrao
Generalizao
Instanciao
Modularizao
Abstrao
a diviso em partes do
problema
Calcule a rea total da
figura.
Modularizao - Exemplo
a
e
b
d
Modularizao - Exemplo
Exerccio
1. Calcule a rea total da figura.
2. Faa uma funo que calcule
o IMC de uma pessoa e
imprima:
1. Para IMC menor ou igual a
18.5: Abaixo do peso
2. IMC menor ou igual a 25: Peso
ideal
3. IMC menor igual a 30: Acima do
Peso
4. Para valores maiores que 30:
Muito acima do peso!
3. Faa uma funo que retorne
o fatorial de um nmero
Resposta
areaTotal a b c d e = areaRetangulo a b
+ areaRetangulo (hipotenusa a d) e
+ areaAzul a c d
where
areaAzul a c d = areaRetangulo c d + areaTrianguloRetangulo d a
areaTrianguloRetangulo x y = (x * y)/2
areaRetangulo x y = x * y
a
e
b
c