Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouCarolina Damaso Alterado mais de 9 anos atrás
1
Haskell Programação Funcional Diego Lima Rubem Moreira
2
Objetivos da programação funcional Programação com um alto nível de abstração, possibilitando: – alta produtividade – programas mais concisos – programas mais fáceis de entender – menos erros – provas de propriedades sobre programas
3
Haskell Pure Function Programming Open source 20 anos de estudo Código robusto, conciso e correto Integração com outras linguagens Bibliotecas Comunidade ativa
4
Ambiente Interpretador HUGS – http://cvs.haskell.org/Hugs/pages/downloading.h tm Compilador GHC – http://www.haskell.org/ghc/download.html
5
Hugs Iniciar HUGS
6
Hugs - comandos :quit - Sai do Hugs :? - Exibe a ajuda do Hugs :load - Carrega um arquivo para o Hugs :reload - Recarrega o último arquivo carregado
7
Hugs - Expressoes > 2 + 3 > 5 – (6 * (4 / 2)) >“opa” >True >5 > 7
8
TIPOS
9
Tipos – Inteiros (Int) Operadores +, * – Soma e multiplicação de inteiros ^ – Potência: 2^4 é 16 - – Serve para mudar o sinal de um inteiro ou para fazer a subtração
10
Tipos - Int Funções div – Divisão de números inteiros; div 10 3 é 3 mod – O resto de uma divisão de inteiros; mod 10 3 é 1 abs – Valor absoluto de um inteiro negate – Muda o sinal de um inteiro
11
Tipos - Int OBS: Funções podem ser escritas como operadores e vice-versa Ex: – >(+) 2 3 – > 4 `div` 2
12
Tipos - Int OBS: É possível definir os próprios operadores Mais na frente...
13
Tipos – Int Operações Booleanas > >= == Igual /= <= <
14
Tipos – Booleanos (Bool) True e False... Operadores && || not
15
Tipos – Char Tabela ASCII ‘a’ ‘7’ ‘a’< ‘b’ ‘\65’
16
Tipos – String Lista de CHAR >”OPA!” >”Mais ” ++ “q” ++ “ BLZ”
17
Tipos – Ponto Flutuante(Float) >2.34 >5.44e5 >6.2e-8
18
Tipos – Float Mesmos operadores de Inteiros mais alguns: / – Divisão ** – Exponenciação, x ** x = xy Cos, sin, tan – Coseno, seno e tangente log – Logaritmo na base e (Ex >log 2) logBase – Logaritmo em qualquer base (Ex: logBase 10 2)
19
Tipos – Float sqrt – Raiz quadrada fromInt – Converte um Int para um Float pi – Constante Pi
20
Tipos – Tuplas Construtor Polimórfico >(1,2) >(12.43, “opa”) >(12, 3.45, ‘a’, “varios”, True)
21
Tipos – Tuplas >fst (1,2) >snd (1,2)
22
Tipos – Listas [] Construtor Polimórfico > [1,2,3,4,5] ::[Int] >[“a”, “asdsa”, “blz”] ::[[Char]] >[True, True, False] ::Bool
23
Tipos – Listas [] >[[1,2,3], [5,4]] ::[[Int]] >[(3,”ha”), (4,”sim”)] ::[(Int, [Char])] >[] OBS: Ordem e ocorrência importam – [1,2,1] /= [2,1,1] /= [1,2]
24
Tipos – Listas [] Notação [a.. b] é a lista [a, a+1,..., b] – [1..5] – [5..(-15)] [a,b.. c] é a lista de a até c passo b – a – [2,4..20] – [3, (5+4)/3.. 20]
25
Tipos – Listas [] Operadores (:) Operador de construção de lista – 1:2:3:4:[] (++) Concatenação de listas – [1,2] ++ [3,4] ++ [5,6]
26
FUNÇÕES
27
Load de Arquivo :load :reload – (reload do ultimo arquivo)
28
Notação {- mais comentario blablablbal -} -- Comentario quadrado :: Int -> Int quadrado x = x * x
29
Notação myNot :: Bool -> Bool myNot x | x == True = False | otherwise = True myNot :: Bool -> Bool myNot True = False myNot False = True
30
Definindo Operadores Operador XOR (@@) :: Bool -> Bool -> Bool a @@ b | a == b = False | otherwise = True
31
Exercicios menorDois :: Int -> Int -> Int – Recebe dois valores e retorna o menor menorTres :: Int -> Int -> Int -> Int – Recebe três valores e retorna o menor usando a função menorDois Area :: Float -> Float – Recebe um float representando o raio de uma circunferência e retorna a área
32
Exercicios (&&&) :: String -> String -> String – Definir operador que concatena duas strings se elas forem diferentes. Se iguais retorna uma das duas xorTres :: (Bool, Bool, Bool) -> Bool – Funcao que retorna o resultado da operação xor sobre 3 booleanos
33
Exercicios Fatorial :: Int -> Int – Fatorial de um inteiro...proxima aula: Recursão e mais notações de funções.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.