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
Download

else