Linguagens Funcionais: Haskell Prática 1 Paradigmas de Linguagens Computacionais Monitor: Guilherme Moura

Slides:



Advertisements
Apresentações semelhantes
Aquiles Burlamaqui AULA 09
Advertisements

TIPOS ABSTRATOS DE DADOS
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.
Avaliador de Expressões
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Perspectivas baseadas em procedimentos e orientadas por objectos Conceitos principais: Encapsulamento, Herança, Polimorfismo (Encapsulation, Hierarchy,
Shell Script Professor: João Paulo
Programação para Engenharia I
Rafael Pinto Frederico Corrêa
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Linguagem C.
Linguagem C Estruturas de Seleção.
O Portal do Estudante de Computação
Linguagem Haskell Riocemar S. de Santana.
CAPÍTULO 05 Listas.
Rodrigo Cristiano Silva
Introdução a Computação e Cálculo Numérico
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Análise léxica e sintática
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa.
Exercício 1 Faça um programa que receba como entrada o nome e o salário de um funcionário de uma empresa e que calcule o novo valor do salário do.
Haskell.
Listas: Haskell x Prolog
Programação Funcional
Programação Funcional
Interpretador Python.
©André Santos, Programação Funcional Generalizações André Santos.
Estudo dos Conceitos e Paradigmas de Programação
©André Santos, Programação Funcional Classes em Haskell André Santos.
Expressões e Instrução de Atribuição
Paradigma Funcional Apresentação de LF1.
Centro de Informática – UFPE
Augusto Sampaio e Paulo Borba Centro de Informática
Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero
Programação em C++ Compiladores
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Haskell :: Funções como valores George Darmiton da Cunha Cavalcanti Monitores: Bruno Barros cin.ufpe.br) Glerter Sabiá (gas2.
Conversão de Tipos Exemplo: x + i, onde x é do tipo real e i é do tipo integer. A especificação da linguagem deve indicar se a linguagem suporta este tipo.
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Programação Funcional
Redução.
Gerador de Tabela-Verdade
Programação Funcional > FUNÇÕES COMO VALORES Monitor: Guilherme Moura Paradigmas de Linguagens Computacionais.
Funções como Valor ©André Santos e Marcelo d’Amorim.
Haskell Programação Funcional Diego Lima Rubem Moreira.
Prof.: Francisco Heron Equipe: Israel Cavalcanti | Ricardo Ulisses | Marcos de Souza FFI - Foreign Function Interface Introdução Estrutura Léxica Declarações.
Introdução à Programação
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Algoritmo e Estrutura de Dados I Aulas 12 – Linguagem C Strings Márcia Marra
Programação Funcional 4a. Seção de Slides Tuplas e Definição de Funções Locais em Haskell.
Estruturas Homogêneas – Vetores e Matrizes
Profa. Maria Augusta Constante Puget
Tipos de Dados, Variáveis, Expressões Lógicas e Aritméticas
Aula Prática 6 Vetores e Matrizes Monitoria
Haskell (é uma função polimorfica) Laboratório Rafael Borges
Linguagem de Programação
Sistemas para Internet Algoritmos e Lógica de Programação
©André Santos, Programação Funcional André Santos.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Variáveis, expressões e comandos Dilvan Moreira. Lembrando …  Instalação normal (para utilizar no PC com Windows) 
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Transcrição da apresentação:

Linguagens Funcionais: Haskell Prática 1 Paradigmas de Linguagens Computacionais Monitor: Guilherme Moura

Hugs Interpretador de Haskell 98 Suporta todos os recursos da linguagem (exceção: módulos) Para iniciá-lo, execute winhugs em P:\Hugs98-Nov2002 ou hugs no terminal Hugs é gratuito. Você pode obtê-lo em

Hugs: Comandos :quit Sai do Hugs :? Exibe a ajuda do Hugs

Hugs: Expressões O Hugs pode computar o valor de expressões Haskell. Basta apenas digitá-las no console. > > head [3,2,1] 3 > tail [3,2,1] [2,1]

Exercício 1: Expressões Calcule o valor das seguintes expressões (no Hugs): > sum [1,2,3,4] > product [1,2,3,4] > “abc” ++ “def” > fst (2,3)

Hugs: Tipos Toda expressão de Haskell tem um tipo associado e o Hugs permite descobri-lo através do comando :type > :t :: Num a => a > :t head [3,2,1] head [3,2,1] :: Num a => a > :t tail tail :: [a] -> [a]

Exercício 2: Tipos Encontre expressões cujos tipos são: Char [Char] (Int, Int) (Bool, [Char]) [(Bool, Char)]

Exercício 3: Tipos Encontre o tipo das seguintes expressões: head sum fst elem flip flip elem

Hugs: Arquivos :load Carrega o arquivo no Hugs :reload Recarrega o último arquivo :cd Modifica a pasta de trabalho

Exercício 4: Arquivos Carregue o arquivo exercicio.hs e calcule as seguintes expressões: square 2 allEqual allEqual allEqual (square 2) (square –2) 4 maxi (square 2) 3

Exercício 5: Arquivos Modifique o arquivo exercicio.hs, incluindo as seguintes funções: fat :: Int -> Int Calcula n! all4Equal :: Int -> Int -> Int -> Int -> Bool Compara se quatro números são iguais all4Equal :: Int -> Int -> Int -> Int -> Bool Mesmo que anterior, mas usando a definição de allEqual

Exercício 6: Sales Modifique o arquivo sales.hs, incluindo as seguintes funções: maxSales :: Int -> Int Dada uma semana n, retorna a semana com maior número de vendas entre 0 e n totalSales :: Int -> Int Dada uma semana n, retorna a soma das vendas entre as semanas 0 e n

Exercício 7: Sales Modifique o arquivo sales.hs, incluindo as seguintes funções: howManyWeeks Dado um valor de vendas e uma semana n, determina quantas semanas entre 0 e n tiveram essa vendagem (defina também seu tipo) averageSales :: Int -> Float Dada uma semana n, calcula a média de vendas entre 0 e n

Exercício 8: Strings Defina as seguintes funções: makeSpaces :: Int -> String Produz uma String com n espaços vazios pushRight :: Int -> String -> String Adicionar n espaços a uma String (deve usar makeSpaces)

Exercício 9: Tipos Defina os tipos Point e Triangle (a partir de Point) e as funções distance (calcula a distância entre dois pontos), midPoint (calcula o ponto médio entre dois pontos) e perimeter (calcula o perímetro do triângulo)

Créditos Primeira versão desenvolvida por Rafael Borges