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

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

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

Apresentações semelhantes


Apresentação em tema: "Departamento de Informática Universidade Federal do Espírito Santo"— Transcrição da apresentação:

1 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 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

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

3 A linguagem Haskell Linha do tempo:
Página da linguagem:

4 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

5 Avaliador do ambiente HUGS
5

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

7 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

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

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

10 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

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

12 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

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

14 Avaliação de expressões
ordem expressão redução aplicada 1 hipo 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 * * 5) + hipo 4 4 5 sqrt (3 * * 5) + sqrt (quad 4 + quad 4) 6 sqrt (3 * * 5) + sqrt (4 * 4 + quad 4) 7 sqrt (3 * * 5) + sqrt (4 * * 4) 8 sqrt (9 + 5 * 5) + sqrt (4 * * 4) * 9 sqrt (9 + 25) + sqrt (4 * * 4) 10 sqrt 34 + sqrt (4 * * 4) + 11 sqrt (4 * * 4) sqrt 12 sqrt ( * 4) 13 sqrt ( ) 14 sqrt (32) 15 16 14

15 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

16 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

17 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

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

19 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 div 6 3 c. ma 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


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

Apresentações semelhantes


Anúncios Google