You are on page 1of 18

INSTITUTO TECNOLGICO SUPERIOR

DE ALVARADO
INGENIERA EN SISTEMAS
COMPUTACIONALES
Materia:
Programacin Lgica y Funcional

Semestre-Grupo:
SEXTO SEMESTRE GRUPO YK

Producto Acadmico:
Investigacin:
Distintos tipos de Programacin

Presenta:
Martin Cruz Valenzuela

Docente:
ING. Sdney Rene Toledo Martnez

H. Y G. MEDELLIN, VER. Marzo 2015

ndice
Introduccin..................................................................................................... 1

Objetivo............................................................................................................. 2

Principales tipos de programacin que existen.........................................3

Programacin imperativa.............................................................................................................................. 3

Programacin orientada a objetos............................................................................................................... 4

Programacin funcional................................................................................................................................ 9

Programacin lgica.................................................................................................................................... 10

Conclusin...................................................................................................... 11

Bibliografa..................................................................................................... 12

Introduccin.
Los tipos o tcnicas de programacin son bastante variados, aunque puede que
muchos de los lectores slo conozcan una metodologa para realizar programas.
En la mayora de los casos, las tcnicas se centran en programacin modular y
programacin estructurada, pero existen otros tipos de programacin. Los
explicaremos a lo largo del artculo.
La programacin estructurada est compuesta por un conjunto de tcnicas que
han ido evolucionando aumentando considerablemente la productividad del
programa reduciendo el tiempo de depuracin y mantenimiento del mismo.
Esta programacin estructurada utiliza un nmero limitado de estructuras de
control, reduciendo as considerablemente los errores.

Pgina 1 de 18

Objetivo.
Dar a conocer los distintos tipos de programacin que existen y sus lenguajes.

Pgina 2 de 18

Principales tipos de programacin que


existen

Programacin imperativa
La programacin imperativa, en contraposicin a la programacin declarativa, es
un paradigma de programacin que describe la programacin en trminos del
estado del programa y sentencias que cambian dicho estado. Los programas
imperativos son un conjunto de instrucciones que le indican al computador cmo
realizar una tarea.
La implementacin de hardware de la mayora de computadores es imperativa;
prcticamente todo el hardware de los computadores est diseado para ejecutar
cdigo de mquina, que es nativo al computador, escrito en una forma imperativa.
Esto se debe a que el hardware de los computadores implementa el paradigma de
las Mquinas de Turing. Desde esta perspectiva de bajo nivel, el estilo del
programa est definido por los contenidos de la memoria, y las sentencias son
instrucciones en el lenguaje de mquina nativo del computador (por ejemplo el
lenguaje ensamblador).
Los lenguajes imperativos de alto nivel usan variables y sentencias ms
complejas, pero an siguen el mismo paradigma. Las recetas y las listas de
revisin de procesos, a pesar de no ser programas de computadora, son tambin
conceptos familiares similares en estilo a la programacin imperativa; donde cada
paso es una instruccin.
Son aquellos cuyos valores son atmicos y estn formados por elementos en un
caso especial.
Los primeros lenguajes imperativos fueron los lenguajes de mquina de los
computadores originales. En estos lenguajes, las instrucciones fueron muy
simples, lo cual hizo la implementacin de hardware fcil, pero obstruyendo la
creacin de programas complejos. Fortran, cuyo desarrollo fue iniciado en 1954
por John Backus en IBM, fue el primer gran lenguaje de programacin en superar
los obstculos presentados por el cdigo de mquina en la creacin de programas
complejos.

Pgina 3 de 18

Algunos lenguajes imperativos

BASIC
C
D1
Fortran
Pascal
Pauscal en espaol
Perl
PHP
Lua
Java
Python
Go

Pgina 4 de 18

Programacin orientada a objetos

La programacin orientada a objetos (POO, u OOP segn sus siglas en ingls) es


un paradigma de programacin que usa objetos en sus interacciones, para disear
aplicaciones y programas informticos.
Est basada en varias tcnicas, incluyendo herencia, cohesin, abstraccin,
polimorfismo, acoplamiento y encapsulamiento.
Su uso se populariz a principios de la dcada de 1990. En la actualidad, existe
una gran variedad de lenguajes de programacin que soportan la orientacin a
objetos.
Los objetos son entidades que tienen un determinado "estado", "comportamiento
(mtodo)" e "identidad":
El estado est compuesto de datos o informaciones; sern uno o varios atributos a
los que se habrn asignado unos valores concretos (datos).
El comportamiento est definido por los mtodos o mensajes a los que sabe
responder dicho objeto, es decir, qu operaciones se pueden realizar con l.
La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con
otras palabras, es su identificador (concepto anlogo al de identificador de una
variable o una constante).
Un objeto contiene toda la informacin que permite definirlo e identificarlo frente a
otros objetos pertenecientes a otras clases e incluso frente a objetos de una
misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez,
los objetos disponen de mecanismos de interaccin llamados mtodos, que
favorecen la comunicacin entre ellos.
Esta comunicacin favorece a su vez el cambio de estado en los propios objetos.
Esta caracterstica lleva a tratarlos como unidades indivisibles, en las que no se
separa el estado y el comportamiento.

Pgina 5 de 18

Los mtodos (comportamiento) y atributos (estado) estn estrechamente


relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase
requiere de mtodos para poder tratar los atributos con los que cuenta.
El programador debe pensar indistintamente en ambos conceptos, sin separar ni
darle mayor importancia a alguno de ellos. Hacerlo podra producir el hbito
errneo de crear clases contenedoras de informacin por un lado y clases con
mtodos que manejen a las primeras por el otro.
De esta manera se estara realizando una "programacin estructurada camuflada"
en un lenguaje de POO.
La programacin orientada a objetos difiere de la programacin estructurada
tradicional, en la que los datos y los procedimientos estn separados y sin
relacin, ya que lo nico que se busca es el procesamiento de unos datos de
entrada para obtener otros de salida.
La programacin estructurada anima al programador a pensar sobre todo en
trminos de procedimientos o funciones, y en segundo lugar en las estructuras de
datos que esos procedimientos manejan.
En la programacin estructurada solo se escriben funciones que procesan datos.
Los programadores que emplean POO, en cambio, primero definen objetos para
luego enviarles mensajes solicitndoles que realicen sus mtodos por s mismos.
Conceptos fundamentales
La POO es una forma de programar que trata de encontrar una solucin a estos
problemas. Introduce nuevos conceptos, que superan y amplan conceptos
antiguos ya conocidos. Entre ellos destacan los siguientes:
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto.
La instanciacin es la lectura de estas definiciones y la creacin de un objeto a
partir de ella.
Herencia
Pgina 6 de 18

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 mtodos y variables pblicas declaradas en C. Los
componentes registrados como "privados" (private) tambin se heredan, pero
como no pertenecen a la clase, se mantienen escondidos al programador y slo
pueden ser accedidos a travs de otros mtodos pblicos. Esto es as para
mantener hegemnico el ideal de POO.
Objeto
Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad (mtodos), 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). Es
una instancia a una clase.
Mtodo
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se
desencadena tras la recepcin de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un
cambio en las propiedades del objeto, o la generacin de un "evento" con un
nuevo mensaje para otro objeto del sistema.
Evento
Es un suceso en el sistema (tal como una interaccin del usuario con la mquina,
o un mensaje enviado por un objeto). El sistema maneja el evento enviando el
mensaje adecuado al objeto pertinente. Tambin se puede definir como evento la
reaccin que puede desencadenar un objeto; es decir, la accin que genera.
Atributos
Caractersticas que tiene la clase.
Mensaje
Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus
mtodos con ciertos parmetros asociados al evento que lo gener.
Propiedad o atributo

Pgina 7 de 18

Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos),


que hace los datos visibles desde fuera del objeto y esto se define como sus
caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin
de algn mtodo.
Estado interno
Es una variable que se declara privada, que puede ser nicamente accedida y
alterada por un mtodo del objeto, y que se utiliza para indicar distintas
situaciones posibles para el objeto (o clase de objetos). No es visible al
programador que maneja una instancia de la clase.
Componentes de un objeto
Atributos, identidad, relaciones y mtodos.
Identificacin de un objeto
Un objeto se representa por medio de una tabla o entidad que est compuesta por
sus atributos y funciones correspondientes.
En comparacin con un lenguaje imperativo, una "variable" no es ms que un
contenedor interno del atributo del objeto o de un estado interno, as como la
"funcin" es un procedimiento interno del mtodo del objeto.

Caractersticas de la POO
Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a
objetos". Las caractersticas siguientes son las ms importantes:
Abstraccin
Denota las caractersticas esenciales de un objeto, donde se capturan sus
comportamientos. Cada objeto en el sistema sirve como modelo de un "agente"
abstracto que puede realizar trabajo, informar y cambiar su estado, y
"comunicarse" con otros objetos en el sistema sin revelar "cmo" se implementan
estas caractersticas. Los procesos, las funciones o los mtodos pueden tambin
ser abstrados, y, cuando lo estn, una variedad de tcnicas son requeridas para
ampliar una abstraccin. El proceso de abstraccin permite seleccionar las
caractersticas relevantes dentro de un conjunto e identificar comportamientos
Pgina 8 de 18

comunes para definir nuevos tipos de entidades en el mundo real. La abstraccin


es clave en el proceso de anlisis y diseo orientado a objetos, ya que mediante
ella podemos llegar a armar un conjunto de clases que permitan modelar la
realidad o el problema que se quiere atacar.
Encapsulamiento
Significa reunir todos los elementos que pueden considerarse pertenecientes a
una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar la
cohesin (diseo estructurado) de los componentes del sistema. Algunos autores
confunden este concepto con el principio de ocultacin, principalmente porque se
suelen emplear conjuntamente.
Modularidad
Se denomina "modularidad" a la propiedad que permite subdividir una aplicacin
en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan
independiente como sea posible de la aplicacin en s y de las restantes partes.
Estos mdulos se pueden compilar por separado, pero tienen conexiones con
otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la
modularidad de diversas formas.
Principio de ocultacin
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto
expone una "interfaz" a otros objetos que especifica cmo pueden interactuar con
los objetos de la clase. El aislamiento protege a las propiedades de un objeto
contra su modificacin por quien no tenga derecho a acceder a ellas; solamente
los propios mtodos 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
abstraccin. La aplicacin entera se reduce a un agregado o rompecabezas de
objetos.

Polimorfismo

Pgina 9 de 18

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 invocacin de un comportamiento en una referencia producir el
comportamiento correcto para el tipo real del objeto referenciado.
Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama
asignacin tarda o asignacin dinmica. Algunos lenguajes proporcionan medios
ms estticos (en "tiempo de compilacin") 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 jerarqua de clasificacin. 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 comn. Cuando
un objeto hereda de ms de una clase se dice que hay herencia mltiple; siendo
de alta complejidad tcnica por lo cual suele recurrirse a la herencia virtual para
evitar la duplicacin de datos.
Recoleccin de basura
La recoleccin de basura (garbage collection) es la tcnica por la cual el entorno
de objetos se encarga de destruir automticamente, y por tanto desvincular la
memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos.
Esto significa que el programador no debe preocuparse por la asignacin o
liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la
liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que
se extendieron para soportar el Paradigma de Programacin Orientada a Objetos
como C++ u Object Pascal, esta caracterstica no existe y la memoria debe
desasignarse expresamente.

Pgina 10 de 18

Programacin funcional
En ciencias de la computacin, la programacin funcional es un paradigma de
programacin declarativa basado en la utilizacin de funciones aritmticas que no
maneja datos mutables o de estado. Enfatiza la aplicacin de funciones, en
contraste con el estilo de programacin imperativa, que enfatiza los cambios de
estado. La programacin funcional tiene sus races en el clculo lambda, un
sistema formal desarrollado en los aos 1930 para investigar la definicin de
funcin, la aplicacin de las funciones y la recursin. Muchos lenguajes de
programacin funcionales pueden ser vistos como elaboraciones del clculo
lambda.
En la prctica, la diferencia entre una funcin matemtica y la nocin de una
"funcin" utilizada en la programacin imperativa es que las funciones imperativas
pueden tener efectos secundarios, al cambiar el valor de clculos realizados
previamente.
Por esta razn carecen de transparencia referencial, es decir, la misma expresin
sintctica puede resultar en valores diferentes en diferentes momentos
dependiendo del estado del programa siendo ejecutado.
Con cdigo funcional, en contraste, el valor generado por una funcin depende
exclusivamente de los argumentos alimentados a la funcin. Al eliminar los efectos
secundarios se puede entender y predecir el comportamiento de un programa
mucho ms fcilmente, y esta es una de las principales motivaciones para utilizar
la programacin funcional.

Pgina 11 de 18

Los lenguajes de programacin funcional, especialmente los que son puramente


funcionales, han sido enfatizados en el ambiente acadmico principalmente y no
tanto en el desarrollo de software comercial. Sin embargo, lenguajes de
programacin importantes tales como Scheme, Erlang, Rust, Objective Caml y
Haskell, han sido utilizados en aplicaciones comerciales e industriales por muchas
organizaciones.
La programacin funcional tambin es utilizada en la industria a travs de
lenguajes de dominio especfico como R (estadstica), Mathematica (matemticas
simblicas), J y K (anlisis financiero), F# en Microsoft.NET y XSLT (XML).
Lenguajes de uso especfico usados comnmente como SQL y Lex/Yacc, utilizan
algunos elementos de programacin funcional, especialmente al procesar valores
mutables. Las hojas de clculo tambin pueden ser consideradas lenguajes de
programacin funcional.
La programacin funcional tambin puede ser desarrollada en lenguajes que no
estn diseados especficamente para la programacin funcional. En el caso de
Perl, por ejemplo, que es un lenguaje de programacin imperativo, existe un libro
que describe como aplicar conceptos de programacin funcional.
JavaScript, uno de los lenguajes ms ampliamente utilizados en la actualidad,
tambin incorpora capacidades de programacin funcional. Python tambin
incorpora particularidades de los lenguajes funcionales como listas de
comprensin y funciones de tratamiento de listas como matemtica de conjuntos.
Java en su versin 8, esta incorporando la programacin funcional, as como el
uso de las expresiones lambda.
Caractersticas
Los programas escritos en un lenguaje funcional estn constituidos nicamente
por definiciones de funciones, entendiendo stas no como subprogramas clsicos
de un lenguaje imperativo, sino como funciones puramente matemticas, en las
que se verifican ciertas propiedades como la transparencia referencial (el
significado de una expresin depende nicamente del significado de sus
subexpresiones), y por tanto, la carencia total de efectos colaterales.
Otras caractersticas propias de estos lenguajes son la no existencia de
asignaciones de variables y la falta de construcciones estructuradas como la
secuencia o la iteracin (lo que obliga en la prctica a que todas las repeticiones
de instrucciones se lleven a cabo por medio de funciones recursivas).
Pgina 12 de 18

Existen dos grandes categoras de lenguajes funcionales: los funcionales puros y


los hbridos. La diferencia entre ambos estriba en que los lenguajes funcionales
hbridos son menos dogmticos que los puros, al admitir conceptos tomados de
los lenguajes imperativos, como las secuencias de instrucciones o la asignacin
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 hbrido.

Pgina 13 de 18

Programacin lgica
La programacin lgica es un tipo de paradigmas de programacin dentro del
paradigma de programacin declarativa. El resto de los subparadigmas de
programacin dentro de la programacin declarativa son: programacin funcional,
programacin con restricciones, programas DSL (de dominio especfico) e
hbridos. La programacin funcional se basa en el concepto de funcin (que no es
ms que una evolucin de los predicados), de corte ms matemtico. La
programacin lgica gira en torno al concepto de predicado, o relacin entre
elementos.
Campos de aplicacin
La programacin lgica encuentra su hbitat natural en aplicaciones de
inteligencia artificial o relacionada: Sistemas expertos, donde un sistema de
informacin imita las recomendaciones de un experto sobre algn dominio de
conocimiento.
Demostracin automtica de teoremas, donde un programa genera nuevos
teoremas sobre una teora existente.
Reconocimiento de lenguaje natural, donde un programa es capaz de comprender
(con limitaciones) la informacin contenida en una expresin lingstica humana.
Etc.
La programacin lgica tambin se utiliza en aplicaciones ms "mundanas" pero
de manera muy limitada, ya que la programacin tradicional es ms adecuada a
tareas de propsito general.

Pgina 14 de 18

Conclusin.

Los lenguajes de programacin no son simplemente un detalle ms del amplio


mundo de la informtica, y por lo tanto deben ser vistos como el fundamento y la
base del desarrollo y avance de la computacin.
Estudiar los conceptos bsicos, clasificacin, diferencias, propiedades y
funcionamiento de los lenguajes de programacin es elemental para cualquier
estudiante o profesional dedicado a la computacin, pues de esa manera se logra
tener una perspectiva global y mucho ms amplia que tendr mucho peso al estar
bien documentados y al conocer qu son, cmo se clasifican y de qu manera
trabajan los lenguajes de programacin.
Luego del desarrollo de esta investigacin resulta fcil comprender los tipos y la
clasificacin que se les da a los lenguajes de programacin en base a sus
funcionalidades y caractersticas.
Este estudio tambin permite desarrollar un sentido crtico de los lenguajes de
programacin, de forma que el programador no seleccione ni emita un juicio
respecto a determinado lenguaje basado simplemente en su limitado
conocimiento ni basado en la popularidad de la que goza cierto lenguaje, sino que
el programador est capacitado para dar razones contundentes y certeras del por
qu un lenguaje es mejor que otro para determinada tarea, qu ventajas tiene uno

Pgina 15 de 18

respecto del otro, y que as tambin el programador sea capaz de seleccionar el


lenguaje que ms le convenga para la resolucin de un problema determinado.
Esta investigacin servir para evaluar correctamente los lenguajes de
programacin, determinando las ventajas y desventajas que cada uno de ellos
presenta.

Bibliografa.
Web Site: Programacin funcional
https://es.wikipedia.org/wiki/Programaci%C3%B3n_funcional

Web Site: Programacin lgica


https://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica

Web Site: Programacin orientada a objetos


https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

Web Site: Programacin imperativa


https://es.wikipedia.org/wiki/Programaci%C3%B3n_imperativa

Pgina 16 de 18

You might also like