Departamento de Informática Universidade Federal do Espírito Santo

Slides:



Advertisements
Apresentações semelhantes
Departamento de Informática Universidade Federal do Espírito Santo
Advertisements

Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekoken 2010/1.
Departamento de Informática Universidade Federal do Espírito Santo
Programação de Computadores
Amintas engenharia.
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
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.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Software Básico Silvio Fernandes
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Algoritmos e Programação Linguagens de Programação Teoria Aula 5 (05/05) Universidade Federal do Vale do São.
EXPRESSÕES ARITMÉTICAS
Lógica de Programação Módulo II
Rafael Pinto Frederico Corrêa
Funções em C Universidade do Estado de Santa Catarina
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo Programação II Expressões(operadores) Comandos Básicos Professora: Norminda Luiza.
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
4. Operadores e Aritmética. Introdução à Programação Prolog2 Operadores Na matemática costuma-se escrever expressões como 2*a + b*c onde + e * são operadores.
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
PROGRAMAÇÃO ou LINGUAGEM C?
PROGRAMAÇÃO ou LINGUAGEM C?
7 - Funções pré-definidas
Árvore Binária de Busca
Aula 03 Revisão de Expressões Comando de Seleção
Linguagem Haskell Riocemar S. de Santana.
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
JAVA: Conceitos Iniciais
Introdução a Computação e Cálculo Numérico
Introdução a Computação e Cálculo Numérico
Linguagens imperativas: Aula prática
BCC /01 Funções. Material Didático Unificado. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência.
Funções Universidade Federal de Ouro Preto - UFOP
Material Didático Unificado.
Programação Funcional
Programação Funcional
Fábio de Oliveira Borges
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Linguagem de programação
Estudo dos Conceitos e Paradigmas de Programação
Expressões e Instrução de Atribuição
Lógica de Programação/ Algoritmos Engenharia Produção 2014
Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Elaborando um Programa Prof.: Gláucya Carreiro Boechat Universidade.
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Campus de Caraguatatuba
Algumas notas sobre a linguagem de programação C
Expressões: operadores aritméticos
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
Linguagens de Programação
Programação Funcional
Introdução à Linguagem JavaScript
Linguagens Funcionais: Haskell Prática 1 Paradigmas de Linguagens Computacionais Monitor: Guilherme Moura
Haskell Programação Funcional Diego Lima Rubem Moreira.
Computação Eletrônica Variáveis Reais e Booleanas.
Algoritmos.
Haskell (é uma função polimorfica) Laboratório Rafael Borges
Programação II Arquivos Autoria: Ernani Santos Modificação: Clebson Oliveira Adaptação: Claudia Boeres.
Transcrição da apresentação:

Departamento de Informática Universidade Federal do Espírito Santo Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres boeres@inf.ufes.br CT VII - Sala 32 Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license. Co-Autoria: Veruska Zamborlini e Clebson Oliveira 1

A linguagem de programação Haskell linguagem Haskell: oferece uma sintaxe simples e elegante; puramente funcional; lazy evaluation; tipada; Inferência de tipos 2

A linguagem Haskell Linha do tempo: Página da linguagem: http://www.haskell.org

O interpretador Hugs uma implementação da linguagem de programação funcional Haskell; provê um avaliador de expressões descritas por funções o avaliador funciona por meio de um interpretador, que interpreta as expressões para o computador

Avaliador do ambiente HUGS 5

Ambiente HUGS avaliador: pode ser usado como uma calculadora: ? 3 + 5 * 2 13 ? (3 + 5) * 2 16 ? primitivas: funções já existentes em bibliotecas do HUGS 6

Operações e primitivas... Operador Denominação Número de argumentos notação exemplo + soma binário infixada/ pré-fixada 2 + 3 (+) 2 3 - Subtração/ simetria binário/ unário 5 – 2 (-) 5 2 - 3 * multiplicação 7 * 3 (*) 7 3 / divisão 5 / 2 (/) 5 2 ^ potência 2 ^ 2 (^) 2 2 div divisão inteira div 5 2 mod resto da divisão inteira mod 5 2 7

Precedência Precedence Left associative operators Non-associative operators Right associative operators 9 div,mod 8 ^ , ^^, ⋆⋆ 7 ⋆, /, 6 +, - 5 4 ==, /=, <, <=, >, >= 3 && 2 || 1 >>, >>=

Exemplo exemplo1.hs Hugs> 4 * 3 – 2 10 Hugs> f 2 + 10 ERROR - Undefined variable "f" Hugs>:load “c:\boeres\exemplo1.hs” Main> f 2 + 10 13 exemplo1.hs f x = x + 1 9

expressão que define a relação que há entre os parâmetros Descrição de funções Scripts: Funções devem ser descritas em um arquivo texto f x y = x * y nome da função parâmetros expressão que define a relação que há entre os parâmetros interface da função corpo da definição 10

Interações do programador com o ambiente de programação editor de texto script interpretador Programador 11

Exemplo: Cálculo da hipotenusa de um triângulo retângulo Dados os catetos a e b de um triângulo retângulo, calcular a sua hipotenusa. 12

Exemplo de script hipo x y = sqrt (quad x + quad y) quad x = x * x 13

Avaliação de expressões ordem expressão redução aplicada 1 hipo 3 5 + hipo 4 4 expressão inicial 2 sqrt ( quad 3 + quad 5) + hipo 4 4 def de hipo 3 sqrt ( 3 * 3 + quad 5) + hipo 4 4 def de quad 4 sqrt (3 * 3 + 5 * 5) + hipo 4 4 5 sqrt (3 * 3 + 5 * 5) + sqrt (quad 4 + quad 4) 6 sqrt (3 * 3 + 5 * 5) + sqrt (4 * 4 + quad 4) 7 sqrt (3 * 3 + 5 * 5) + sqrt (4 * 4 + 4 * 4) 8 sqrt (9 + 5 * 5) + sqrt (4 * 4 + 4 * 4) * 9 sqrt (9 + 25) + sqrt (4 * 4 + 4 * 4) 10 sqrt 34 + sqrt (4 * 4 + 4 * 4) + 11 5.83095 + sqrt (4 * 4 + 4 * 4) sqrt 12 5.83095 + sqrt (16 + 4 * 4) 13 5.83095 + sqrt (16 + 16) 14 5.83095 + sqrt (32) 15 5.83095 + 5.65685 16 11.4878 14

Hugs> :t <nome da função> Assinatura de funções e a notação Curry Para conhecer o tipo de uma função, disponível na biblioteca do HUGS ou construída pelo programador, basta usar, no ambiente HUGS, o comando: Hugs> :t <nome da função> 15

Exemplos Hugs> :t sqrt sqrt :: Floating a => a -> a Hugs> :t sin sin :: Floating a => a -> a Hugs> :t abs abs :: Num a => a -> a Hugs> :t mod mod :: Integral a => a -> a -> a Hugs> :t div div :: Integral a => a -> a -> a 16

Exemplo: média aritmética de três números reais definição: ma3 x y z = (x + y + z)/3 assinatura: ma3 :: xx  notação curry: toda função tem sempre um único parâmetro de entrada a cada redução a aplicação de uma função sobre um parâmetro produz uma nova função assinatura: ma3 ::       17

Máquina Funcional ma3 3 4 5  “(x + y + z)/3” 3 4 5  “(3 + 4 + 5)/3”  “(7 + 5)/3”  “12/3”  4 18

Exercícios: 1) Avalie as expressões abaixo e apresente a sequência de reduções necessárias para a obtenção do resultado final: a. mod 15 2 b. mod 15 2 + div 6 3 c. ma3 5 10 2 d. (15 – 2*3) / (17 – 12) 2) Defina na linguagem Haskell as funções abaixo. Use, quando achar adequado, definições locais: a. Determinação da área de um retângulo de lados a e b b. Determinação da área de um círculo de raio r c. Determinação da distância entre dois pontos d. Determinação das raízes de uma equação de segundo grau 19