SlideShare uma empresa Scribd logo
Programação Funcional com Javascript
revisão
Object	

!
Object	

!
Prototipo de Object	

!
Object	

!
Prototipo de Object	

!
Object.prototype.pO = 1
Object	

!
Prototipo de Object	

!
pO = 1
Object.prototype.pO = 1
A	

!
a = 2
var A = function() {
this.a = 2;
}
Object	

!
Prototipo de Object	

!
pO = 1
A	

!
a = 2
Prototipo de A	

!
Object	

!
Prototipo de Object	

!
pO = 1
A	

!
a = 2
Prototipo de A	

!
A.prototype.pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
A	

!
a = 2
Prototipo de A	

!
pA = 3
A.prototype.pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
var B = function() {
this.b = 4;
}
B	

!
b = 4
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
Prototipo de B	

!
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
Prototipo de B	

!
B.prototype = new A
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
B.prototype = new A
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
B.prototype = new A
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
B.prototype = new A
new A()	

!
a = 2
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
B.prototype = new A
new A()	

!
a = 2
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2
B.prototype.pB = 5
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
B.prototype.pB = 5
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x = new B()
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x = new B()
x	

new B()	

!
b = 4
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x = new B()
x	

new B()	

!
b = 4
Prototipo de B	

!
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x	

new B()	

!
b = 4
Prototipo de B	

!
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x.b
x	

new B()	

!
b = 4
Prototipo de B	

!
?
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x	

new B()	

!
b = 4
Prototipo de B	

!
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x.pB
x	

new B()	

!
b = 4
Prototipo de B	

!
?
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x	

new B()	

!
b = 4
Prototipo de B	

!
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x.a
x	

new B()	

!
b = 4
Prototipo de B	

!
?
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x	

new B()	

!
b = 4
Prototipo de B	

!
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x.pA
x	

new B()	

!
b = 4
Prototipo de B	

!
?
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x	

new B()	

!
b = 4
Prototipo de B	

!
A	

!
a = 2
Prototipo de A	

!
pA = 3
Object	

!
Prototipo de Object	

!
pO = 1
B	

!
b = 4
new A()	

!
a = 2	

pB = 5
x.pO
x	

new B()	

!
b = 4
Prototipo de B	

!
?
Programação Funcional com Javascript
function f (x) {
return function (y) {
return x + y;
};
}
var a = f(5);
var b = a(3);
alert(b); // ????
Javascript
Alexandre Gomes
princípios da programação funcional com
programação imperativa
1. Bata bem todos os ingredientes
( menos o fermento) da massa no
liquidificador, aproximadamente
2 a 3 minutos	

2. Acrescente o fermento e bata por
mais uns 15 segundos	

3. Coloque em uma fôrma redonda,
u n t a d a c o m m a n t e i g a e
polvilhada com farinha de trigo	

4. Asse por cerca de 40 minutos em
forno médio (180º graus),
preaquecido
programação declarativa
Comunique assim que estiver
pronto.	

Não deixe o bolo queimar.	

Não deixe que abram o forno
antes da hora.
Buscar alunos com menos de 30 anos.
alunos = [{nome: “Rodrigo”, idade: 30},
{nome: “Patricia”, idade: 20},
{nome: “Marcos”, idade: 33},
{nome: “Ricardo”, idade: 28}
]
menores = []
!
for (int i = 1; i <= 4; i++) {
aluno = alunos[i];
if (aluno.idade < 30) {
menores.add(aluno);
}
}
!
return menores;
alunos = [{nome: “Rodrigo”, idade: 30},
{nome: “Patricia”, idade: 20},
{nome: “Marcos”, idade: 33},
{nome: “Ricardo”, idade: 28}
]
menores = []
!
for (int i = 1; i <= 4; i++) {
aluno = alunos[i];
if (aluno.idade < 30) {
menores.add(aluno);
}
}
!
return menores;
alunos = [{nome: “Rodrigo”, idade: 30},
{nome: “Patricia”, idade: 20},
{nome: “Marcos”, idade: 33},
{nome: “Ricardo”, idade: 28}
]
imperativa
alunos = [{nome: “Rodrigo”, idade: 30},
{nome: “Patricia”, idade: 20},
{nome: “Marcos”, idade: 33},
{nome: “Ricardo”, idade: 28}
]
Nome Idade
1 Rodrigo 30
2 Patricia 20
3 Marcos 33
4 Ricardo 28
Nome Idade
1 Rodrigo 30
2 Patricia 20
3 Marcos 33
4 Ricardo 28
SELECT * FROM alunos WHERE idade < 30
Nome Idade
1 Rodrigo 30
2 Patricia 20
3 Marcos 33
4 Ricardo 28
SELECT * FROM alunos WHERE idade < 30
declarativa
menores = []
!
for (int i = 1; i <= 4; i++) {
aluno = alunos[i];
if (aluno.idade < 30) {
menores.add(aluno);
}
}
!
return menores;
alunos = [{nome: “Rodrigo”, idade: 30},
{nome: “Patricia”, idade: 20},
{nome: “Marcos”, idade: 33},
{nome: “Ricardo”, idade: 28}
]
SELECT * FROM alunos WHERE idade < 30
Programação Funcional com Javascript
var numbers = [1,2,3,4,5]
var numbers = [1,2,3,4,5]
var doubled = []
!
for(var i = 0; i < numbers.length; i++) {
var newNumber = numbers[i] * 2
doubled.push(newNumber)
}
console.log(doubled) //=> [2,4,6,8,10]
var numbers = [1,2,3,4,5]
var doubled = []
!
for(var i = 0; i < numbers.length; i++) {
var newNumber = numbers[i] * 2
doubled.push(newNumber)
}
console.log(doubled) //=> [2,4,6,8,10]
var numbers = [1,2,3,4,5]
var doubled = numbers.map(function(n) {
return n * 2
})
console.log(doubled) //=> [2,4,6,8,10]
var numbers = [1,2,3,4,5]!
!
!
!
!
!
var numbers = [1,2,3,4,5]!
var total = 0!
!
for(var i = 0; i < numbers.length; i++) {!
total += numbers[i]!
}!
console.log(total) //=> 15
var numbers = [1,2,3,4,5]!
var total = 0!
!
for(var i = 0; i < numbers.length; i++) {!
total += numbers[i]!
}!
console.log(total) //=> 15
var numbers = [1,2,3,4,5]!
!
var total = numbers.reduce(function(sum,n){!
return sum + n!
});!
console.log(total) //=> 15
programação imperativa
1. HOW
programação declarativa
WHAT
SELECT * FROM alunos WHERE idade < 30
SELECT * FROM alunos WHERE idade < 30
var doubled = [1,2,3].map(function(n) {
return n * 2
})
SELECT * FROM alunos WHERE idade < 30
var doubled = [1,2,3].map(function(n) {
return n * 2
})
var total = [1,2,3].reduce(function(sum,n){!
return sum + n!
});
Programação Funcional com Javascript
function f (x) {
return function (y) {
return x + y;
};
}
var a = f(5);
var b = a(3);
alert(b); // ????
first-class
functions
Programação Funcional com Javascript
higher-order
function
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
:closures:
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
a closure (...) is a
function or reference to a
function together with a
referencing environment
“
http://en.wikipedia.org/wiki/Closure_(computer_science)
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
:closure:
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Por quê?!
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
#comofas?!
Programação Funcional com Javascript
Programação Funcional com Javascript
a closure (...) is a
function or reference to a
function together with a
referencing environment
“
closure = function + environment
closure = function + environment
Programação Funcional com Javascript
Programação Funcional com Javascript
(
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
=
=
=
)
Programação Funcional com Javascript
closure = function + environment
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
...
E o Kiko ?!
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
Programação Funcional com Javascript
encapsulamento,
que é bom....
Programação Funcional com Javascript
>> “Alexandre Gomes”
>> undefined
>> undefined
Programação Funcional com Javascript
Yahoo Javascript
Module Pattern
P&Raprender.unb.br
Programação Funcional com Javascript

Mais conteúdo relacionado

PDF
fksdjfkldsjdsk
DOCX
Trabajo Práctico Viamichelin-Paola Catán
PPTX
Descubra al evasor fiscal
ODP
Smackdown
PDF
PDF
Mapa conceptual Aprendizaje Colaborativo
PDF
PM faszinatour_Sommerporgramm.pdf
PDF
Comenzamos el 16 de marzo de 2005
fksdjfkldsjdsk
Trabajo Práctico Viamichelin-Paola Catán
Descubra al evasor fiscal
Smackdown
Mapa conceptual Aprendizaje Colaborativo
PM faszinatour_Sommerporgramm.pdf
Comenzamos el 16 de marzo de 2005

Destaque (7)

PDF
Consejos para que_tengas_en_cuenta
PDF
Saowalak mook..
PPTX
Web Usability, Consistency, and Content Development 2015 Code(Her)-Hou-Tobolsky
PPTX
Evaluación ecológica rápida (1)
PDF
Plano de Ensino de Tópicos Avançados em Engenharia de Software
PDF
Usability for Web Designers
DOCX
Tp Eliseo Veron
Consejos para que_tengas_en_cuenta
Saowalak mook..
Web Usability, Consistency, and Content Development 2015 Code(Her)-Hou-Tobolsky
Evaluación ecológica rápida (1)
Plano de Ensino de Tópicos Avançados em Engenharia de Software
Usability for Web Designers
Tp Eliseo Veron
Anúncio

Mais de Alexandre Gomes (20)

PDF
Construção de Software - 1º/2017
PDF
TDDing com Javascript
PDF
Aprendendo a Aprender
PDF
UnB/PPCA/CS2016 - Projeto 2
PDF
Javascript do jeito certo
PDF
Construção de Software - 1º/2016
PDF
O Pensamento Ágil
PDF
Manifesto 2.0
PDF
Construção de Software - 1º semestre de 2014
PDF
Business Modeling
PDF
Design Thinking
PDF
Manifesto Ágil
PDF
Laboratório de Métodos Ágeis 1/2014 - Apresentação
PDF
Scraping by examples
KEY
Scraping by examples
PDF
OpenData, Web Semântica e afins.
KEY
Javascript do jeito certo
KEY
Javascript orientado a testes
ZIP
Escolhas 2.0
KEY
Computacao Invisivel
Construção de Software - 1º/2017
TDDing com Javascript
Aprendendo a Aprender
UnB/PPCA/CS2016 - Projeto 2
Javascript do jeito certo
Construção de Software - 1º/2016
O Pensamento Ágil
Manifesto 2.0
Construção de Software - 1º semestre de 2014
Business Modeling
Design Thinking
Manifesto Ágil
Laboratório de Métodos Ágeis 1/2014 - Apresentação
Scraping by examples
Scraping by examples
OpenData, Web Semântica e afins.
Javascript do jeito certo
Javascript orientado a testes
Escolhas 2.0
Computacao Invisivel
Anúncio

Último (11)

PPTX
Eng. Software - pontos essenciais para o início
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Utilizando code blockes por andre backes
PPTX
Design - Introdução a Gestalt e teoria das formas
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Eng. Software - pontos essenciais para o início
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Utilizando code blockes por andre backes
Design - Introdução a Gestalt e teoria das formas
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Viasol Energia Solar -Soluções para geração e economia de energia
Manejo integrado de pragas na cultura do algodão
Tipos de servidor em redes de computador.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Arquitetura de computadores - Memórias Secundárias
Termos utilizados na designação de relação entre pessoa e uma obra.pdf

Programação Funcional com Javascript

  • 6. Object ! Prototipo de Object ! pO = 1 Object.prototype.pO = 1
  • 7. A ! a = 2 var A = function() { this.a = 2; } Object ! Prototipo de Object ! pO = 1
  • 8. A ! a = 2 Prototipo de A ! Object ! Prototipo de Object ! pO = 1
  • 9. A ! a = 2 Prototipo de A ! A.prototype.pA = 3 Object ! Prototipo de Object ! pO = 1
  • 10. A ! a = 2 Prototipo de A ! pA = 3 A.prototype.pA = 3 Object ! Prototipo de Object ! pO = 1
  • 11. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 var B = function() { this.b = 4; } B ! b = 4
  • 12. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 Prototipo de B !
  • 13. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 Prototipo de B ! B.prototype = new A
  • 14. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 B.prototype = new A
  • 15. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 B.prototype = new A
  • 16. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 B.prototype = new A new A() ! a = 2
  • 17. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 B.prototype = new A new A() ! a = 2
  • 18. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 B.prototype.pB = 5
  • 19. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 B.prototype.pB = 5
  • 20. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5
  • 21. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x = new B()
  • 22. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x = new B() x new B() ! b = 4
  • 23. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x = new B() x new B() ! b = 4 Prototipo de B !
  • 24. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x new B() ! b = 4 Prototipo de B !
  • 25. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x.b x new B() ! b = 4 Prototipo de B ! ?
  • 26. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x new B() ! b = 4 Prototipo de B !
  • 27. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x.pB x new B() ! b = 4 Prototipo de B ! ?
  • 28. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x new B() ! b = 4 Prototipo de B !
  • 29. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x.a x new B() ! b = 4 Prototipo de B ! ?
  • 30. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x new B() ! b = 4 Prototipo de B !
  • 31. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x.pA x new B() ! b = 4 Prototipo de B ! ?
  • 32. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x new B() ! b = 4 Prototipo de B !
  • 33. A ! a = 2 Prototipo de A ! pA = 3 Object ! Prototipo de Object ! pO = 1 B ! b = 4 new A() ! a = 2 pB = 5 x.pO x new B() ! b = 4 Prototipo de B ! ?
  • 35. function f (x) { return function (y) { return x + y; }; } var a = f(5); var b = a(3); alert(b); // ????
  • 36. Javascript Alexandre Gomes princípios da programação funcional com
  • 37. programação imperativa 1. Bata bem todos os ingredientes ( menos o fermento) da massa no liquidificador, aproximadamente 2 a 3 minutos 2. Acrescente o fermento e bata por mais uns 15 segundos 3. Coloque em uma fôrma redonda, u n t a d a c o m m a n t e i g a e polvilhada com farinha de trigo 4. Asse por cerca de 40 minutos em forno médio (180º graus), preaquecido programação declarativa Comunique assim que estiver pronto. Não deixe o bolo queimar. Não deixe que abram o forno antes da hora.
  • 38. Buscar alunos com menos de 30 anos. alunos = [{nome: “Rodrigo”, idade: 30}, {nome: “Patricia”, idade: 20}, {nome: “Marcos”, idade: 33}, {nome: “Ricardo”, idade: 28} ]
  • 39. menores = [] ! for (int i = 1; i <= 4; i++) { aluno = alunos[i]; if (aluno.idade < 30) { menores.add(aluno); } } ! return menores; alunos = [{nome: “Rodrigo”, idade: 30}, {nome: “Patricia”, idade: 20}, {nome: “Marcos”, idade: 33}, {nome: “Ricardo”, idade: 28} ]
  • 40. menores = [] ! for (int i = 1; i <= 4; i++) { aluno = alunos[i]; if (aluno.idade < 30) { menores.add(aluno); } } ! return menores; alunos = [{nome: “Rodrigo”, idade: 30}, {nome: “Patricia”, idade: 20}, {nome: “Marcos”, idade: 33}, {nome: “Ricardo”, idade: 28} ] imperativa
  • 41. alunos = [{nome: “Rodrigo”, idade: 30}, {nome: “Patricia”, idade: 20}, {nome: “Marcos”, idade: 33}, {nome: “Ricardo”, idade: 28} ] Nome Idade 1 Rodrigo 30 2 Patricia 20 3 Marcos 33 4 Ricardo 28
  • 42. Nome Idade 1 Rodrigo 30 2 Patricia 20 3 Marcos 33 4 Ricardo 28 SELECT * FROM alunos WHERE idade < 30
  • 43. Nome Idade 1 Rodrigo 30 2 Patricia 20 3 Marcos 33 4 Ricardo 28 SELECT * FROM alunos WHERE idade < 30 declarativa
  • 44. menores = [] ! for (int i = 1; i <= 4; i++) { aluno = alunos[i]; if (aluno.idade < 30) { menores.add(aluno); } } ! return menores; alunos = [{nome: “Rodrigo”, idade: 30}, {nome: “Patricia”, idade: 20}, {nome: “Marcos”, idade: 33}, {nome: “Ricardo”, idade: 28} ] SELECT * FROM alunos WHERE idade < 30
  • 46. var numbers = [1,2,3,4,5]
  • 47. var numbers = [1,2,3,4,5] var doubled = [] ! for(var i = 0; i < numbers.length; i++) { var newNumber = numbers[i] * 2 doubled.push(newNumber) } console.log(doubled) //=> [2,4,6,8,10]
  • 48. var numbers = [1,2,3,4,5] var doubled = [] ! for(var i = 0; i < numbers.length; i++) { var newNumber = numbers[i] * 2 doubled.push(newNumber) } console.log(doubled) //=> [2,4,6,8,10] var numbers = [1,2,3,4,5] var doubled = numbers.map(function(n) { return n * 2 }) console.log(doubled) //=> [2,4,6,8,10]
  • 49. var numbers = [1,2,3,4,5]! ! ! ! ! !
  • 50. var numbers = [1,2,3,4,5]! var total = 0! ! for(var i = 0; i < numbers.length; i++) {! total += numbers[i]! }! console.log(total) //=> 15
  • 51. var numbers = [1,2,3,4,5]! var total = 0! ! for(var i = 0; i < numbers.length; i++) {! total += numbers[i]! }! console.log(total) //=> 15 var numbers = [1,2,3,4,5]! ! var total = numbers.reduce(function(sum,n){! return sum + n! });! console.log(total) //=> 15
  • 53. SELECT * FROM alunos WHERE idade < 30
  • 54. SELECT * FROM alunos WHERE idade < 30 var doubled = [1,2,3].map(function(n) { return n * 2 })
  • 55. SELECT * FROM alunos WHERE idade < 30 var doubled = [1,2,3].map(function(n) { return n * 2 }) var total = [1,2,3].reduce(function(sum,n){! return sum + n! });
  • 57. function f (x) { return function (y) { return x + y; }; } var a = f(5); var b = a(3); alert(b); // ????
  • 76. a closure (...) is a function or reference to a function together with a referencing environment “ http://en.wikipedia.org/wiki/Closure_(computer_science)
  • 92. a closure (...) is a function or reference to a function together with a referencing environment “
  • 93. closure = function + environment
  • 94. closure = function + environment
  • 97. (
  • 107. = = =
  • 108. )
  • 110. closure = function + environment
  • 114. ...
  • 115. E o Kiko ?!
  • 124. >> “Alexandre Gomes” >> undefined >> undefined