SlideShare a Scribd company logo
1 of 19
Paradigmas de Linguagens de Programação Paradigma Funcional Aula #10 (CopyLeft)2010 - Ismar Frango ismarfrango@gmail.com
Never had any mathematical conversations with anybody, because there was nobody else in my field.  Alonzo Church Paradigma Funcional Enquanto o embasamento fundamental do paradigma imperativo é a  arquitetura de Von Neumann , a base para o paradigma funcional é o conceito de função matemática, fundamento primário do  Cálculo Lambda,  desenvolvido inicialmente por Alonzo Church nos anos 1930   कार्यात्मक प्रतिमान
Funções ,[object Object],[object Object],[object Object],[object Object],[object Object]
+ sobre funções ,[object Object],[object Object],[object Object],[object Object],[object Object]
Currying ,[object Object],[object Object]
First-class citizens: funções! “ First-class citizen ” é um termo também cunhado por Christopher Strachey, usado para indicar o elemento de um determinado paradigma que pode ser passado como parâmetro, retornado ou atribuído.  No caso do paradigma funcional, as  funções  são as cidadãs de primeira classe. Este conceito está relacionado com o conceito de  reificação .  Informally, reification is often referred to as "making something a first-class citizen" within the scope of a particular system ( Wikipedia )
Afinal, o que é um programa funcional? Um programa puramente funcional é uma  expressão  que caracteriza uma função matemática, juntamente com um elemento do domínio daquela função. A execução de um programa funcional é um  processo  que determina quais elementos da imagem da função correspondem aos elementos do domínio fornecidos. Esse processo se dá por meio de transformações sucessivas do programa ( reduções ), que convergem para o resultado desejado.
 O   -Cálculo Assim como a Máquina de Turing é o embasamento conceitual das linguagem imperativas,  o   -Cálculo é a base do paradigma funcional . O   -Cálculo é um sistema formal projetado para representar a definição, aplicação e a recursão de funções.
 O   -Cálculo Alonzo Church e Alan Turing, em 1936, trabalharam sobre o  Entscheidungsproblem .  Enquanto Turing utilizava seu próprio modelo para provar computabilidade, Church utilizava-se do   -Cálculo. Was ist das? Church demonstrou que não existe algoritmo capaz de provar que duas expressões do   -Cálculo são equivalentes. Ele trabalhou também no problema equivalente ao problema da parada da Máquina de Turing.
 O   -Cálculo .  O   -cálculo pode ser considerado como uma linguagem de programação abstrata, onde o conceito de  computação , isto é, as maneiras como funções podem ser combinadas para formar outras funções, aparece em toda sua generalidade e de uma forma “pura”', despida de complicações sintáticas.  A principal característica do   -cálculo é tratar funções como “cidadãos de primeira classe”, isto é, entidades que podem ser, como um dado qualquer, utilizadas como argumentos e retornadas como valores de outras funções
 O   -Cálculo .  Em   -cálculo, toda expressão pode ser escrita como uma função com um único argumento. Esse argumento, por sua vez, é uma outra função com um argumento. O valor da função é outra função com um único argumento.
Regras do   -Cálculo Substituição : Todas as ocorrências de uma variável em uma expressão são trocadas por uma outra expressão. Se F e G são expressões, F[X  G] significa a troca de todas as ocorrências de X em F pela expressão G. Exemplo: Seja F a expressão X+5. Logo, F[X  4] = 4+5 !
Regras do   -Cálculo Abstração : Recurso básico para codificar funções. Se F é uma expressão, então   X.F indica todos os valores que X pode assumir para as substituições em F. Exemplo: Seja F a expressão X+5. Logo,   X.(X+5) indica a função matemática, com todas as possibilidades de ocorrências de X. !
Regras do   -Cálculo Aplicação : Indica a avaliação de uma função para um dado elementodo domínio. Se F é uma função e A um elemento do domínio, (F)A indica o valor de F em A. Exemplo: A aplicação (  X.(X+5))4 particulariza a expressão   X.(X+5)   para X=4. Um sistema de reduções irá produzir a seqüência de expressões (  X.(X+5))4   4+5    9. !
 (λ  x .  x  3) (λ  x .  x +2)         (λ  x .  x  + 2) 3          3 + 2  O   -Cálculo (λ  x . λ  y .  x  -  y ) 7 2           (λ  y . 7 -  y ) 2          7 - 2   Exemplos de funções equivalentes em   -Cálculo (justamente o que não é computável): Uma função é definida de maneira anônima por uma   -expressão. Por exemplo, a função “incremento” f(x) = x+1 seria expressa em l-cálculo como     x .  x  + 1 . O número  f (3) seria escrito como  (    x .  x  + 1) 3  .
 Aplicando o   -Cálculo Apesar do   -Cálculo ser a base do paradigma funcional, nem todas as linguagens que seguem esse paradigma são estritamente baseadas no  -Cálculo, apesar de seguirem a sintaxe do   -Cálculo. O LISP original, por exemplo, baseava-se na sintaxe do   -Cálculo, mas não na noção restrita da substituição. Atualmente,  Scheme, SML e Common Lisp  (e seus dialetos, como  CLOS ), são implementações do   -Cálculo.
Exemplo em Scheme ( define fatorial  ( lambda  (n)  if (= n 0)  1  ( * n  ( fatorial  ( - n 1 ) ) ) ) )
Redução “a priori”  [eager evaluation] (fatorial 3) 3*(fatorial 2) 3*2*(fatorial 1) 3*2*1*(fatorial 0) 3*2*1*1 3*2*1 3*2 6 Scheme, LISP, ML, SML, CLOS... $ $
Redução “sob demanda”  [lazy evaluation] (fatorial 3) 3*(fatorial 2) 3*2*(fatorial 1) 6*1*(fatorial 0) 6*(fatorial 1) 6*(fatorial 0) 6*1 6 Haskell, LazyML Z Z Z

More Related Content

What's hot

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
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERLTiago R. Sampaio
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativoTony Alexander Hild
 
Algoritmo Logica de programação básico
Algoritmo Logica de programação básicoAlgoritmo Logica de programação básico
Algoritmo Logica de programação básicoFelipe Figueiredo
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - OrdenaçãoAnderson Zardo
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Functional programming for Old Object Oriented Developers
Functional programming for Old Object Oriented Developers Functional programming for Old Object Oriented Developers
Functional programming for Old Object Oriented Developers Alan Prando
 
Lógica de programação 4
Lógica de programação 4Lógica de programação 4
Lógica de programação 4José Lopes
 
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasFelipe J. R. Vieira
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 
Introdução a Programação em Lógica e Prolog
Introdução a Programação em Lógica e PrologIntrodução a Programação em Lógica e Prolog
Introdução a Programação em Lógica e Prologelliando dias
 

What's hot (20)

4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERL
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 
Oz
OzOz
Oz
 
Algoritmo Logica de programação básico
Algoritmo Logica de programação básicoAlgoritmo Logica de programação básico
Algoritmo Logica de programação básico
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Amarração e escopo
Amarração e escopoAmarração e escopo
Amarração e escopo
 
Unidade04
Unidade04Unidade04
Unidade04
 
Shell sort
Shell sortShell sort
Shell sort
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - Ordenação
 
Introdução ao Prolog
Introdução ao PrologIntrodução ao Prolog
Introdução ao Prolog
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Functional programming for Old Object Oriented Developers
Functional programming for Old Object Oriented Developers Functional programming for Old Object Oriented Developers
Functional programming for Old Object Oriented Developers
 
Lógica de programação 4
Lógica de programação 4Lógica de programação 4
Lógica de programação 4
 
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
Introdução a Programação em Lógica e Prolog
Introdução a Programação em Lógica e PrologIntrodução a Programação em Lógica e Prolog
Introdução a Programação em Lógica e Prolog
 

Viewers also liked

Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoFabio Spanhol
 
Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Ismar Silveira
 
Engenharia de Software - Aula1
Engenharia de Software - Aula1Engenharia de Software - Aula1
Engenharia de Software - Aula1Ismar Silveira
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional Design
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional DesignInteraccion2014 - Presentation about Open Books, MOOCs and Instructional Design
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional DesignIsmar Silveira
 
Um Sistema De Recomendacao para Web 2
Um Sistema De Recomendacao para Web 2Um Sistema De Recomendacao para Web 2
Um Sistema De Recomendacao para Web 2Ismar Silveira
 
MOOC e Educação Aberta - Painel @ #cbie2013
MOOC e Educação Aberta - Painel @ #cbie2013MOOC e Educação Aberta - Painel @ #cbie2013
MOOC e Educação Aberta - Painel @ #cbie2013Ismar Silveira
 
Apresentação WAvalia - SBIE 2009
Apresentação WAvalia - SBIE 2009Apresentação WAvalia - SBIE 2009
Apresentação WAvalia - SBIE 2009Ismar Silveira
 
#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - MethodologiesIsmar Silveira
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
 
Charla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinalCharla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinalIsmar Silveira
 
Paradigmas de Linguagens de Programacao - Aula #7
Paradigmas de Linguagens de Programacao - Aula #7Paradigmas de Linguagens de Programacao - Aula #7
Paradigmas de Linguagens de Programacao - Aula #7Ismar Silveira
 
Lua para Jogos
Lua para JogosLua para Jogos
Lua para JogosDavid Ruiz
 
Paradigmas de Linguagens de Programacao - Aula #5
Paradigmas de Linguagens de Programacao - Aula #5Paradigmas de Linguagens de Programacao - Aula #5
Paradigmas de Linguagens de Programacao - Aula #5Ismar Silveira
 

Viewers also liked (20)

Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9E:\Plp 2009 2\Plp 9
E:\Plp 2009 2\Plp 9
 
Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9Paradigmas de linguagens de programacao - aula#9
Paradigmas de linguagens de programacao - aula#9
 
Engenharia de Software - Aula1
Engenharia de Software - Aula1Engenharia de Software - Aula1
Engenharia de Software - Aula1
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Fundcompsis 1.1
Fundcompsis 1.1Fundcompsis 1.1
Fundcompsis 1.1
 
wei2010
wei2010wei2010
wei2010
 
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional Design
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional DesignInteraccion2014 - Presentation about Open Books, MOOCs and Instructional Design
Interaccion2014 - Presentation about Open Books, MOOCs and Instructional Design
 
Sinatra - Primeiros Passos
Sinatra - Primeiros PassosSinatra - Primeiros Passos
Sinatra - Primeiros Passos
 
Um Sistema De Recomendacao para Web 2
Um Sistema De Recomendacao para Web 2Um Sistema De Recomendacao para Web 2
Um Sistema De Recomendacao para Web 2
 
MOOC e Educação Aberta - Painel @ #cbie2013
MOOC e Educação Aberta - Painel @ #cbie2013MOOC e Educação Aberta - Painel @ #cbie2013
MOOC e Educação Aberta - Painel @ #cbie2013
 
Ismar webinar-udelar
Ismar webinar-udelarIsmar webinar-udelar
Ismar webinar-udelar
 
Apresentação WAvalia - SBIE 2009
Apresentação WAvalia - SBIE 2009Apresentação WAvalia - SBIE 2009
Apresentação WAvalia - SBIE 2009
 
#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies#latinproject @openeducationweek2014 - Methodologies
#latinproject @openeducationweek2014 - Methodologies
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOL
 
Paradigmas do Ruby
Paradigmas do RubyParadigmas do Ruby
Paradigmas do Ruby
 
Charla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinalCharla juegos udelar2015_vfinal
Charla juegos udelar2015_vfinal
 
Paradigmas de Linguagens de Programacao - Aula #7
Paradigmas de Linguagens de Programacao - Aula #7Paradigmas de Linguagens de Programacao - Aula #7
Paradigmas de Linguagens de Programacao - Aula #7
 
Lua para Jogos
Lua para JogosLua para Jogos
Lua para Jogos
 
Paradigmas de Linguagens de Programacao - Aula #5
Paradigmas de Linguagens de Programacao - Aula #5Paradigmas de Linguagens de Programacao - Aula #5
Paradigmas de Linguagens de Programacao - Aula #5
 

Similar to Paradigmas de linguagens de programacao - aula#10

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
 
Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskellDaniel Farias
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcionalLP Maquinas
 
Aula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxAula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxLemosManuel
 
Programação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoProgramação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoArthur Xavier
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoessamuelthiago
 
Funções Recursivas e Cálculo Lambda
Funções Recursivas e Cálculo LambdaFunções Recursivas e Cálculo Lambda
Funções Recursivas e Cálculo LambdaCarlos Campani
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursaosamuelthiago
 

Similar to Paradigmas de linguagens de programacao - aula#10 (20)

Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo Haskell
 
Intro funcoes(2)
Intro funcoes(2)Intro funcoes(2)
Intro funcoes(2)
 
Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskell
 
07-lambda.pdf
07-lambda.pdf07-lambda.pdf
07-lambda.pdf
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcional
 
Apostila 3 funções
Apostila 3 funçõesApostila 3 funções
Apostila 3 funções
 
Aula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxAula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptx
 
Programando em Python - Funções
Programando em Python -  FunçõesProgramando em Python -  Funções
Programando em Python - Funções
 
Programação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoProgramação funcional tipada: uma introdução
Programação funcional tipada: uma introdução
 
Funções
FunçõesFunções
Funções
 
Haskell
HaskellHaskell
Haskell
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Funções
FunçõesFunções
Funções
 
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
 
Funções Recursivas e Cálculo Lambda
Funções Recursivas e Cálculo LambdaFunções Recursivas e Cálculo Lambda
Funções Recursivas e Cálculo Lambda
 
(Apostila função)
(Apostila função)(Apostila função)
(Apostila função)
 
(Apostila função)
(Apostila função)(Apostila função)
(Apostila função)
 
Haskell
HaskellHaskell
Haskell
 
Funções
FunçõesFunções
Funções
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursao
 

More from Ismar Silveira

REA - Recursos Educacionais Abertos
REA - Recursos Educacionais AbertosREA - Recursos Educacionais Abertos
REA - Recursos Educacionais AbertosIsmar Silveira
 
Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula 11 2009_2
Fundamentos de Sistemas de Informacao - Aula 11 2009_2Fundamentos de Sistemas de Informacao - Aula 11 2009_2
Fundamentos de Sistemas de Informacao - Aula 11 2009_2Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula 12 2009_2
Fundamentos de Sistemas de Informacao - Aula 12 2009_2Fundamentos de Sistemas de Informacao - Aula 12 2009_2
Fundamentos de Sistemas de Informacao - Aula 12 2009_2Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula #10_2009_2
Fundamentos de Sistemas de Informacao - Aula #10_2009_2Fundamentos de Sistemas de Informacao - Aula #10_2009_2
Fundamentos de Sistemas de Informacao - Aula #10_2009_2Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula #9_2009_2
Fundamentos de Sistemas de Informacao - Aula #9_2009_2Fundamentos de Sistemas de Informacao - Aula #9_2009_2
Fundamentos de Sistemas de Informacao - Aula #9_2009_2Ismar Silveira
 
Fundamentos de Sistemas de Informação - Aula #7
Fundamentos de Sistemas de Informação - Aula #7Fundamentos de Sistemas de Informação - Aula #7
Fundamentos de Sistemas de Informação - Aula #7Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula #7 - 2sem2009
Fundamentos de Sistemas de Informacao - Aula #7 - 2sem2009Fundamentos de Sistemas de Informacao - Aula #7 - 2sem2009
Fundamentos de Sistemas de Informacao - Aula #7 - 2sem2009Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula 6
Fundamentos de Sistemas de Informacao - Aula 6Fundamentos de Sistemas de Informacao - Aula 6
Fundamentos de Sistemas de Informacao - Aula 6Ismar Silveira
 
Fundamentos de Sistemas de Informacao - Aula #5 (2009_2)
Fundamentos de Sistemas de Informacao - Aula #5 (2009_2)Fundamentos de Sistemas de Informacao - Aula #5 (2009_2)
Fundamentos de Sistemas de Informacao - Aula #5 (2009_2)Ismar Silveira
 

More from Ismar Silveira (14)

REA - Recursos Educacionais Abertos
REA - Recursos Educacionais AbertosREA - Recursos Educacionais Abertos
REA - Recursos Educacionais Abertos
 
Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16Fundamentos de Sistemas de informacao - Aula #16
Fundamentos de Sistemas de informacao - Aula #16
 
Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2Fundamentos de Sistemas de Informacao - Aula #14 2009_2
Fundamentos de Sistemas de Informacao - Aula #14 2009_2
 
Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13Fundamentos de Sistemas de Informacao - Aula 13
Fundamentos de Sistemas de Informacao - Aula 13
 
Fundamentos de Sistemas de Informacao - Aula 11 2009_2
Fundamentos de Sistemas de Informacao - Aula 11 2009_2Fundamentos de Sistemas de Informacao - Aula 11 2009_2
Fundamentos de Sistemas de Informacao - Aula 11 2009_2
 
Fundamentos de Sistemas de Informacao - Aula 12 2009_2
Fundamentos de Sistemas de Informacao - Aula 12 2009_2Fundamentos de Sistemas de Informacao - Aula 12 2009_2
Fundamentos de Sistemas de Informacao - Aula 12 2009_2
 
Fundamentos de Sistemas de Informacao - Aula #10_2009_2
Fundamentos de Sistemas de Informacao - Aula #10_2009_2Fundamentos de Sistemas de Informacao - Aula #10_2009_2
Fundamentos de Sistemas de Informacao - Aula #10_2009_2
 
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
 
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2Fundamentos de Sistemas de Informacao - Aula #8_2009_2
Fundamentos de Sistemas de Informacao - Aula #8_2009_2
 
Fundamentos de Sistemas de Informacao - Aula #9_2009_2
Fundamentos de Sistemas de Informacao - Aula #9_2009_2Fundamentos de Sistemas de Informacao - Aula #9_2009_2
Fundamentos de Sistemas de Informacao - Aula #9_2009_2
 
Fundamentos de Sistemas de Informação - Aula #7
Fundamentos de Sistemas de Informação - Aula #7Fundamentos de Sistemas de Informação - Aula #7
Fundamentos de Sistemas de Informação - Aula #7
 
Fundamentos de Sistemas de Informacao - Aula #7 - 2sem2009
Fundamentos de Sistemas de Informacao - Aula #7 - 2sem2009Fundamentos de Sistemas de Informacao - Aula #7 - 2sem2009
Fundamentos de Sistemas de Informacao - Aula #7 - 2sem2009
 
Fundamentos de Sistemas de Informacao - Aula 6
Fundamentos de Sistemas de Informacao - Aula 6Fundamentos de Sistemas de Informacao - Aula 6
Fundamentos de Sistemas de Informacao - Aula 6
 
Fundamentos de Sistemas de Informacao - Aula #5 (2009_2)
Fundamentos de Sistemas de Informacao - Aula #5 (2009_2)Fundamentos de Sistemas de Informacao - Aula #5 (2009_2)
Fundamentos de Sistemas de Informacao - Aula #5 (2009_2)
 

Recently uploaded

O guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfO guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfErasmo Portavoz
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasRicardo Diniz campos
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaFernanda Ledesma
 
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxDeyvidBriel
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 anoAdelmaTorres2
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxacaciocarmo1
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosAntnyoAllysson
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfIedaGoethe
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoSilvaDias3
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdfProfGleide
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbyasminlarissa371
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 

Recently uploaded (20)

O guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfO guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdf
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecas
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão Linguística
 
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptx
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteiros
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdf
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basico
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 

Paradigmas de linguagens de programacao - aula#10

  • 1. Paradigmas de Linguagens de Programação Paradigma Funcional Aula #10 (CopyLeft)2010 - Ismar Frango ismarfrango@gmail.com
  • 2. Never had any mathematical conversations with anybody, because there was nobody else in my field.  Alonzo Church Paradigma Funcional Enquanto o embasamento fundamental do paradigma imperativo é a arquitetura de Von Neumann , a base para o paradigma funcional é o conceito de função matemática, fundamento primário do Cálculo Lambda, desenvolvido inicialmente por Alonzo Church nos anos 1930 कार्यात्मक प्रतिमान
  • 3.
  • 4.
  • 5.
  • 6. First-class citizens: funções! “ First-class citizen ” é um termo também cunhado por Christopher Strachey, usado para indicar o elemento de um determinado paradigma que pode ser passado como parâmetro, retornado ou atribuído. No caso do paradigma funcional, as funções são as cidadãs de primeira classe. Este conceito está relacionado com o conceito de reificação . Informally, reification is often referred to as "making something a first-class citizen" within the scope of a particular system ( Wikipedia )
  • 7. Afinal, o que é um programa funcional? Um programa puramente funcional é uma expressão que caracteriza uma função matemática, juntamente com um elemento do domínio daquela função. A execução de um programa funcional é um processo que determina quais elementos da imagem da função correspondem aos elementos do domínio fornecidos. Esse processo se dá por meio de transformações sucessivas do programa ( reduções ), que convergem para o resultado desejado.
  • 8.  O  -Cálculo Assim como a Máquina de Turing é o embasamento conceitual das linguagem imperativas, o  -Cálculo é a base do paradigma funcional . O  -Cálculo é um sistema formal projetado para representar a definição, aplicação e a recursão de funções.
  • 9.  O  -Cálculo Alonzo Church e Alan Turing, em 1936, trabalharam sobre o Entscheidungsproblem . Enquanto Turing utilizava seu próprio modelo para provar computabilidade, Church utilizava-se do  -Cálculo. Was ist das? Church demonstrou que não existe algoritmo capaz de provar que duas expressões do  -Cálculo são equivalentes. Ele trabalhou também no problema equivalente ao problema da parada da Máquina de Turing.
  • 10.  O  -Cálculo . O  -cálculo pode ser considerado como uma linguagem de programação abstrata, onde o conceito de computação , isto é, as maneiras como funções podem ser combinadas para formar outras funções, aparece em toda sua generalidade e de uma forma “pura”', despida de complicações sintáticas. A principal característica do  -cálculo é tratar funções como “cidadãos de primeira classe”, isto é, entidades que podem ser, como um dado qualquer, utilizadas como argumentos e retornadas como valores de outras funções
  • 11.  O  -Cálculo . Em  -cálculo, toda expressão pode ser escrita como uma função com um único argumento. Esse argumento, por sua vez, é uma outra função com um argumento. O valor da função é outra função com um único argumento.
  • 12. Regras do  -Cálculo Substituição : Todas as ocorrências de uma variável em uma expressão são trocadas por uma outra expressão. Se F e G são expressões, F[X  G] significa a troca de todas as ocorrências de X em F pela expressão G. Exemplo: Seja F a expressão X+5. Logo, F[X  4] = 4+5 !
  • 13. Regras do  -Cálculo Abstração : Recurso básico para codificar funções. Se F é uma expressão, então  X.F indica todos os valores que X pode assumir para as substituições em F. Exemplo: Seja F a expressão X+5. Logo,  X.(X+5) indica a função matemática, com todas as possibilidades de ocorrências de X. !
  • 14. Regras do  -Cálculo Aplicação : Indica a avaliação de uma função para um dado elementodo domínio. Se F é uma função e A um elemento do domínio, (F)A indica o valor de F em A. Exemplo: A aplicação (  X.(X+5))4 particulariza a expressão  X.(X+5) para X=4. Um sistema de reduções irá produzir a seqüência de expressões (  X.(X+5))4  4+5  9. !
  • 15.  (λ x . x 3) (λ x . x +2)        (λ x . x + 2) 3       3 + 2 O  -Cálculo (λ x . λ y . x - y ) 7 2        (λ y . 7 - y ) 2        7 - 2 Exemplos de funções equivalentes em  -Cálculo (justamente o que não é computável): Uma função é definida de maneira anônima por uma  -expressão. Por exemplo, a função “incremento” f(x) = x+1 seria expressa em l-cálculo como   x . x + 1 . O número f (3) seria escrito como  (  x . x + 1) 3 .
  • 16.  Aplicando o  -Cálculo Apesar do  -Cálculo ser a base do paradigma funcional, nem todas as linguagens que seguem esse paradigma são estritamente baseadas no  -Cálculo, apesar de seguirem a sintaxe do  -Cálculo. O LISP original, por exemplo, baseava-se na sintaxe do  -Cálculo, mas não na noção restrita da substituição. Atualmente, Scheme, SML e Common Lisp (e seus dialetos, como CLOS ), são implementações do  -Cálculo.
  • 17. Exemplo em Scheme ( define fatorial ( lambda (n) if (= n 0) 1 ( * n ( fatorial ( - n 1 ) ) ) ) )
  • 18. Redução “a priori” [eager evaluation] (fatorial 3) 3*(fatorial 2) 3*2*(fatorial 1) 3*2*1*(fatorial 0) 3*2*1*1 3*2*1 3*2 6 Scheme, LISP, ML, SML, CLOS... $ $
  • 19. Redução “sob demanda” [lazy evaluation] (fatorial 3) 3*(fatorial 2) 3*2*(fatorial 1) 6*1*(fatorial 0) 6*(fatorial 1) 6*(fatorial 0) 6*1 6 Haskell, LazyML Z Z Z