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 (x1, y1) 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óriaManaus, 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] ir1 s [20001, 30000] ir2 ir3 ir4 Solução ir s = if s <= 10800 then ir1 else if pert s 10800 20000 then ir2 else if pert s 20001 30000 then ir3 else ir4 where ir1 = 0 ir2 = s * 0.1 - 1000 ir3 = s * 0.2 - 1500 ir4 = 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 <proteção . . <proteção otherwise 1> = <definição 1> 2> = <definição 2> 3> = <definição 3> n> = <definição n> = <definição n + 1> Exemplo ir1 s | s<=10800 = ir1 | pert s 10800 20000 = ir2 | pert s 20001 30000 = ir3 | otherwise = ir4 where ir1 = 0 ir2 = s * 0.1 - 1000 ir3 = s * 0.2 - 1500 ir4 = 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) ? C (x1, y1) 1 a/2 2 3 a