SlideShare uma empresa Scribd logo
1 de 76
Programación funcional
    con Javascript
             Leo Soto M.

    Lecture & Beer 2010, Continuum.
¿Programación funcional?
Scheme? ML? F#? Haskell?
Dos principios
Principio 1:

Olvida las variables. Existen valores y ya.
Principio 1:

Olvida las variables. Existen valores y ya.

¡Como en matemáticas!
variables == bugs
x = x + 1
x = x + 1 // -x
x = x + 1 // -x

x - x = x - x + 1
x = x + 1 // -x

x - x = x - x + 1

0    = 1
x = x + 1 // -x

x - x = x - x + 1

0     = 1
WTF
¡Pero esta charla no trata sobre ese principio!
> var foo = “estamos jodidos”
Principio 1I:

Las funciones son valores
Principio 1I:

Las funciones son valores primitivos
> var miVariable = 1
> var miVariable = 1
> var otraVariable = miVariable
> var miVariable = 1
> var otraVariable = miVariable
> typeof(miVariable)
number
> function miFuncion() { return 1 }
> typeof(miFuncion)
function
> function miFuncion() { return 1 }
> typeof(miFuncion)
function

> var otraFuncion = miFuncion;
> typeof(otraFuncion)
function
> function miFuncion() { return 1 }
> typeof(miFuncion)
function

> var otraFuncion = miFuncion;
> typeof(otraFuncion)
function

> typeof(otraFuncion())
number
Sintaxis equivalente:
> function f(x, y) { ... }
> var f = function(x, y) { ... }
Higher order functions:

Funciones que reciben funciones
function time(f) {
  start = new Date().getTime();
  f()
  end = new Date().getTime();
  print(“Milliseconds: ” +
        (start - end));
}
time(function() {
   var x = 1;
   for (var i = 2; i < 1000; i++) {
       x = x * i;
   }
})
Higher order functions:

Funciones que retornan funciones
$(“#edad”).blur(
   function() {
     validarRango(this, 18, 65);
   }
);
$(“#edad”).blur(
   validadorRango(18, 65)
);
function validadorRango(a, b) {
  return function() {
    var v = $(this).val();
    if (v < a || v > b) {
      alert(“Fuera de rango”);
    }
  }
}
¡Closures!
function validadorRango(a, b) {
  return function() {
    var v = $(this).val();
    if (v < a || v > b) {
      alert(“Fuera de rango”);
    }
  }
}
function validadorRango(a, b) {
  return function() {
    var v = $(this).val();
    if (v < a || v > b) {
      alert(“Fuera de rango”);
    }
  }
}

    ¡No se ejecuta inmediatamente!
function validadorRango(a, b) {
  return function() {
    var v = $(this).val();
    if (v < a || v > b) {
      alert(“Fuera de rango”);
    }
  }
}

     ¡No se ejecuta inmediatamente!
 ¡Pero puede acceder a valores de “afuera”!
Es como escribir macros, o plantillas
function validadorRango(a, b) {
  return function() {
    var v = $(this).val();
    if (v < a || v > b) {
      alert(“Fuera de rango”);
    }
  }
}
Primitivas funcionales:

  map, filter, reduce,
       any, all,
        partial
map
> function double(x) { return 2 * x }
> map([1, 2, 3], double)
[2, 4, 6]
function map(array, f) {
  var r = [];
  for (var i in array) {
    r.push(f(array[i]);
  }
  return r;
}
reduce
> function sum(x, y) { return x + y }
> function mul(x, y) { return x * y }
> reduce([1, 2, 3, 4], 0, sum)
10
> reduce([1, 2, 3, 4], 1, mul)
24
function reduce(array, inicial, f) {
  var r = inicial
  for (var i in array) {
    r = f(r, array[i]);
  }
  return r;
}
filter
> function par(x) {return x % 2 == 0}
> filter([1,2,3,4,5], par)
[2, 4]
function filter(array, f) {
  var r = [];
  for (var i in array) {
    if (f(array[i])) {
      r.push(array[i]);
    }
  }
  return r;
}
any
> function par(x) {return x % 2 == 0}
> any([1,2,3,4,5], par)
true
> any([1,3,5], par)
false
function any(array, f) {
  for (var i in array) {
    if (f(array[i])) {
      return true;
    }
  }
  return false;
}
all
> function par(x) {return x % 2 == 0}
> all([1,2,3,4,5], par)
false
> all([2,4,6], par)
true
function all(array, f) {
  for (var i in array) {
    if (!f(array[i])) {
      return false;
    }
  }
  return true;
}
function all(array, f) {
  return !any(array, function(x) {
    return !f(x)
  }
}
partial
> function mul(x, y) { return x * y }
> var double = partial(mul, 2)
> double(10)
20
function partial(f) {
  var fixedArgs = arguments.splice(
     1, arguments.length - 1);
  return function() {
     return f.apply(
        this,
        fixedArgs.concat(arguments)
     );
  };
}
Ejemplos
supers = filter(users, function(u) {
  return u.superuser;
}
names = map(supers, function(u) {
  return u.fullName;
});
function getprop(x) {
  return function(o) {
    return o[x];
  }
}
supers = filter(users,
                getprop(“superuser”))
names = map(supers,
            getprop(“fullName”))
filter(leagues, function(league) {
  return any(league.users,
             getprop(“unapproved”));
});
reduce(
  map(users, getprop(“age”)),
  -1,
  Math.max
)
Familiar feeling?



map(usuarios, f)        =~ SELECT f(usuario)
filter(usuarios, f)      =~ WHERE f(usuario)
any(usuarios, f)        =~ SOME(f(usuario))
all(usuarios, f)        =~ ALL(f(usuario))
reduce(usuarios, ...)   =~ MAX/MIN/AVG...
var phones = []
for (var i in users) {
  var user = users[i];
  var userPhones = [];
  if (user.phones[0]) {
    userPhones.push(user.phones[0]);
  }
  if (user.phones[1]) {
    userPhones.push(user.phones[1]);
  }
  phones.push(userPhones);
}
function first(n, array) {
  var r = [];
  for (var i = 0;
       i < Math.min(array.length, n);
       i++) {
    r.push(array[i]);
  }
  return r;
}
var phones = []
for (var i in users) {
  phones.push(
     first(2, users.phones)
  );
}
function compose(f, g) {
  return function(x) {
    return f(g(x));
  }
}
map(users,
    compose(partial(first, 2),
            getprop(“phones”)))
map(users, function(u) {
    return first(2, u.phones);
});
Implementaciones
Javascript 1.6 (Mozilla)


                                    array.map,
                                  array.filter
                                 array.reduce*
                                    array.some
                                   array.every




*Introducido en Javascript 1.8
JQuery




      $.map,
  $(“.foo”).map
$(“.foo”).filter
Underscore
 http://documentcloud.github.com/underscore/

_.map, _.reduce, _.detect, _.all, _.any,
              _.sortBy, ...

 _.first, _.rest, _.compact, _.flatten,
     _.uniq, _.zip, _.intersect, ...

     _.invoke, _.pluck, _.tap, ...

          _.keys, _.values, ...

       _.compose, _.bind, _.memoize
¡Eso!
¿Preguntas?

Mais conteúdo relacionado

Mais procurados (18)

Tipos basicos de java
Tipos basicos de javaTipos basicos de java
Tipos basicos de java
 
Programas en netbeans
Programas en netbeansProgramas en netbeans
Programas en netbeans
 
Arreglos en C++
Arreglos en C++Arreglos en C++
Arreglos en C++
 
Sudoku
SudokuSudoku
Sudoku
 
Lenguajec++
Lenguajec++Lenguajec++
Lenguajec++
 
Tema3 p2%20
Tema3 p2%20Tema3 p2%20
Tema3 p2%20
 
Descubriendo scala
Descubriendo scalaDescubriendo scala
Descubriendo scala
 
Parte 15
Parte 15Parte 15
Parte 15
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Resumen java
Resumen javaResumen java
Resumen java
 
Tipos de operadores_velazquez
Tipos de operadores_velazquezTipos de operadores_velazquez
Tipos de operadores_velazquez
 
Que es una funcion
Que es una funcionQue es una funcion
Que es una funcion
 
Tipos de operadores
Tipos de operadoresTipos de operadores
Tipos de operadores
 
Tipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquezTipos de operadores_dulce_velazquez
Tipos de operadores_dulce_velazquez
 
Ejercicios java
Ejercicios javaEjercicios java
Ejercicios java
 
Kruskal
KruskalKruskal
Kruskal
 
Control jtable con base de datos
Control jtable con base de datosControl jtable con base de datos
Control jtable con base de datos
 
Control jtable con base de datos
Control jtable con base de datosControl jtable con base de datos
Control jtable con base de datos
 

Semelhante a Javascript funcional

Semelhante a Javascript funcional (20)

Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)
 
Pf con scala
Pf con scalaPf con scala
Pf con scala
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Problemas resueltos de operaciones con funciones ccesa007
Problemas resueltos de operaciones con funciones  ccesa007Problemas resueltos de operaciones con funciones  ccesa007
Problemas resueltos de operaciones con funciones ccesa007
 
Recursividad
RecursividadRecursividad
Recursividad
 
Hack (Lenguaje de Programacion)
Hack (Lenguaje de Programacion)Hack (Lenguaje de Programacion)
Hack (Lenguaje de Programacion)
 
Pensando funcionalmente
Pensando funcionalmentePensando funcionalmente
Pensando funcionalmente
 
Funciones en php
Funciones en phpFunciones en php
Funciones en php
 
Guia derivadas i_2017
Guia derivadas i_2017Guia derivadas i_2017
Guia derivadas i_2017
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 
Matlab2009b -clase2
Matlab2009b  -clase2Matlab2009b  -clase2
Matlab2009b -clase2
 
ORM Doctrine
ORM DoctrineORM Doctrine
ORM Doctrine
 
Charla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptCharla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScript
 
Parte2
Parte2Parte2
Parte2
 
Funciones Básicas - EMdH
Funciones Básicas - EMdHFunciones Básicas - EMdH
Funciones Básicas - EMdH
 
Lab
LabLab
Lab
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
operaciones con funciones.pptx
operaciones con funciones.pptxoperaciones con funciones.pptx
operaciones con funciones.pptx
 

Mais de Leonardo Soto

El arte oscuro de estimar v3
El arte oscuro de estimar v3El arte oscuro de estimar v3
El arte oscuro de estimar v3Leonardo Soto
 
Una historia de ds ls en ruby
Una historia de ds ls en rubyUna historia de ds ls en ruby
Una historia de ds ls en rubyLeonardo Soto
 
El Lado Cool de Java
El Lado Cool de JavaEl Lado Cool de Java
El Lado Cool de JavaLeonardo Soto
 
Mi Arsenal de Testing en Rails
Mi Arsenal de Testing en RailsMi Arsenal de Testing en Rails
Mi Arsenal de Testing en RailsLeonardo Soto
 
Mapas en la web con Cloudmade
Mapas en la web con CloudmadeMapas en la web con Cloudmade
Mapas en la web con CloudmadeLeonardo Soto
 
Decent exposure: Controladores sin @ivars
Decent exposure: Controladores sin @ivarsDecent exposure: Controladores sin @ivars
Decent exposure: Controladores sin @ivarsLeonardo Soto
 
Sounds.gd lighting talk (RubyConf Uruguay)
Sounds.gd lighting talk (RubyConf Uruguay)Sounds.gd lighting talk (RubyConf Uruguay)
Sounds.gd lighting talk (RubyConf Uruguay)Leonardo Soto
 
Un tour por Java, Scala, Python, Ruby y Javascript
Un tour por Java, Scala, Python, Ruby y JavascriptUn tour por Java, Scala, Python, Ruby y Javascript
Un tour por Java, Scala, Python, Ruby y JavascriptLeonardo Soto
 
Lo que odiamos de la agilidad
Lo que odiamos de la agilidadLo que odiamos de la agilidad
Lo que odiamos de la agilidadLeonardo Soto
 
Jython: Python para la plataforma Java (EL2009)
Jython: Python para la plataforma Java (EL2009)Jython: Python para la plataforma Java (EL2009)
Jython: Python para la plataforma Java (EL2009)Leonardo Soto
 

Mais de Leonardo Soto (20)

El arte oscuro de estimar v3
El arte oscuro de estimar v3El arte oscuro de estimar v3
El arte oscuro de estimar v3
 
Caching tips
Caching tipsCaching tips
Caching tips
 
Una historia de ds ls en ruby
Una historia de ds ls en rubyUna historia de ds ls en ruby
Una historia de ds ls en ruby
 
El Lado Cool de Java
El Lado Cool de JavaEl Lado Cool de Java
El Lado Cool de Java
 
Dos Años de Rails
Dos Años de RailsDos Años de Rails
Dos Años de Rails
 
Dos años de Rails
Dos años de RailsDos años de Rails
Dos años de Rails
 
Mi Arsenal de Testing en Rails
Mi Arsenal de Testing en RailsMi Arsenal de Testing en Rails
Mi Arsenal de Testing en Rails
 
Mapas en la web con Cloudmade
Mapas en la web con CloudmadeMapas en la web con Cloudmade
Mapas en la web con Cloudmade
 
Startechconf
StartechconfStartechconf
Startechconf
 
RabbitMQ
RabbitMQRabbitMQ
RabbitMQ
 
Decent exposure: Controladores sin @ivars
Decent exposure: Controladores sin @ivarsDecent exposure: Controladores sin @ivars
Decent exposure: Controladores sin @ivars
 
The Hashrocket Way
The Hashrocket WayThe Hashrocket Way
The Hashrocket Way
 
Sounds.gd lighting talk (RubyConf Uruguay)
Sounds.gd lighting talk (RubyConf Uruguay)Sounds.gd lighting talk (RubyConf Uruguay)
Sounds.gd lighting talk (RubyConf Uruguay)
 
Un tour por Java, Scala, Python, Ruby y Javascript
Un tour por Java, Scala, Python, Ruby y JavascriptUn tour por Java, Scala, Python, Ruby y Javascript
Un tour por Java, Scala, Python, Ruby y Javascript
 
Lo que odiamos de la agilidad
Lo que odiamos de la agilidadLo que odiamos de la agilidad
Lo que odiamos de la agilidad
 
Oss
OssOss
Oss
 
App Engine
App EngineApp Engine
App Engine
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Tres Gemas De Ruby
Tres Gemas De RubyTres Gemas De Ruby
Tres Gemas De Ruby
 
Jython: Python para la plataforma Java (EL2009)
Jython: Python para la plataforma Java (EL2009)Jython: Python para la plataforma Java (EL2009)
Jython: Python para la plataforma Java (EL2009)
 

Último

Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 

Último (20)

Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 

Javascript funcional

Notas do Editor