SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Paradigmas de Linguagens de Programação Prof. Péricles Miranda
Introdução ao Paradigma Funcional
O que é uma Linguagem Funcional?
O que é umaLinguagemFuncional? Programação com alto nível de abstração; Soluções elegantes, concisas e poderosas; Funções: computam um resultado que depende apenas dos valores das entradas; Forte fundamentação teórica, o que permite mais facilmente provas de propriedades sobre os programas.
Características Sua sintaxe encoraja uma visão totalmente modular do fluxo do programa; Reutilização do código previamente escrito (funções) para construir programas cada vez mais complexos; Geralmente não há um identificador (por exemplo a função main( ) de C e Java) para indicar o ponto onde a execução do programa inicia.
CaracterísticasModelo Computacional Entrada Saída Programa Ausência de estados e comandos,  não existe conceito de memória.
Como vimos… Umalinguagemfuncional se caracterizapelainexistência de memóriacomoconceitoprimitivodalinguagem; Tudo é função.
Operações que dependem de Memória Variáveis Atualizáveis Globais e Locais Atribuições x = x + 1 Alocação dinâmica a = new Pessoa(); Comandos de Repetição for (x=0;x<10;x++) …
Por que não Utilizar Memória? Programas que utilizam memória são mais difíceis de serem analisados. Exemplo: Otimização de Código: …. int f(int n) {     … } int g() {     a = f(1) + f(1); } … int f(int n) {     … } int g() {     a = 2*f(1); } otimiza para
Por que não Utilizar Memória? Programas que utilizam memória são mais difíceis de serem analisados. Exemplo: Otimização de Código: int x = 0; int f(int n) {     return (x += n); } int g() {     a = f(1) + f(1); } int x = 0; int f(int n) {     return (x += n); } int g() {     a = 2*f(1); } X otimiza para
Mais Exemplos O que vai ser impresso pela função f? class C { int n; } int f(C a, C b) {       a.n = 2;       b.n = 3;       System.out.println(a.n+b.n); } ….
Mais Exemplos O que vai ser impresso pela função f? class C { int n; } int f(C a, C b) {       a.n = 2;       b.n = 3;       System.out.println(a.n+b.n); } void main() {      C a = new C();      f(a,a); }
Mais Exemplos O que vai ser impresso pela função f? class C {      int n;      void setN(int x) { n = x; } } int f(C a) {       a.setN(5);       System.out.println(a.n); } ….
Mais Exemplos O que vai ser impresso pela função f? class C {      int n;      void setN(int x) { n = x; } } int f(C a) {       a.setN(5);       System.out.println(a.n); } class D extends C { void setN(int x) { n = 2*x; } } void main() {    C a = new D();    f(a); }
Como podemosver… Análise de programasqueabusam de variáveis e orientação a objetosdificultam a análise de segmentos de umasistema. O sistema tem que ser estudadocomo um todo.
Como ProgramarFuncionalmente? Um programadorfuncionalutiliza: Comandos de seleção; Recursão / Indução; Estruturas de dados complexas; Novosconceitos de programação Propostosparacompensara “deficiência” da LF; Polimorfismo, Funções de altaordem, Avaliaçãotardia, Monads, entre outros.
Linguagem Haskell LinguagemFuncionalPura; Homenagemaomatemático: Haskell Curry; Páginada Web: http://www.haskell.org Duasimplementaçõesprincipais: Hugs (interpretador); GHC (compilador).
Linguagens Funcionais Puras LinguagemFuncional “pura”: Nãopossuimemóriacomo base dalinguagem; Exemplo: Haskell; LinguagensFuncionaisnãopuras: Possuemconceitos de memória; Exemplos: SML, Lisp, OCAML.
Vantagens Manipulação mais simples de programas Legibilidade; Modularidade; Prova de propriedades: addDa b = 2 * (a + b) = 2 * (b + a) = addD b a ...
Desvantagens “O mundo não é funcional!”; Implementações ineficientes; Mecanismos primitivos de E/S e formatação Interface.
Introdução ao Paradigma Funcional
Paradigmas de Linguagem de Programação Prof. Péricles Miranda

Weitere ähnliche Inhalte

Was ist angesagt?

Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Adriano Teixeira de Souza
 
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
Janderson Campêlo
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Adriano Teixeira de Souza
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
Sidney Roberto
 

Was ist angesagt? (20)

Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Oficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvROficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvR
 
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
 
Aula 2 - Lógica de Programação
Aula 2 - Lógica de ProgramaçãoAula 2 - Lógica de Programação
Aula 2 - Lógica de Programação
 
Aula 3 - Lógica de Programação
Aula 3 - Lógica de ProgramaçãoAula 3 - Lógica de Programação
Aula 3 - Lógica de Programação
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de Programação
 
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
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos Introdutórios
 
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
 
E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
5. introducao a linguagem c
5. introducao a linguagem c5. introducao a linguagem c
5. introducao a linguagem c
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6
 

Andere mochten auch

Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
Adriano Teixeira de Souza
 
Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskell
Daniel Farias
 
Paradigma Lógico e Funcional
Paradigma Lógico e FuncionalParadigma Lógico e Funcional
Paradigma Lógico e Funcional
Diogenes Freitas
 
Modelo de artigo científico básico - com normas ABNT
Modelo de artigo científico básico - com normas ABNTModelo de artigo científico básico - com normas ABNT
Modelo de artigo científico básico - com normas ABNT
Rosineia Oliveira dos Santos
 
Proposta pedagógica da educação infantil
Proposta pedagógica da educação infantilProposta pedagógica da educação infantil
Proposta pedagógica da educação infantil
kauezinhoproducao
 
Planejamento educação infantil
Planejamento educação infantilPlanejamento educação infantil
Planejamento educação infantil
Claudia Ramos
 

Andere mochten auch (14)

Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
 
Paradigma lógico
Paradigma lógicoParadigma lógico
Paradigma lógico
 
Contextualizando o moodle
Contextualizando o moodleContextualizando o moodle
Contextualizando o moodle
 
Introdução ao paradigma OO
Introdução ao paradigma OOIntrodução ao paradigma OO
Introdução ao paradigma OO
 
Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskell
 
Paradigma Lógico e Funcional
Paradigma Lógico e FuncionalParadigma Lógico e Funcional
Paradigma Lógico e Funcional
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
TDC2016POA | Trilha Programacao Funcional - Por que sua próxima aplicação web...
TDC2016POA | Trilha Programacao Funcional - Por que sua próxima aplicação web...TDC2016POA | Trilha Programacao Funcional - Por que sua próxima aplicação web...
TDC2016POA | Trilha Programacao Funcional - Por que sua próxima aplicação web...
 
Modelo de artigo científico básico - com normas ABNT
Modelo de artigo científico básico - com normas ABNTModelo de artigo científico básico - com normas ABNT
Modelo de artigo científico básico - com normas ABNT
 
Proposta pedagógica da educação infantil
Proposta pedagógica da educação infantilProposta pedagógica da educação infantil
Proposta pedagógica da educação infantil
 
Planejamento educação infantil
Planejamento educação infantilPlanejamento educação infantil
Planejamento educação infantil
 

Ähnlich wie 4 introdução ao paradigma funcional

Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 

Ähnlich wie 4 introdução ao paradigma funcional (20)

mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Modularização
ModularizaçãoModularização
Modularização
 
Haskell - Introdução
Haskell - IntroduçãoHaskell - Introdução
Haskell - Introdução
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
 
Ud2
Ud2Ud2
Ud2
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Funções em C
Funções em CFunções em C
Funções em C
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação C
 
M2ti - Python Brasil
M2ti - Python BrasilM2ti - Python Brasil
M2ti - Python Brasil
 
Series lab
Series labSeries lab
Series lab
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Calourada2010
Calourada2010Calourada2010
Calourada2010
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Linguagem c parte 1
Linguagem c parte 1Linguagem c parte 1
Linguagem c parte 1
 

Mehr von Péricles Miranda

Mehr von 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
 
5 paradigma funcional usando haskell
5 paradigma funcional usando haskell5 paradigma funcional usando haskell
5 paradigma funcional usando haskell
 
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
 

4 introdução ao paradigma funcional

  • 1. Paradigmas de Linguagens de Programação Prof. Péricles Miranda
  • 3. O que é uma Linguagem Funcional?
  • 4. O que é umaLinguagemFuncional? Programação com alto nível de abstração; Soluções elegantes, concisas e poderosas; Funções: computam um resultado que depende apenas dos valores das entradas; Forte fundamentação teórica, o que permite mais facilmente provas de propriedades sobre os programas.
  • 5. Características Sua sintaxe encoraja uma visão totalmente modular do fluxo do programa; Reutilização do código previamente escrito (funções) para construir programas cada vez mais complexos; Geralmente não há um identificador (por exemplo a função main( ) de C e Java) para indicar o ponto onde a execução do programa inicia.
  • 6. CaracterísticasModelo Computacional Entrada Saída Programa Ausência de estados e comandos, não existe conceito de memória.
  • 7. Como vimos… Umalinguagemfuncional se caracterizapelainexistência de memóriacomoconceitoprimitivodalinguagem; Tudo é função.
  • 8. Operações que dependem de Memória Variáveis Atualizáveis Globais e Locais Atribuições x = x + 1 Alocação dinâmica a = new Pessoa(); Comandos de Repetição for (x=0;x<10;x++) …
  • 9. Por que não Utilizar Memória? Programas que utilizam memória são mais difíceis de serem analisados. Exemplo: Otimização de Código: …. int f(int n) { … } int g() { a = f(1) + f(1); } … int f(int n) { … } int g() { a = 2*f(1); } otimiza para
  • 10. Por que não Utilizar Memória? Programas que utilizam memória são mais difíceis de serem analisados. Exemplo: Otimização de Código: int x = 0; int f(int n) { return (x += n); } int g() { a = f(1) + f(1); } int x = 0; int f(int n) { return (x += n); } int g() { a = 2*f(1); } X otimiza para
  • 11. Mais Exemplos O que vai ser impresso pela função f? class C { int n; } int f(C a, C b) { a.n = 2; b.n = 3; System.out.println(a.n+b.n); } ….
  • 12. Mais Exemplos O que vai ser impresso pela função f? class C { int n; } int f(C a, C b) { a.n = 2; b.n = 3; System.out.println(a.n+b.n); } void main() { C a = new C(); f(a,a); }
  • 13. Mais Exemplos O que vai ser impresso pela função f? class C { int n; void setN(int x) { n = x; } } int f(C a) { a.setN(5); System.out.println(a.n); } ….
  • 14. Mais Exemplos O que vai ser impresso pela função f? class C { int n; void setN(int x) { n = x; } } int f(C a) { a.setN(5); System.out.println(a.n); } class D extends C { void setN(int x) { n = 2*x; } } void main() { C a = new D(); f(a); }
  • 15. Como podemosver… Análise de programasqueabusam de variáveis e orientação a objetosdificultam a análise de segmentos de umasistema. O sistema tem que ser estudadocomo um todo.
  • 16. Como ProgramarFuncionalmente? Um programadorfuncionalutiliza: Comandos de seleção; Recursão / Indução; Estruturas de dados complexas; Novosconceitos de programação Propostosparacompensara “deficiência” da LF; Polimorfismo, Funções de altaordem, Avaliaçãotardia, Monads, entre outros.
  • 17. Linguagem Haskell LinguagemFuncionalPura; Homenagemaomatemático: Haskell Curry; Páginada Web: http://www.haskell.org Duasimplementaçõesprincipais: Hugs (interpretador); GHC (compilador).
  • 18. Linguagens Funcionais Puras LinguagemFuncional “pura”: Nãopossuimemóriacomo base dalinguagem; Exemplo: Haskell; LinguagensFuncionaisnãopuras: Possuemconceitos de memória; Exemplos: SML, Lisp, OCAML.
  • 19. Vantagens Manipulação mais simples de programas Legibilidade; Modularidade; Prova de propriedades: addDa b = 2 * (a + b) = 2 * (b + a) = addD b a ...
  • 20. Desvantagens “O mundo não é funcional!”; Implementações ineficientes; Mecanismos primitivos de E/S e formatação Interface.
  • 22. Paradigmas de Linguagem de Programação Prof. Péricles Miranda