Programación funcional

El estilo de programación que enfatiza la evaluación de
expresiones, antes que la ejecución de comandos. Los lenguajes funcionales ofrecen al
programador un buen número de recursos expresivos que permiten resolver
problemas complejos mediante programas pequeños y robustos. Entre ellos cabe
destacar: un sistema de tipos polimórficos que permite definir una amplia
variedad de estructuras de datos de uso genérico, la posibilidad de definir
funciones que aceptan otras funciones como argumentos y devuelven funciones
como resultado, facilidades para definir y manipular estructuras de datos
infinitas, un modelo computacional simple, claro y bien fundamentado, etc.
Características
Los programas escritos en un lenguaje funcional están
constituidos únicamente por definiciones de funciones, entendiendo éstas no
como subprogramas clásicos de un lenguaje imperativo, sino como funciones
puramente matemáticas, en las que se verifican ciertas propiedades como
la transparencia referencia(el significado de una expresión depende únicamente
del significado de sub expresiones), y por tanto, la carencia total
defectos colaterales.
Otras características propias de estos lenguajes son la no
existencia de asignaciones de variables y la falta de construcciones
estructuradas como la secuencia o la iteración (lo que obliga en la práctica a
que todas las repeticiones de instrucciones se lleven a cabo por medio
defunciones recursivas).
Existen dos grandes categorías de lenguajes funcionales:
los funcionales puros y los híbridos. La diferencia entre ambos estriba en que los
lenguajes funcionales híbridos son menos dogmáticos que los puros, al admitir
conceptos tomados de los lenguajes imperativos, como las secuencias de
instrucciones o la asignación de variables. En contraste, los lenguajes
funcionales puros tienen una mayor potencia expresiva, conservando a la vez su
transparencia referencial, algo que no se cumple siempre con un lenguaje
funcional híbrido.
Los lenguajes que podemos encontrar en la programación
funcional son:
1.-Lisp: El Lisp(oLISP) es una familia de lenguajes de
programación de computadora de tipo multiparadigma con una larga historia y un uso
intensivo de paréntesis en su sintaxis.
Especificado originalmente en 1958 por John McCarthyy sus
colaboradores en el Instituto Tecnológico de Massachusetts, el Lisp es el
segundo lenguajes de programación de alto nivel de mayor antigüedad entre los
que continúan teniendo un uso extendido en la actualidad; únicamente FORTRAN es
anterior.
Al igual que el FORTRAN, el Lisp ha cambiado mucho desde
sus comienzos, y han existido un gran número de dialectos en su historia. Hoy,
los dialectos Lisp de propósito general más ampliamente conocidos son el Common
Lispy el Scheme.
El Lisp fue creado originalmente como una notación
matemática práctica para los programas de computadora, basada en el cálculo
lambda de Alonzo Church. Se convirtió rápidamente en el lenguaje de
programación favorito en la investigación de la inteligencia artificial (AI).
Como lenguajes de programación precursor, el Lisp fue pionero en muchas ideas
en ciencias de la computación, incluyendo las estructuras de datos de árbol,
el manejo de almacenamiento automático, tipos dinámicos, y el compilador auto
contenido.
El nombre LISP deriva del "LIStProcessing" (Proceso
de Listas). Las listas encadenadas son una de las estructuras de datos
importantes del Lisp, y el código fuente del Lisp en sí mismo está compuesto de
listas. Como resultado, los programas de Lisp pueden manipular el código fuente
como una estructura de datos, dando lugar a los macrosistemas que permiten a
los programadores crear una nueva sintaxis de lenguajes de programación de
dominio específico empotrados en el Lisp.
Ejemplo
Lista
|
Número de términos
|
Términos
|
(HOLA)
|
1
|
HOLA
|
(ESTA ES UNA LISTA)
|
4
|
ESTA, ES, UNA, LISTA
|
((AB T56) HOLA ())
|
3
|
(AB T56), HOLA, ()
|
2.-Camel: Camel es un estilo de escritura que se aplica a
frases o palabras compuestas. El nombre se debe a que las mayúsculas a lo largo
de una palabra en Camel se asemejan a las jorobas de un camello. El nombre
Camel se podría traducir como Mayúsculas/Minúsculas Camello. El término case se
traduce como "caja tipográfica", que a su vez implica si una letra es
mayúscula o minúscula y tiene su origen en la disposición de los tipos móviles
en casilleros o cajas.
Existen dos tipos de Camel Case:
Upper Camel Case, cuando la primera letra de cada una de las
palabras es mayúscula.
Ejemplo: EjeploderCamelCase.
Lower Camel Case igual que la anterior,excepción de
que la primera letra es minúscula. Ejemplo: ejemplo de Lower Camel Case
3.- Hope: Hope es un pequeño lenguaje de programación
funcional desarrollado en los 70 en la Universidad de Edimburgo. Fue el primer lenguaje en contar con tipo de
datos algebraicos y evaluación call-by-patter.
Ejemplo
Expresión (E): 2 + 3 * 4;
Resultado(R): 14
(E): (2 + 3) * 4;
(R): 20
(E): (113 + 20) – (20 + 34);
(R): 69 : núm.
Resultado(R): 14
(E): (2 + 3) * 4;
(R): 20
(E): (113 + 20) – (20 + 34);
(R): 69 : núm.
4.-Erlang: Erlang es un lenguaje de programación
concurrente (u orientada a la concurrencia) y un sistema de ejecución que
incluye una máquina virtual (BEAM) y bibliotecas (OTP).
El subconjunto de programación secuencial de Erlang es un
lenguaje funcional, con evaluación estricta, asignación única, y tipado
dinámico. Fue diseñado en la compañía Ericsson para realizar aplicaciones
distribuidas, tolerantes a fallos, soft-real-time y de funcionamiento
ininterrumpido. Proporciona el cambio en caliente de código de forma que éste
se puede cambiar sin parar el sistema. Originalmente, Erlang era un lenguaje
propietario de Ericsson, pero fue cedido como software de código abierto en
1998. La implementación de Ericsson es principalmente interpretada, pero
también incluye un compilador HiPE (sólo soportado en algunas plataformas).
La creación, gestión y comunicación de procesos es sencilla
en Erlang, mientras que en muchos lenguajes, los hilos se consideran un
apartado complicado y propenso a errores. En Erlang toda concurrencia es
explícita.
Erlang recibe el nombre de A. K. Erlang. A veces se piensa
que el nombre es una abreviación de Ericsson Lenguaje, debido a su uso intensivo en
Ericsson. Según Bjarne Däcker -quien fue el jefe del Computer Science Lab en su
día-, esta dualidad es intencional.
Ejemplo
Operador
|
Descripción
|
Tipo
|
X > Y
|
X es mayor
que Y
|
Coerce
|
X < Y
|
X es menor
que Y
|
Coerce
|
X =< Y
|
X es igual
o menor que Y
|
Coerce
|
X >= Y
|
X es igual
o mayor que Y
|
Coerce
|
X == Y
|
X es igual
a Y
|
Coerce
|
X /= Y
|
X no es
igual a Y
|
Coerce
|
X =:= Y
|
X es igual
a Y
|
Exact
|
X =/= Y
|
X no es
igual a Y
|
Exact
|
Programación funcional con recursividad
En ciencias
de la computación, un sistema de tipos define cómo un lenguaje de
programación clasifica los valores y las expresiones en tipos,
cómo se pueden manipular estos tipos y cómo interactúan. Un tipo indica un
conjunto de valores que tienen el mismo significado genérico o propósito
(aunque algunos tipos, como los tipos de datos abstractos y tipos de datos
función, tal vez no representen valores en el programa que se está ejecutando).
Los sistemas de tipificación varían significativamente entre lenguajes, siendo
quizás las más importantes variaciones las que estén en sus implementaciones de
la sintáctica en tiempo de compilación y la operativa en tiempo de ejecución.
Técnicas de programación recursivas
Las funciones recursivas son aquellas que se invocan a
si mismas en algún momento de su ejecución. En análisis de Algoritmos las
técnicas recursivas se usan mucho para la solución de Problemas. Esta forma
en análisis de Algoritmos es llamada Divide
y Venceras. Para poder resolver un problema de forma recursiva es
necesario saber alguna solución no recursiva para alguno de los casos mas
sencillos. "Usamos la solución mas simple para resolver un
problema mas complejo" Así, todo método recursivo debe tener al menos
una sentencia que devuelva un resultado (la solución del caso más sencillo) y
las sentencias necesarias para acercarse en cada invocación a
ese caso. La recursión permite programar algoritmos aparentemente
complicados con un código simple y claro, ahorrando trabajo al programador. A
simple vista parece la solución perfecta para muchos problemas, pero hay que
tener en cuenta que en ocasiones ralentizará el programa en exceso
Tipos
Abstract Una clase abstract tiene al menos
un método abstracto. Una clase abstracta no se instancia, sino que se utiliza
como clase base para la herencia.
Final Una clase final se declara como la
clase que termina una cadena de herencia. No se puede heredar de una clase
final. Por ejemplo, la clase Math es una clase final.
Public Las clases public son accesibles
desde otras clases, bien sea directamente o por herencia. Son accesibles dentro
del mismo paquete en el que se han declarado. Para acceder desde otros
paquetes, primero tienen que ser importadas.
Synchronizable Este modificador especifica que todos los
métodos definidos en la clase son sincronizados, es decir, que no se puede
acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga
de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde
threads diferentes se puedan modificar las mismas variables sin que haya
problemas de que se sobre escriban.
link de un video
https://www.youtube.com/watch?v=pdbkwUDdfRk
link de un video
https://www.youtube.com/watch?v=pdbkwUDdfRk
Modelos de evaluación
Evaluación es el proceso
sistemático de recolección y análisis de datos con la finalidad de determinar
si es que, y hasta que punto, unos objetivos han sido o están siendo logrados.
La información resultante se pone al servicio de la toma de decisiones.
Aplicación
en rutinas en pseudocódigo
Generalmente se utiliza
pseudocódigo en los libros de texto y publicaciones científicas relacionadas
con la informática y la computación numérica, para la descripción de
algoritmos, de manera que todos los programadores puedan entenderlo, aunque no
todos conozcan el mismo lenguaje de programación. Generalmente, en los libros
de texto se adjunta una explicación que acompaña a la introducción y que explica
las convenciones particulares en uso. El nivel de detalle del pseudocódigo
puede, en algunos casos, acercarse a la de formalizar los idiomas de propósito
general.
Un programador que tiene
que aplicar un algoritmo específico, sobre todo uno des familiarizado,
generalmente comienza con una descripción en pseudocódigo, y luego
"traduce" esa descripción en el lenguaje de programación meta y lo
modifica para que interactúen correctamente el resto del programa. Los
programadores también pueden iniciar un proyecto describiendo la forma del
código en pseudocódigo en el papel antes de escribirlo en su lenguaje de
programación, como ocurre en la estructuración de un enfoque de Top-down y
Bottomup arriba hacia abajo.
Programación
orientada a objetos
Es un paradigma de programación que usa objetos y sus
interacciones, para diseñar aplicaciones y programas informáticos. Está basado
en varias técnicas, incluyendo herencia, abstracción, polimorfismo y
encapsulamiento. Su uso se popularizó a principios de la década de los años
1990. En la actualidad, existe variedad de lenguajes de programación que
soportan la orientación a objetos.
La programación orientada a objetos es una forma de
programar que trata de encontrar una solución a estos problemas. Introduce
nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre
ellos destacan los siguientes:
link de un video

link de un video
Abstracción

Abstracción (informática):La abstracción consiste en aislar
un elemento de su contexto o del resto de los elementos que lo acompañan. ...
La abstracción encarada desde el punto de vista de la programación orientada a
objetos expresa las características esenciales de un objeto, las cuales
distinguen al objeto de los demás.
Abstracción de Entidades: Es un
objeto que representa un modelo útil de una entidad que se desea.
Abstracción de Acciones: Un
objeto que representa un conjunto de operaciones y todas ellas desempeñan
funciones del mismo tipo.
Abstracción de Máquinas
virtuales: Un objeto que agrupa operaciones, todas ellas
virtuales, utilizadas por algún nivel superior de control u operaciones (entre
ellos podríamos hablar de un circuito).
Abstracción de
coincidencia: Un objeto que almacena un conjunto de
operaciones que no tienen relación entre sí.
Encapsulamiento
En programación modular, y más específicamente en
programación orientada a objetos, se denomina encapsulamiento al ocultamiento
del estado, es decir, de los datos miembro de un objeto de manera que solo se
pueda cambiar mediante las operaciones definidas para ese objeto.
Clases
La encapsulación da lugar a que las clases se dividan en
dos partes:
Interfaz:Captura la visión externa de una clase, abarcando
la abstracción del
comportamiento común a los ejemplos de esa clase.
Implementación: Comprende la representación de la
abstracción, así como los mecanismos que conducen al comportamiento deseado.
Formas de encapsular
Estándar: (Predeterminado)
Abierto: Hace que el miembro de la clase pueda ser accedido
desde el exterior de la Clase y cualquier parte del programa.
Protegido: Solo es accesible desde la Clase y las clases
que heredan (a cualquier nivel).
Semi cerrado : Solo es accesible desde la clase heredada.
Cerrado: Solo es accesible desde la Clase.
Ventajas
Lo que hace el usuario puede ser controlado internamente
(incluso sus errores), evitando que todo colapse por una intervención
indeseada.
Al hacer que la mayor parte del código esté oculto, se
pueden hacer cambios y/o mejoras sin que eso afecte el modo de como los
usuarios van a utilizar el código.
Principio
de ocultación
Cada objeto está aislado del exterior, es un módulo
natural, y cada tipo de objeto expone una "interfaz" a otros objetos
que específica cómo pueden interactuar con los objetos de la clase. El
aislamiento protege a las propiedades de un objeto contra su modificación por
quien no tenga derecho a acceder a ellas; solamente los propios métodos
internos del objeto pueden acceder a su estado. Esto asegura que otros objetos
no puedan cambiar el estado interno de un objeto de manera inesperada,
eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes
relajan esto, permitiendo un acceso directo a los datos internos del objeto de
una manera controlada y limitando el grado de abstracción. La aplicación entera
se reduce a un agregado o rompecabezas de objetos.
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos,
pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el
comportamiento correspondiente al objeto que se esté usando. O, dicho de otro
modo, las referencias y las colecciones de objetos pueden contener objetos de
diferentes tipos, y la invocación de un comportamiento en una referencia
producirá el comportamiento correcto para el tipo real del objeto referenciado.
Cuando esto ocurre en "tiempo de ejecución", esta última característica
se llama asignación tardía o asignación dinámica. Algunos lenguajes
proporcionan medios más estáticos (en "tiempo de compilación") de
polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
Herencia
Las clases no se encuentran aisladas, sino que se
relacionan entre sí, formando una jerarquía de clasificación. Los objetos
heredan las propiedades y el comportamiento de todas las clases a las que
pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Estos pueden compartir (y extender) su
comportamiento sin tener que volver a implementarlo. Esto suele hacerse
habitualmente agrupando los objetos en clases y estas en árboles o enrejados
que reflejan un comportamiento común. Cuando un objeto hereda de más de una
clase se dice que hay herencia múltiple; siendo de alta complejidad técnica por
lo cual suele recurrirse a la herencia virtual para evitar la duplicación de
datos.
Lenguaje
*C++: es un lenguaje de programación diseñado a mediados de
los años 1979 por Bjarne Stroustrup. La intención de su creación fue el
extender al lenguaje de programación C mecanismos que permiten la manipulación
de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados
a objetos, el C++ es un lenguaje híbrido.
*Java: es un lenguaje de programación de propósito general,
concurrente, orientado a objetos, que fue diseñado específicamente para tener
tan pocas dependencias de implementación como fuera posible. Su intención es
permitir que los desarrolladores de aplicaciones escriban el programa una vez y
lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o
"write once, run anywhere"), lo que quiere decir que el código que es
ejecutado en una plataforma no tiene que ser recompilado para correr en otra.
Java es, a partir de 2012, uno de los lenguajes de programación más populares
en uso, particularmente para aplicaciones de cliente-servidor de web, con unos
diez millones de usuarios reportados.23
*C# (pronunciado si sharp en inglés) es un lenguaje de
programación orientado a objetos desarrollado y estandarizado por Microsoft
como parte de su plataforma .NET, que después fue aprobado como un estándar por
la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de
programación diseñados para la infraestructura de lenguaje común.
Su sintaxis básica deriva de C/C++ y utiliza el modelo de
objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras
derivadas de otros lenguajes.
Objeto
Instancia de una clase. Entidad provista de un conjunto de
propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos),
los mismos que consecuentemente reaccionan a eventos. Se corresponden con los
objetos reales del mundo que nos rodea, o con objetos internos del sistema (del
programa).
Clase
Una clase se puede definir de las propiedades y
comportamiento de un tipo de objeto concreto. La instanciación es la lectura de
estas definiciones y la creación de un objeto a partir de ella.
Herencia
Por ejemplo, herencia de la clase C a la clase D, es la
facilidad mediante la cual la clase D hereda en ella cada uno de los atributos
y operaciones de C, como si esos atributos y operaciones hubiesen sido
definidos por la misma D. Por lo tanto, puede usar los mismos métodos y
variables registrados como "públicos" (public) en C. Los componentes
registrados como "privados" (private) también se heredan pero se
mantienen escondidos al programador y sólo pueden ser accedidos a través de
otros métodos públicos. Para poder acceder a un atributo u operación de una
clase en cualquiera de sus subclases pero mantenerla oculta para otras clases
es necesario registrar los componentes como "protegidos" (protected),
de esta manera serán visibles en C y en D pero no en otras clases.
Aplicación
en rutina en pseudocódigo
// my first
program in C++
#include
<iostream>
using namespace std;
int main ()
{
cout
<< "Hello World!";
return 0;
}
La
programación dirigida por eventos

Es un paradigma de
programación en el que el flujo del programa está determinado por eventos o
mensajes desde otros programas o hilos de ejecución.
Las aplicaciones desarrolladas
con programación dirigida por eventos implementan un bucle principal o main
loop donde se ejecutan las dos secciones principales de la aplicación: El
selector de eventos y el manejador de eventos.
link de un video
https://www.youtube.com/watch?v=i-VmENiPWwA
https://www.youtube.com/watch?v=TrSGxPE0bZs
Características
Al comenzar la ejecución del
programa se llevarán a cabo las inicializaciones y demás código inicial y a
continuación el programa quedará bloqueado hasta que se produzca algún evento.
2. Cuando alguno de los
eventos esperados por el programa tenga lugar, el programa pasará a ejecutar
elcódigo del correspondiente administrador de evento.
3. puede emplearse también para desarrollar
interfaces entre componentes de Software o módulos del núcleo.
4. la programación orientada a
eventos permite interactuar con el usuario en cualquier momento de la
ejecución.
5. los programas creados bajo esta arquitectura
se componen por un bucle exterior permanente encargado de recoger los eventos y procesos que se encargan de tratarlos
Lenguaje
JavaScript :(abreviado
comúnmente JS) es un lenguaje de programación interpretado, dialecto del
estándar ECMAScript. Se define como orientado a objetos,3 basado en
prototipos, imperativo, débilmente tipado y dinámico.
Visual C++: (también conocido
como MSVC++, Microsoft Visual C++) es un entorno de desarrollo integrado (IDE)
para lenguajes de programación C, C++ y C++/CLI.
Visual C# es uno de los
lenguajes de programación de alto nivel que pertenecen al paquete .NET otros
lenguajes son Visual Basic, C/C++. Con
él se pueden escribir tanto programas convencionales como para Internet.
Visual J# 2005 permite a los
desarrolladores utilizar la sintaxis del lenguaje Java para generar
aplicaciones y servicios que se ejecutarán en .NET Framework. Visual J# integra
la sintaxis de Java en el entorno de desarrollo integrado (IDE) de Visual
Studio®. Visual J# también admite la mayor parte de la funcionalidad de Visual
J++ 6.0®, incluyendo las extensiones de Microsoft. Visual J# no es una
herramienta para desarrollar aplicaciones que se ejecuten en una máquina
virtual de Java. Las aplicaciones y servicios generadas con Visual J# sólo se
ejecutarán en .NET Framework. Visual J# ha sido desarrollado independientemente
por Microsoft. No está refrendado ni aprobado por Sun Microsystems, Inc.
Elementos
secuenciales, simultáneos o concurrentes
Los eventos secuenciales son
una forma de programación también conocida como programación dirigida por
eventos, esto es un paradigma de programación en el que tanto la estructura
como la ejecución de los programas van determinados por los sucesos que ocurran
en el sistema, definidos por el usuario o que ellos mismos provoquen.
Para entender la programación
dirigida por eventos, podemos oponerla a lo que no es: mientras en la
programación secuencial (o estructurada) es el programador el que define cuál
va a ser el flujo del programa, en la programación dirigida por eventos será el
propio usuario —o lo que sea que esté accionando el programa— el que dirija el
flujo del programa.
Aunque en la programación secuencial puede
haber intervención de un agente externo al programa, estas intervenciones
ocurrirán cuando el programador lo haya determinado, y no en cualquier momento
como puede ser en el caso de la programación dirigida por eventos.
Multitareas
En esta entrada introduciremos
el concepto de programación multitarea en microcontroladores. En una
computadora normal, es el sistema operativo el que reparte el tiempo de
procesador (o procesadores) y los recursos entre todas las aplicaciones y
tareas que estamos ejecutando.
Basado
en procesos
Los procesos que se comunican
entre sí para
Intercambiar datos.
En ambas situaciones se
necesita que los procesos sincronicen su ejecución, para evitar conflictos o establecer
contacto para el intercambio de datos. La interacción entre procesos se logra
mediante variables compartidas o bien mediante el paso de mensajes. Además la
interacción puede ser explícita, si aparece en la descripción del programa, o
implícita, si aparece durante la ejecución del programa.
Basado
en hebras
Los programas que se van a
describir se ejecutan empleando sistemas operativos como Windows 95 o superior.
Una de las características de estos sistemas operativos es el de ser
multitarea, lo que quiere decir que se pueden ejecutar dos o más programas concurrentemente.
Estos programas comparten el tiempo de ejecución e incluso pueden acceder a las
mismas variables, lo que presentará ciertos problemas que será necesario
resolver. Se admiten dos formas de multitarea: basada en procesos y basada en
hebras.
Se emplea aquí el segundo
tipo, multitarea basada en hebras (threads). Un thread o hebra es una unidad
remitente de código ejecutable, es decir, un camino de ejecución dentro de un
proceso. El nombre proviene del concepto “hebra en ejecución”. Todos los procesos
tienen una hebra como mínimo, pudiendo tener varias. Así, es posible que un
proceso tenga dos o más de sus fragmentos ejecutándose simultáneamente.
Aplicación
en rutinas de pseudocódigo
While (true){
Switch (event){
case mousse_button_down:
case mouse_click:
case keypressed:
case Else:
}
}
Bibliografía
(s.f.). Obtenido de https://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica)
Alvarez, Y. (17 de 5 de 2013). manejo de tecnicas de programacion. Obtenido de http://programacionfuncionalconrecursividad.blogspot.com/
buenas tareas. (22 de 6 de 2012). Obtenido de http://www.buenastareas.com/ensayos/Programacion-Dirigida-Por-Eventos/4618913.html
campos, o. (21 de 7 de 2011). genbeta: de v. Obtenido de https://www.genbetadev.com/paradigmas-de-programacion/introduccion-a-la-programacion-dirigida-por-eventos
ecured. (4 de 6 de 2018). ecu red. Obtenido de https://www.ecured.cu/Programaci%C3%B3n_Orientada_a_Objetos
ecured. (4 de 6 de 2018). ecured. Obtenido de https://www.ecured.cu/Encapsulamiento
inc, b. b. (9 de 5 de 2013). programacion funcional. Obtenido de http://programacionfuncionalconalep209.blogspot.com/2013/05/programacion-funcional-con-recursividad.html
Ivan, J. (4 de 5 de 2013). programacion dirigida por eventos. Obtenido de http://programaciondirigidaporeventos.blogspot.com/2013/05/programacion-dirigida-por-eventos-y.html
jimenez, j. (4 de 5 de 2013). manejo de tecnicas de programacion. Obtenido de http://javierjimenez30.blogspot.com/2013/05/aplicacion-de-rutinas-en-pseudocodigo.html
Lara, D. (7 de 7 de 2015). styde. Obtenido de https://styde.net/abstraccion-programacion-orientada-a-objetos/
LeeLyys. (8 de 5 de 2014). blogdiario.com hispavista. Obtenido de http://leelyys.blogspot.es/1399508096/programacion-funcional-con-recursividad-/
MAGIMAGIKARP. (2 de 3 de 2016). programacion dirigida por eventos. Obtenido de https://abelmartinblog.wordpress.com/2016/03/02/eventos-secuenciales-simultaneos-concurrentes/
Minsky, J. M. (1958). ecured conocimiento con todos y para todos. Obtenido de https://www.ecured.cu/LISP
ProgramacionCv. (25 de 5 de 2017). blogdiario.comhispavista. Obtenido de http://programacioncv.blogspot.es/1495790427/programacion-funcional-concepto-caracteristicas-y-lenguajes-/
Rosendo. (15 de 5 de 2013). tecnicas de programacion. Obtenido de http://progfuncional.blogspot.com/2013/05/visual-j.html
Velázquez, C. A. (s.f.). programacion computacional. Obtenido de http://informaticabachilleratoitea.blogspot.com/p/visual-c.html
wikilibros. (20o de 8 de 2014). wikilibros libros libres pra un mundo libre. Obtenido de https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Erlang/Ejemplos_peque%C3%B1os_del_lenguaje
wikipedia. (11 de 8 de 2015). wikipedia. Obtenido de https://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica)
wikipedia. (31 de 5 de 2018). wikipedia. Obtenido de https://es.wikipedia.org/wiki/C%2B%2B#Ejemplos
wikipedia. (30 de 5 de 2018). wikipedia. Obtenido de https://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)
wikipedia. (28 de 5 de 2018). wikipedia. Obtenido de https://es.wikipedia.org/wiki/C_Sharp
wikipedia. (23 de 5 de 2018). wikipedia. Obtenido de https://es.wikipedia.org/wiki/JavaScript
wikipedia. (11 de 5 de 2018). wikipedia. Obtenido de https://es.wikipedia.org/wiki/Visual_C%2B%2B
wikipedia. (5 de 3 de 2018). wikipedia. Obtenido de https://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventos
wipedia. (30 de 5 de 2018). wikipedia. Obtenido de https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
No hay comentarios.:
Publicar un comentario