Slides

4 introdução ao paradigma funcional

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