170 likes | 313 Views
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1. linguagem Haskell: oferece uma sintaxe simples e elegante; ambiente HUGS: uma implementação da linguagem de programação funcional Haskell ;
E N D
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1
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 A linguagem de programação Haskell e o ambiente Hugs
Ambiente HUGS • avaliador: pode ser usadocomoumacalculadora: ? 3 + 5 * 213 ? (3 + 5) * 216 ? • primitivas: funçõesjáexistentesembibliotecas do HUGS
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 exemplo1.hs f x = x + 1 hugs
Descrição de funções Scripts: Funções devem ser descritas em um arquivo texto.
Editor de texto Arquivo texto com definições de funções Ambiente Interpretador HUGS Programador Interações do programador com o ambiente de programação
Dados os catetos a e b de um triângulo retângulo, calcular a sua hipotenusa. hugs Exemplo: Cálculo da hipotenusa de um triângulo retângulo
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 Definições locais
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 Definições locais – mais exemplos
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> Assinatura de funções e a notação Curry
definição: ma3 x y z = (x + y + z)/3 assinatura: ma3 :: xx 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 :: Exemplo: média aritmética de três números reais
Exercícios: 1) Avalie as expressões abaixo e apresente a sequência de reduções necessárias para a obtenção do termo irredutível (resultado final): a. mod 15 2 b. mod 15 2 + div 6 3 c. ma3 5 10 2 d. sqrt (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 média aritmética de três números a, b e c d. Determinação da distância entre dois pontos