Escolar Documentos
Profissional Documentos
Cultura Documentos
Exemplo Booleanos
> 2^3
8
> div 14 3 • True, False :: Bool
4
> 14 `div` 3 • &&, || :: Bool -> Bool -> Bool
4 • not :: Bool -> Bool
> mod 14 3
2
> 14 `mod` 3
2
Exemplo Exemplo
-- ou exclusivo -- Verifica se não houve vendas em
Xor :: Bool -> Bool -> Bool -- uma semana n
Xor x y = (x || y) && not (x && y) vendasNulas :: Int -> Bool
vendasNulas n = (vendas n == 0)
-- outra forma de ou exclusivo
eXor :: Bool -> Bool -> Bool
eXor True x = not x
eXor False x = x
1
Caracteres Exemplo
Strings Exemplo
2
Exercício
Dica
• Escreva uma função para retornar, em forma de tabela,
todas as vendas da semana 0 até a semana n, incluindo
imprimeTabela :: Int -> String
o total e a média de vendas no período. Usem as
funções definidas previamente e defina novas funções imprimeTabela n = cabecalho
que achar necessário. ++ imprimeSemanas n
Semana Venda ++ imprimeTotal n
vendas
0 12 ++ imprimeMedia n
totalVendas
1 14 maxVendas
2 15 vendasNulas
Total 41 addEspacos
Média 13.6667 paraDireita
3
Resolução bottom-up Exercícios
• Definir a função principal • Defina a função menorMaior que recebe
roots :: Float -> Float -> Float -> String três inteiros e retorna uma tupla com o
roots a b c
| b^2 == 4.0*a*c = show (oneRoot a b c)
menor e o maior deles, respectivamente.
| b^2 > 4.0*a*c = show f ++ “ ” ++ show s
| otherwise = “no roots” • Defina a função ordenaTripla que
where (f,s) = twoRoots a b c
ou recebe uma tripla de inteiros e ordena a
f = fst(twoRoots a b c) mesma.
s = snd(twoRoots a b c)
Exercícios Exercícios
• Uma linha pode ser representada da seguinte • Se uma reta é dada por y − y1 y2 − y1
=
forma: y (x2, y2)
defina uma função x − x1 x2 − x1
type Ponto = (Float, Float) •
type Reta = (Ponto, Ponto) •(x1, y1)
pontoY :: Float -> Reta -> Float
• Defina funções que x
que, dada uma coordenada x e uma reta,
– retornem a primeira e a segunda coordenada de um retorne a coordenada y, tal que o ponto (x, y)
ponto faça parte da reta.
– indique se uma reta é vertical ou não
– o que acontece caso a reta seja vertical?
x1 == x2