SlideShare una empresa de Scribd logo
1 de 13
Paradigmas de Linguagens de Programação Prof. Péricles Miranda
Paradigma Funcional usando Haskell
Linguagem Haskell LinguagemFuncionalPura Implementações: GHC: Compilador; Utilização similar à compiladores de outraslinguagens. HUGS: Interpretada, facilita a aprendizagem; O programadorforneceaointerpretadorumaexpressão e estemostra o resultadodasuaavaliação.
Tipos da Linguagem Haskell TiposPrimitivos (Similares a Java):  Int: Inteiro de 32 bits +, -, *, mod,  div, ^; Integer: Inteirosemlimitação de tamanho Float +, -, *, /, ^;  Char
Observação Em Haskell todosostiposcomeçam com letraMAIÚSCULA Todososnomesiniciados com letraminúsculassãonomes de funções.
Tipo Função Umafunçãocalcula um resultado a partir de um argumento: Porser umalinguagemfuncionalpura, em Haskell o resultadoproduzidoporumafunçãovariaapenasemfunçãovalores dos seusargumentos. Sintaxe: X -> Y Funçãoquerecebe um valor do tipo X e produz um valor do tipoY X -> Y -> Z Funçãoquerecebeargumentos dos tipos X e Y e produz um valor do tipo Z. Chamada de função: f x f x y
Programa Haskell dois:: Int -- tipodadeclaracao dois = 2 -- valor dadeclaracao f :: Int -> Int f x = x + 1 g :: Int -> Int -> Int g x y = x + 2*y
DeclaraçãoPolimórfica Motivação: Muitasfunçõesnãodependem de seustiposparaseremdefinidas. Exemplo: -- Funcaosegundovalor segI :: Int -> Int -> Int segI x y = y segF :: Float -> Float -> Float segF x y = y segC :: Char -> Char -> Char segC x y = y A definiçãodamesmafunçãoparaparadiferentestiposgeramuitaredundância de código.
Declaração Polimórfica Tipopolimórfico: Tipoquepode ser substituídoporqualqueroutrotipodalinguagem. Representadoporletrasminúsculas. Exemplo: seg :: a -> a -> a seg x y = y O tipopolimórfico “a” podesignificarqualquertipo real nalinguagem.
InferênciaAutomática de Tipos O programador Haskell não tem de definirostipos de todas as funçõesde um programa. Se elenãoespecificar o tipo de umafunção, o compilador/interpretadortentará “adivinhar” o tipo a partirdaanálise do corpo de declaração. Exemplo: f :: Int -> Int f x = x * 2 n x y = (f x) + (f y) Qual a assinaturadafunção ‘n’?
VamosPraticar?
Exercícios Implementar operações básicas entre dois números (+, -, /, *); Implementar a média entre 4 números; Implementar programa para dizer se número é par; Implementar programa para dizer se número é ímpar; Implementar programa para encontrar o maior entre 3 números; Implementar programa para encontrar o menor entre 3 números; Para cada exercício acima, mostre o tipo das funções.
Paradigmas de Linguagens de Programação Prof. Péricles Miranda

Más contenido relacionado

La actualidad más candente

Introduction to Delphi - June 2004
Introduction to Delphi - June 2004Introduction to Delphi - June 2004
Introduction to Delphi - June 2004Michel Alves
 
Introduçãso a linguagem c
Introduçãso a linguagem cIntroduçãso a linguagem c
Introduçãso a linguagem csergiocrespo
 
Tutorial pascal zim
Tutorial pascal zimTutorial pascal zim
Tutorial pascal zim12anogolega
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascalJocelma Rios
 
Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Yuri Camelo
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoRegis Magalhães
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Kratos879
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoJose Augusto Cintra
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Maellson Marques
 
Pug pe viii - luciano rodrigues - debugger
Pug pe viii - luciano rodrigues - debuggerPug pe viii - luciano rodrigues - debugger
Pug pe viii - luciano rodrigues - debuggerpugpe
 

La actualidad más candente (18)

Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Introduction to Delphi - June 2004
Introduction to Delphi - June 2004Introduction to Delphi - June 2004
Introduction to Delphi - June 2004
 
Java
JavaJava
Java
 
Introduçãso a linguagem c
Introduçãso a linguagem cIntroduçãso a linguagem c
Introduçãso a linguagem c
 
Tutorial pascal zim
Tutorial pascal zimTutorial pascal zim
Tutorial pascal zim
 
Introducao logica3
Introducao logica3Introducao logica3
Introducao logica3
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
 
Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica Programando em C++ // Estrutura Básica
Programando em C++ // Estrutura Básica
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 Repeticao
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Semanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantesSemanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantes
 
Programação em C
Programação em CProgramação em C
Programação em C
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Ruby
RubyRuby
Ruby
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1
 
Pug pe viii - luciano rodrigues - debugger
Pug pe viii - luciano rodrigues - debuggerPug pe viii - luciano rodrigues - debugger
Pug pe viii - luciano rodrigues - debugger
 

Similar a 5 paradigma funcional usando haskell

Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskellDaniel Farias
 
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]Dafmet Ufpel
 
Seminario haskell
Seminario haskellSeminario haskell
Seminario haskellRenzo Petri
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellSérgio Souza Costa
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOMicrosoft
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascalTiago
 
Cet P Sistemas Linguagem C Introducao
Cet P Sistemas Linguagem C IntroducaoCet P Sistemas Linguagem C Introducao
Cet P Sistemas Linguagem C Introducaommind
 
Aula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfAula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfvictorlopes714651
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Eder Samaniego
 
Capítulo 08 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 08 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 08 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 08 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxLdiaSilva39
 
Apostila condição se visu alg
Apostila condição se visu algApostila condição se visu alg
Apostila condição se visu algLucila Nascimento
 

Similar a 5 paradigma funcional usando haskell (20)

Haskell
HaskellHaskell
Haskell
 
Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskell
 
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
 
Ud2
Ud2Ud2
Ud2
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Seminario haskell
Seminario haskellSeminario haskell
Seminario haskell
 
Java2
Java2Java2
Java2
 
Aula 05 subprogramas
Aula 05   subprogramasAula 05   subprogramas
Aula 05 subprogramas
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo Haskell
 
Haskell
HaskellHaskell
Haskell
 
Linguagem em c
Linguagem em cLinguagem em c
Linguagem em c
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Haskell
HaskellHaskell
Haskell
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascal
 
Cet P Sistemas Linguagem C Introducao
Cet P Sistemas Linguagem C IntroducaoCet P Sistemas Linguagem C Introducao
Cet P Sistemas Linguagem C Introducao
 
Aula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfAula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdf
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2
 
Capítulo 08 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 08 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 08 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 08 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docx
 
Apostila condição se visu alg
Apostila condição se visu algApostila condição se visu alg
Apostila condição se visu alg
 

Más de Péricles Miranda

8 paradigma funcional usando haskell
8 paradigma funcional usando haskell8 paradigma funcional usando haskell
8 paradigma funcional usando haskellPéricles Miranda
 
6 paradigma funcional usando haskell
6 paradigma funcional usando haskell6 paradigma funcional usando haskell
6 paradigma funcional usando haskellPéricles Miranda
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcionalPéricles Miranda
 
9 paradigma funcional usando haskell
9 paradigma funcional usando haskell9 paradigma funcional usando haskell
9 paradigma funcional usando haskellPéricles Miranda
 
7 paradigma funcional usando haskell
7 paradigma funcional usando haskell7 paradigma funcional usando haskell
7 paradigma funcional usando haskellPéricles Miranda
 
Monografia pericles miranda_v1 (28-07-10)
Monografia pericles miranda_v1 (28-07-10)Monografia pericles miranda_v1 (28-07-10)
Monografia pericles miranda_v1 (28-07-10)Péricles Miranda
 

Más de Péricles Miranda (8)

Bio python
Bio pythonBio python
Bio python
 
8 paradigma funcional usando haskell
8 paradigma funcional usando haskell8 paradigma funcional usando haskell
8 paradigma funcional usando haskell
 
6 paradigma funcional usando haskell
6 paradigma funcional usando haskell6 paradigma funcional usando haskell
6 paradigma funcional usando haskell
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 
9 paradigma funcional usando haskell
9 paradigma funcional usando haskell9 paradigma funcional usando haskell
9 paradigma funcional usando haskell
 
7 paradigma funcional usando haskell
7 paradigma funcional usando haskell7 paradigma funcional usando haskell
7 paradigma funcional usando haskell
 
Monografia pericles miranda_v1 (28-07-10)
Monografia pericles miranda_v1 (28-07-10)Monografia pericles miranda_v1 (28-07-10)
Monografia pericles miranda_v1 (28-07-10)
 
NN using python
NN using pythonNN using python
NN using python
 

5 paradigma funcional usando haskell

  • 1. Paradigmas de Linguagens de Programação Prof. Péricles Miranda
  • 3. Linguagem Haskell LinguagemFuncionalPura Implementações: GHC: Compilador; Utilização similar à compiladores de outraslinguagens. HUGS: Interpretada, facilita a aprendizagem; O programadorforneceaointerpretadorumaexpressão e estemostra o resultadodasuaavaliação.
  • 4. Tipos da Linguagem Haskell TiposPrimitivos (Similares a Java): Int: Inteiro de 32 bits +, -, *, mod, div, ^; Integer: Inteirosemlimitação de tamanho Float +, -, *, /, ^; Char
  • 5. Observação Em Haskell todosostiposcomeçam com letraMAIÚSCULA Todososnomesiniciados com letraminúsculassãonomes de funções.
  • 6. Tipo Função Umafunçãocalcula um resultado a partir de um argumento: Porser umalinguagemfuncionalpura, em Haskell o resultadoproduzidoporumafunçãovariaapenasemfunçãovalores dos seusargumentos. Sintaxe: X -> Y Funçãoquerecebe um valor do tipo X e produz um valor do tipoY X -> Y -> Z Funçãoquerecebeargumentos dos tipos X e Y e produz um valor do tipo Z. Chamada de função: f x f x y
  • 7. Programa Haskell dois:: Int -- tipodadeclaracao dois = 2 -- valor dadeclaracao f :: Int -> Int f x = x + 1 g :: Int -> Int -> Int g x y = x + 2*y
  • 8. DeclaraçãoPolimórfica Motivação: Muitasfunçõesnãodependem de seustiposparaseremdefinidas. Exemplo: -- Funcaosegundovalor segI :: Int -> Int -> Int segI x y = y segF :: Float -> Float -> Float segF x y = y segC :: Char -> Char -> Char segC x y = y A definiçãodamesmafunçãoparaparadiferentestiposgeramuitaredundância de código.
  • 9. Declaração Polimórfica Tipopolimórfico: Tipoquepode ser substituídoporqualqueroutrotipodalinguagem. Representadoporletrasminúsculas. Exemplo: seg :: a -> a -> a seg x y = y O tipopolimórfico “a” podesignificarqualquertipo real nalinguagem.
  • 10. InferênciaAutomática de Tipos O programador Haskell não tem de definirostipos de todas as funçõesde um programa. Se elenãoespecificar o tipo de umafunção, o compilador/interpretadortentará “adivinhar” o tipo a partirdaanálise do corpo de declaração. Exemplo: f :: Int -> Int f x = x * 2 n x y = (f x) + (f y) Qual a assinaturadafunção ‘n’?
  • 12. Exercícios Implementar operações básicas entre dois números (+, -, /, *); Implementar a média entre 4 números; Implementar programa para dizer se número é par; Implementar programa para dizer se número é ímpar; Implementar programa para encontrar o maior entre 3 números; Implementar programa para encontrar o menor entre 3 números; Para cada exercício acima, mostre o tipo das funções.
  • 13. Paradigmas de Linguagens de Programação Prof. Péricles Miranda