Slides

5 paradigma funcional usando haskell

Description
1. Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br /> 2. Paradigma Funcional usando Haskell<br /> 3. Linguagem Haskell<br…
Categories
Published
of 13
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
  • 1. Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />
  • 2. Paradigma Funcional usando Haskell<br />
  • 3. Linguagem Haskell<br />LinguagemFuncionalPura<br />Implementações:<br />GHC:<br />Compilador;<br />Utilização similar à compiladores de outraslinguagens.<br />HUGS:<br />Interpretada, facilita a aprendizagem;<br />O programadorforneceaointerpretadorumaexpressão e estemostra o resultadodasuaavaliação.<br />
  • 4. Tipos da Linguagem Haskell<br />TiposPrimitivos (Similares a Java): <br />Int: Inteiro de 32 bits<br />+, -, *, mod, div, ^;<br />Integer: Inteirosemlimitação de tamanho<br />Float<br />+, -, *, /, ^; <br />Char<br />
  • 5. Observação<br />Em Haskell todosostiposcomeçam com letraMAIÚSCULA<br />Todososnomesiniciados com letraminúsculassãonomes de funções.<br />
  • 6. Tipo Função<br />Umafunçãocalcula um resultado a partir de um argumento:<br />Porser umalinguagemfuncionalpura, em Haskell o resultadoproduzidoporumafunçãovariaapenasemfunçãovalores dos seusargumentos.<br />Sintaxe:<br />X -> Y<br />Funçãoquerecebe um valor do tipo X e produz um valor do tipoY<br />X -> Y -> Z<br />Funçãoquerecebeargumentos dos tipos X e Y e produz um valor do tipo Z.<br />Chamada de função:<br />f x<br />f x y <br />
  • 7. Programa Haskell<br />dois:: Int -- tipodadeclaracao<br />dois = 2 -- valor dadeclaracao<br />f :: Int -> Int<br />f x = x + 1<br />g :: Int -> Int -> Int<br />g x y = x + 2*y<br />
  • 8. DeclaraçãoPolimórfica<br />Motivação:<br />Muitasfunçõesnãodependem de seustiposparaseremdefinidas.<br />Exemplo:<br />-- Funcaosegundovalor<br />segI :: Int -> Int -> Int<br />segI x y = y<br />segF :: Float -> Float -> Float<br />segF x y = y<br />segC :: Char -> Char -> Char<br />segC x y = y<br />A definiçãodamesmafunçãoparaparadiferentestiposgeramuitaredundância de código.<br />
  • 9. Declaração Polimórfica<br />Tipopolimórfico: Tipoquepode ser substituídoporqualqueroutrotipodalinguagem.<br />Representadoporletrasminúsculas.<br />Exemplo:<br />seg :: a -> a -> a<br />seg x y = y<br />O tipopolimórfico “a” podesignificarqualquertipo real nalinguagem.<br />
  • 10. InferênciaAutomática de Tipos<br />O programador Haskell não tem de definirostipos de todas as funçõesde um programa.<br />Se elenãoespecificar o tipo de umafunção, o compilador/interpretadortentará “adivinhar” o tipo a partirdaanálise do corpo de declaração.<br />Exemplo:<br />f :: Int -> Int<br />f x = x * 2<br />n x y = (f x) + (f y)<br />Qual a assinaturadafunção ‘n’?<br />
  • 11. VamosPraticar?<br />
  • 12. Exercícios<br />Implementar operações básicas entre dois números (+, -, /, *);<br />Implementar a média entre 4 números;<br />Implementar programa para dizer se número é par;<br />Implementar programa para dizer se número é ímpar;<br />Implementar programa para encontrar o maior entre 3 números;<br />Implementar programa para encontrar o menor entre 3 números;<br />Para cada exercício acima, mostre o tipo das funções.<br />
  • 13. Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />
  • We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks