You are on page 1of 20

Introduo

Programao

Uma Abordagem Funcional


A arte de
resolver
problemas
A arte de resolver problemas

Programar buscar solucionar problemas


Na busca pela soluo de um problema, nossa
ferramenta principal o questionamento;
Aprenda desde cedo a buscar um aprimoramento da
sua tcnica para resolver problemas;
Crie uma sistematizao.
Mtodo Polya

Mtodo para resoluo de problemas matemticos.


Dividido em quatro etapas:
Entenda o problema
Construa uma estratgia de resoluo
Execute a estratgia
Revise
Roteiro para resolver problemas

Entenda o problema: Estratgia


Qual a incgnita? Existem conexes entre
os dados e as incgnitas?
Quais so os dados?
Consegue enunciar o
Quais so as condies? problema de outra
maneira?

Execute a estratgia Revise


Ao executar a estratgia, Examine a soluo
verifique cada passo. Verifique o resultado e o
Voc consegue mostrar argumento
que cada passo est Voc pode obter a soluo
correto? de um outro modo?
Exemplo

Deseja-se escrever um programa que permita


determinar a menor quantidade de cdulas (1,5, 10,
50, 100) necessrias para pagar uma dada quantia em
Reais.
Aplicao do mtodo

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

Escreva a expresso que determina a hipotenusa de


um tringulo de lados 4 e 10.
sqrt( (10 * 10) + (4 * 4))
10.770329614269007

Abstraindo a formula, chegamos ao conceito de


hipotenusa.
hipotenusa = sqrt( (10 * 10) + (4 * 4))
Generalizao

Porque escrever uma definio de hipotenusa que


retorna sempre o mesmo valor, ao invs de generaliz-
la?

hipotenusa x y = sqrt( (x * x) + (y * y))


Instanciao

Uma vez definida a funo genrica para clculo da


hipotenusa, podemos instanci-la para diferente
valores de catetos:
hipotenusa 10 4
10.77
hipotenusa 35 18
39.35
hipotenusa 9 12
15.0
Modularizao

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

You might also like