Preview only show first 10 pages with watermark. For full document please download

Programação Funcional - Exercícios Resolvidos - Aula 2

Coleção completa de exercícios resolvidos em haskell

   EMBED


Share

Transcript

˜ Funcional Programac¸ao ˜ a` Programac¸ao ˜ Funcional Introduc¸ao Linguagem Haskell Maria Adriana Vidigal de Lima ˜ - UFU Faculdade de Computac¸ao Agosto - 2009 Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao 1 ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes ˜ Introduc¸ao ˜ Funcional e´ um estilo de programac¸ao ˜ em A Programac¸ao ´ ´ ˜ e´ a aplicac¸ao ˜ de que o metodo basico de computac¸ao ˜ a` argumentos. func¸oes Haskell e´ uma linguagem funcional projetada com objetivo ˜ de de ser utilizada no ensino, pesquisa e construc¸ao sistemas computacionais. ´ Haskell deve seu nome ao matematico Haskell B. Curry, ´ ´ conhecido por seu trabalho em logica combinatoria e ´ pioneiro no desenvolvimento do Calculo Lambda ˜ aos projetistas da maioria das ´ (Calculo-λ), inspirac¸ao linguagens funcionais. Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes Exemplo Para somar os numeros inteiros de 1 a 10 podemos escrever ´ em linguagem Java: total = 0; for (i = 1; i <= 10; i++) total = total + i; ´ ˜ e´ baseado em atribuic¸ao ˜ de O metodo da computac¸ao ´ valores a` variaveis Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes Exemplo A soma dos numeros inteiros de 1 a 10 pode ser escrita em ´ Haskell como: sum [1..10] ´ ˜ e´ baseado em aplicac¸ao ˜ de O metodo da computac¸ao ` ˜ argumentos a func¸oes Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Maria Adriana Vidigal de Lima Linguagem Haskell ˜ Func¸oes ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes ˜ em Haskell Expressoes ˜ da Hugs e´ uma implementac¸ao linguagem Haskell que pode ser executada em PCs e sistemas Unix, incluindo Linux. Pode ser obtido gratuitamente em www.haskell.org/hugs Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes ˜ Func¸oes ˜ pode ser representada como no desenho abaixo: Uma func¸ao ˜ calcula um valor (o valor de sa´ıda) que depende dos A func¸ao valores de entrada. Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes ˜ Func¸oes ˜ em Haskell sao ˜ normalmente definidas pelo uso de Funcoes ˜ ˜ soma pode ser escrita: equac¸oes. Por exemplo, a func¸ao soma x y = x + y > soma 12 34 46 Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes ˜ Func¸oes ˜ incrementar pode ser escrita e testada: A func¸ao inc n = n + 1 Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes ˜ Outros exemplos de Func¸oes ˜ para calcular a area ´ Algumas func¸oes de figuras podem ser definidas: areaTriangulo b h = (b * h) / 2 areaRetangulo b h = b * h areaCirculo r = pi * r * r areaTrapezio a b h = (a + b) * h / 2 Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes ˜ Outros exemplos de Func¸oes ˜ para calcular a area ´ Algumas func¸oes de figuras podem ser definidas: areaTriangulo b h = (b * h) / 2 areaRetangulo b h = b * h areaCirculo r = pi * r * r areaTrapezio a b h = (a + b) * h / 2 Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes ˜ Outros exemplos de Func¸oes ˜ para calcular a media ´ ˆ numeros: Func¸ao entre tres ´ media v1 v2 v3 = (v1 + v2 + v3) / 3 > media 2 5 7 4.66666666666667 > media 1.4 2.6 4.4 2.8 > media 1.4 4 5.6 3.66666666666667 > media 1 4 ERROR - Cannot find "show" function for: *** Expression : media 1 4 *** Of type : Double -> Double Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes Ambiente do Hugs Alguns comandos uteis no Hugs: ´ Comando :load “arq.ext” :reload :edit “arq.ext” :edit :type expr :? :quit Significado carregar o arquivo recarregar o arquivo atual editar o arquivo pedido editar o arquivo atual ˜ mostrar o tipo de uma expressao mostrar todos os comandos encerrar o Hugs Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao ˜ Funcional Programac¸ao Linguagem Haskell ˜ Func¸oes Exerc´ıcios em Haskell 1 2 3 4 ˜ para calcular o dobro de um numero. Escreva uma func¸ao ´ ˜ para quadruplicar um numero, Escreva uma func¸ao ´ ˜ definida no item anterior. usando a func¸ao ˜ para calcular a distancia ˆ Defina uma func¸ao entre dois pontos (num plano). ˆ ˆ Dadas as medidas dos catetos de um triangulo retangulo, retornar o valor de sua hipotenusa. Maria Adriana Vidigal de Lima ˜ a` Programac¸ao ˜ Funcional Introduc¸ao