Haskell Programação Funcional Diego Lima Rubem Moreira.

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação: uma Abordagem Funcional
Advertisements

Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekoken 2010/1.

Programação Funcional
O Maple na Aula de Matemática
Departamento de Informática Universidade Federal do Espírito Santo
Programação para Engenharia I
Introdução a Programação Renata Freire
Construção de Algoritmos 1
Rafael Pinto Frederico Corrêa
Tópicos Preliminares na Linguagem C
Universidade Federal do Espírito Santo Programação II Expressões(operadores) Comandos Básicos Professora: Norminda Luiza.
Linguagem C.
Laboratório de Programação de Computadores I
Linguagem C Estruturas de Sequências
Unidades de Armazenamento
Funções Pré-definidas
7 - Funções pré-definidas
Linguagem Haskell Riocemar S. de Santana.
CAPÍTULO 05 Listas.
Números Complexos Definição: Um número complexo z pode ser definido como um par ordenado (x, y) de números reais x e y, z = (x, y) (1) sujeito.
Introdução a Computação e Cálculo Numérico
Aula 1 – Básico. Prof. Naércio Filho Técnico em Informática
O QUE FOI ESTUDADO NESTA AULA:
Linguagens imperativas: Aula prática
Haskell.
Fábio de Oliveira Borges
Matlab Mini Curso PET 2012.
Monitoria de Sistemas Inteligentes
Haskell Programação Funcional
Expressões e Instrução de Atribuição
Centro de Informática – UFPE
Operadores e Atribuições Capítulo 3
Linguagem de Programação JAVA
Programação em C++ Compiladores
Lógica Estruturada Aplicada
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Algumas notas sobre a linguagem de programação C
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
Paradigma Estruturado
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
Funções Matemáticas e de String
Acabias Marques Luiz. I - Introdução ao Ruby Parte 1 – Introdução a linguagem  O que é Ruby  Instalação  O IRB  Operadores Aritméticos  Tipos de.
Java Básico Instrutor: Davi Pires
Programação Funcional
Introdução à Linguagem JavaScript
Aula 5 - Exercícios Prof. Leandro M. Almeida.
CONJUNTO DOS NÚMEROS INTEIROS
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Monitoria de Sistemas Inteligentes IF684
MATLAB - Matrix Laboratory Adaptado de Profa
Fundamentos da Linguagem C#
Introdução à Programação Aula Prática 2 Operadores e Comandos Condicionais Monitoria
Linguagens Funcionais: Haskell Prática 1 Paradigmas de Linguagens Computacionais Monitor: Guilherme Moura
Computação Eletrônica Variáveis Reais e Booleanas.
Fundamentos de linguagens de programação
Departamento de Informática Universidade Federal do Espírito Santo
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Haskell Programação Funcional Diego Lima Rubem Moreira.
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
JAVASCRIPT Programação Web. O que é  E uma linguagem interpretada que e executada na maquina do cliente  Não esta associada ao framework java  Não.
Tipos de Dados, Variáveis, Expressões Lógicas e Aritméticas
Haskell (é uma função polimorfica) Laboratório Rafael Borges
VARIÁVEIS Desenvolvido pelo Mestrando Rodrigo Moreira Barreto – VHLab (Virtual Humans Simulation Laboratory – PUCRS) 1 Desenvolvido por: Rodrigo Moreira.
©André Santos, Programação Funcional André Santos.
Prof. Tertuliano Operadores Variáveis em C++.
Variáveis, expressões e comandos Dilvan Moreira. Lembrando …  Instalação normal (para utilizar no PC com Windows) 
Programação Funcional
Transcrição da apresentação:

Haskell Programação Funcional Diego Lima Rubem Moreira

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

Haskell Pure Function Programming Open source 20 anos de estudo Código robusto, conciso e correto Integração com outras linguagens Bibliotecas Comunidade ativa

Ambiente Interpretador HUGS – tm Compilador GHC –

Hugs Iniciar HUGS

Hugs - comandos :quit - Sai do Hugs :? - Exibe a ajuda do Hugs :load - Carrega um arquivo para o Hugs :reload - Recarrega o último arquivo carregado

Hugs - Expressoes > > 5 – (6 * (4 / 2)) >“opa” >True >5 > 7

TIPOS

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

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

Tipos - Int OBS: Funções podem ser escritas como operadores e vice-versa Ex: – >(+) 2 3 – > 4 `div` 2

Tipos - Int OBS: É possível definir os próprios operadores Mais na frente...

Tipos – Int Operações Booleanas > >= == Igual /= <= <

Tipos – Booleanos (Bool) True e False... Operadores && || not

Tipos – Char Tabela ASCII ‘a’ ‘7’ ‘a’< ‘b’ ‘\65’

Tipos – String Lista de CHAR >”OPA!” >”Mais ” ++ “q” ++ “ BLZ”

Tipos – Ponto Flutuante(Float) >2.34 >5.44e5 >6.2e-8

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)

Tipos – Float sqrt – Raiz quadrada fromInt – Converte um Int para um Float pi – Constante Pi

Tipos – Tuplas Construtor Polimórfico >(1,2) >(12.43, “opa”) >(12, 3.45, ‘a’, “varios”, True)

Tipos – Tuplas >fst (1,2) >snd (1,2)

Tipos – Listas [] Construtor Polimórfico > [1,2,3,4,5] ::[Int] >[“a”, “asdsa”, “blz”] ::[[Char]] >[True, True, False] ::Bool

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]

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]

Tipos – Listas [] Operadores (:) Operador de construção de lista – 1:2:3:4:[] (++) Concatenação de listas – [1,2] ++ [3,4] ++ [5,6]

FUNÇÕES

Load de Arquivo :load :reload – (reload do ultimo arquivo)

Notação {- mais comentario blablablbal -} -- Comentario quadrado :: Int -> Int quadrado x = x * x

Notação myNot :: Bool -> Bool myNot x | x == True = False | otherwise = True myNot :: Bool -> Bool myNot True = False myNot False = True

Definindo Operadores Operador XOR :: Bool -> Bool -> Bool a b | a == b = False | otherwise = True

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

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

Exercicios Fatorial :: Int -> Int – Fatorial de um inteiro...proxima aula: Recursão e mais notações de funções.