Your SlideShare is downloading. ×
4 introdução ao paradigma funcional
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

4 introdução ao paradigma funcional

3,057
views

Published on


1 Comment
1 Like
Statistics
Notes
  • Muito bom, eu só fiquei perdido na hora de entender o que 'f' imprime! rsrs... tenho uma apresentação para fazer em sala de aula ( Trabalho ) e esse slide do Prof. Péricles Miranda é perfeito, me ajudou bastante! agora eu compreendo, agora tenho que fazer mais detalhado =)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
3,057
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
85
Comments
1
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Paradigmas de Linguagens de Programação
    Prof. Péricles Miranda
  • 2. Introdução ao Paradigma Funcional
  • 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.
  • 21. Introdução ao Paradigma Funcional
  • 22. Paradigmas de Linguagem de Programação
    Prof. Péricles Miranda