A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Haskell Programação Funcional Diego Lima Rubem Moreira.

Apresentações semelhantes


Apresentação em tema: "Haskell Programação Funcional Diego Lima Rubem Moreira."— Transcrição da apresentação:

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.


Carregar ppt "Haskell Programação Funcional Diego Lima Rubem Moreira."

Apresentações semelhantes


Anúncios Google