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

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

Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro."— Transcrição da apresentação:

1 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 Co-Autoria: Veruska Zamborlini e Clebson Oliveira

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

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

4 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 O interpretador Hugs

5 Avaliador do ambiente HUGS

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

7 Operações e primitivas... Operador Denominação Número de argumentos notaçãoexemplo +somabinário infixada/ pré-fixada (+) Subtração/ simetria binário/ unário infixada/ pré-fixada 5 – 2 (-) *multiplicaçãobinário infixada/ pré-fixada 7 * 3 (*) 7 3 /divisãobinário infixada/ pré-fixada 5 / 2 (/) 5 2 ^potênciabinário infixada/ pré-fixada 2 ^ 2 (^) 2 2 divdivisão inteirabináriopré-fixadadiv 5 2 mod resto da divisão inteira bináriopré-fixadamod 5 2

8 PrecedenceLeft associative operators Non-associative operators Right associative operators 9div,mod 8 ^, ^^, 7, /, 6 +, ==, /=,, >= 3 && 2 || 1 >>, >>= 0 Precedência

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

10 Descrição de funções fx 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çãocorpo da definição Scripts: Funções devem ser descritas em um arquivo texto

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

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.

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

14 Avaliação de expressões ordemexpressãoredução aplicada 1hipo hipo 4 4expressão inicial 2sqrt ( quad 3 + quad 5) + hipo 4 4def de hipo 3sqrt ( 3 * 3 + quad 5) + hipo 4 4def de quad 4sqrt (3 * * 5) + hipo 4 4def de quad 5sqrt (3 * * 5) + sqrt (quad 4 + quad 4)def de hipo 6sqrt (3 * * 5) + sqrt (4 * 4 + quad 4)def de quad 7sqrt (3 * * 5) + sqrt (4 * * 4)def de quad 8sqrt (9 + 5 * 5) + sqrt (4 * * 4)* 9sqrt (9 + 25) + sqrt (4 * * 4)* 10sqrt 34 + sqrt (4 * * 4) sqrt (4 * * 4)sqrt sqrt ( * 4)* sqrt ( )* sqrt (32) sqrt

15 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

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

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

18 Máquina Funcional ma (x + y + z)/ ( 3 + y + z)/3 4 5 ( z)/3 5 ( )/3 (7 + 5)/3 12/3 4

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


Carregar ppt "Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro."

Apresentações semelhantes


Anúncios Google