Introduo Programao uma Abordagem Funcional Programao I Engenharia
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof. ª Claudia Boeres 2010/1
O ponto P (x, y) pertence à área cinza? P (x, y) ? C (x 1, y 1) a/2 a
Definições Condicionais Adequadas para representação de situações de tomada de decisão
Estrutura if-then-else Sintaxe: if <expressão lógica> then <expressão 1> else <expressão 2>
Exemplo Considere a função que determina o valor da passagem aérea de um adulto, para um determinado trecho, por exemplo, Vitória. Manaus, considerando a sua idade. Pessoas com idade a partir de 60 anos possuem um desconto de 40% do valor. Considere ainda que a passagem para o trecho considerado custe R$ 600, 00.
Exemplo Considere a função que associa com um determinado rendimento o Imposto de Renda a ser pago. Até um determinado valor, o contribuinte não paga imposto, e a partir de então o rendimento é dividido em faixas (intervalos), aos quais se aplicam diferentes taxas: Faixa alíquota Desconto 0 0 entre 10. 801 e 20. 000 10 1000 entre 20. 001 e 30. 000 20 1500 acima de 30. 000 25 1800 inferior ou igual a 10. 800
Árvore de Decisão
Árvore de decisão s <= 10800 s [10800, 20000] ir 1 s [20001, 30000] ir 2 ir 3 ir 4
Solução ir s = if s <= 10800 then ir 1 else if pert s 10800 20000 then ir 2 else if pert s 20001 30000 then ir 3 else ir 4 where ir 1 = 0 ir 2 = s * 0. 1 - 1000 ir 3 = s * 0. 2 - 1500 ir 4 = s * 0. 25 - 1800 pert x a b = x>=a && x<=b
Exercício Dados três números, determine o maior deles. Faça a árvore de decisão Descreva a solução em haskell usando expressões condicionais
Guarded commands Permite que uma mesma função seja descrita por várias definições, cada uma delas protegida por uma expressão lógica; Sintaxe: <nome da função> <parâmetros> | | | <proteção. . <proteção otherwise 1> = <definição 1> 2> = <definição 2> 3> = <definição 3> n> = <definição n + 1>
Exemplo ir 1 s | s<=10800 = ir 1 | pert s 10800 20000 = ir 2 | pert s 20001 30000 = ir 3 | otherwise = ir 4 where ir 1 = 0 ir 2 = s * 0. 1 - 1000 ir 3 = s * 0. 2 - 1500 ir 4 = s * 0. 25 - 1800 pert x a b = x >= a && x <= b
O ponto P (x, y) pertence a qual das áreas 1, 2, 3 e 4? 4 P (x, y) ? 1 C (x 1, y 1) a/2 2 3 a
- Slides: 13