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

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

Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2."— Transcrição da apresentação:

1 Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2

2 A linguagem de programação Haskell e o ambiente Hugs linguagem Haskell: oferece uma sintaxe simples e elegante; ambiente 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

3 Avaliador do ambiente HUGS

4 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

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

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

7 Descrição de funções fx y=x * y nome da função parâmetros expressão aritmética 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.

8 Interações do programador com o ambiente de programação Editor de texto Arquivo texto com definições de funções Ambiente Interpretador HUGS Programador

9 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. hugs

10 Definições locais restritas ao contexto específico da definição de uma função. Exemplo: hipo x y = sqrt (quad x + quad y) where quad x = x * x

11 Definições locais – mais exemplos hipo1 x y = sqrt (k1 + k2) where k1 = x * x k2 = y * y hipo2 x y = sqrt (k1 + k2) where k1 = x * x; k2 = y * y hipo3 x y = sqrt k where k = quad x + quad y where quad x = x * x

12 Avaliação de expressões ordemexpressãoredução aplicada 1hipo 3 5 + 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 * 3 + 5 * 5) + hipo 4 4def de quad 5sqrt (3 * 3 + 5 * 5) + sqrt (quad 4 + quad 4)def de hipo 6sqrt (3 * 3 + 5 * 5) + sqrt (4 * 4 + quad 4)def de quad 7sqrt (3 * 3 + 5 * 5) + sqrt (4 * 4 + 4 * 4)def de quad 8sqrt (9 + 5 * 5) + sqrt (4 * 4 + 4 * 4)* 9sqrt (9 + 25) + sqrt (4 * 4 + 4 * 4)* 10sqrt 34 + sqrt (4 * 4 + 4 * 4)+ 115.83095 + sqrt (4 * 4 + 4 * 4)sqrt 125.83095 + sqrt (16 + 4 * 4)* 135.83095 + sqrt (16 + 16)* 145.83095 + sqrt (32)+ 155.83095 + 5.65685sqrt 1611.4878+

13 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

14 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

15 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 aplicação de uma função sobre um parâmetro produz uma nova função assinatura: ma3 ::

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


Carregar ppt "Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2."

Apresentações semelhantes


Anúncios Google