You are on page 1of 52

ESTRUCTURA

DE LOS
LENGUAJES

Prof. Dra. Cynthia Gonzlez


Ingeniera en Sistemas Informticos
Mster en Administracin de Empresas
Doctora en Investigacin Tecnolgica
Email: ccgonzalezg@hotmail.com
ESTRUCTURA DE LOS LENGUAJES
Das de clases :
Lunes : 18:40 a 21:00hs

Martes : 18:40 a 20:00hs

Evaluaciones:
Parcial : 31-08-2015

Final : 28-09-2015

T.P. : 21-09-2015
PARADIGMA
PARADIGMAS DE PROGRAMACION
PARADIGMAS DE PROGRAMACION

-Las leyes explcitamente establecidas y los


supuestos tericos. Por ejemplo, las leyes de
movimiento de Newton forman parte del
Definicin paradigma newtoniano y las ecuaciones de
Maxwell forman parte del paradigma que
Un paradigma est constituido por los constituye la teora electromagntica clsica.
supuestos tericos generales, las leyes y
las tcnicas para su aplicacin que
adoptan los miembros de una determinada
comunidad cientfica.
-El instrumental y las tcnicas instrumentales
Podemos decir que, los paradigmas son necesarios para hacer que las leyes del paradigma
marcos de referencia que imponen reglas se refieran al mundo real. La aplicacin en
sobre cmo se deben hacer las cosas, astronoma del paradigma newtoniano requiere el
indican qu es vlido dentro del paradigma uso de diversos telescopios, junto con tcnicas
y qu est fuera de sus lmites. Un para su utilizacin y diversas tcnicas para
paradigma distinto implica nuevas reglas, corregir los datos recopilados
elementos, lmites y maneras de pensar, o
sea implica un cambio. Los paradigmas
pueden ser considerados como patrones
de pensamiento para la resolucin de
problemas. Desde luego siempre teniendo -Un componente adicional de los paradigmas lo
en cuenta los lenguajes de programacin, constituyen algunos principios metafsicos muy
segn nuestro inters de estudio generales que guan el trabajo dentro del
paradigma. Todos los paradigmas, adems,
contienen prescripciones metodolgicas muy
generales tales como: "Hay que intentar
seriamente compaginar el paradigma con la
naturaleza".
Paradigmas de Programacin: Representan un enfoque
particular o filosofa para la construccin del software.
No es mejor uno que otro sino que cada uno tiene
ventajas y desventajas. Tambin hay situaciones donde
un paradigma resulta ms apropiado que otro.

- El paradigma imperativo es considerado el


ms comn y est representado, por
ejemplo, por el C o por BASIC.

Ejemplos de
paradigmas de
programacin:

- El paradigma funcional est representado


por la familia de lenguajes LISP, en particular
Scheme o Haskell.
Tipos de Paradigmas de Programacin
Hoy, mediados del ao 2004, despus de leer
bibliografas donde autores clasifican los
paradigmas de modos similares, siempre destacan el
imperativo, el orientado a objetos, el funcional y el
lgico. Algunos autores o profesores, mencionan
paradigmas heursticos, concurrentes,
procedimentales, declarativos y demostrativos. Por
ejemplo dicen:

1. Paradigmas Imperativo: Modelo abstracto que 4. Paradigmas Demostrativos: Modelos de


consiste en un gran almacenamiento de Desarrollo: Gentico. Cuando se programa bajo
memoria donde la computadora almacena una un paradigma demostrativo (tambin llamada
representacin codificada de un clculo y programacin por ejemplos), el programador no
ejecuta una secuencia de comandos que especifica procedimentalmente cmo construir
modifican el contenido de ese almacenamiento. una solucin sino que presentan soluciones de
Algoritmos + Estructura de Datos = Programa. problemas similares.

2. Paradigmas Procedimentales : Modelos de


5. Paradigmas Funcional: Modelo
Desarrollo: Orientado a Objetos, a Eventos, y
matemtico de composicin funcional
a Agentes. Secuencia computacional
donde el resultado de un clculo es la
realizada etapa a etapa para resolver el
entrada del siguiente, y as sucesivamente
problema. Su mayor dificultad reside en
hasta que una composicin produce el
determinar si el valor computado es una
valor deseado.
solucin correcta del problema.

3. Paradigmas Declarativos: Modelos de


6. Paradigma Orientado a Objeto: disciplina
Desarrollo: Funcional, Lgico y de Flujo de
de ingeniera de desarrollo y modelado de
Datos. Se construye sealando hechos,
software que permite construir ms
reglas, restricciones, ecuaciones,
fcilmente sistemas complejos a partir de
transformaciones y otras propiedades
componentes individuales. Objetos +
derivadas del conjunto de valores que
Mensajes = Programa.
configuran la solucin.
Bueno, no se puede decir que este mal
relacionar un paradigma con un modelo aunque
en este caso hay una especie de ensalada rusa.
Es natural que los lenguajes de programacin
puros nos establecen paradigmas claros (C,
Haskell, Smalltalk, Prolog), pero tambin nos
confunden los lenguajes hbridos al incorporar a
sus nuevas versiones paradigmas o
seudoparadigmas nuevos (C++, Visual Fox,
Builder, Scheme, Lisp). Creo que lo mas
conveniente ser relacionar los lenguajes con
los paradigmas y diferenciar un lenguaje puro
de un hbrido. Yo les pregunto Java es un
lenguaje imperativo y hasta que punto
pertenece o pretende ser puro en cuanto al
paradigma orientado a objetos?.
PARADIGMAS DE PROGRAMACION EN LENGUAJES.
PARADIGMA IMPERATIVO

Uno de los paradigmas mas


representativos de la programacin y de
hecho el primer paradigma formalmente
aceptado es el imperativo.

Imperar significa mandar, ordenar, y eso


es exactamente lo que hacemos al
programar.
El paradigma imperativo apareci en los 50 con los
primeros lenguajes de programacin. Tambin es
llamado procedimental o algortmico.

La programacin imperativa se rige por dos


conceptos bsicos para la construccin de
programas: la estructura y el modulo. De ah que se
hable de programacin estructurada y de
programacin modular.

La programacin en el paradigma imperativo consiste


en determinar qu datos son
requeridos para el clculo, asociar a estos
direcciones de memoria y efectuar, paso a paso,
una secuencia de transformaciones en los datos
almacenados de forma tal que el estado
final represente el resultado correcto.
Origen de la Programacin Imperativa

Fue en el ao de 1945 cuando el matemtico Jhon Von


Neumann fascinado por las posibilidades de ENIAC (Electronic
Numerical Integrator and Computer) elabor un estudio que
demostr que una computadora poda tener una estructura
fsica muy simple y fija, y aun as ser capaz de ejecutar
cualquier tipo de programa mediante un control correcto, sin la
necesidad de modificar la computadora para esto. A partir de
esta innovacin de Von Neunmann, que en conjunto se conoce
como la tcnica de programa almacenado es que se inicia la
era de los lenguajes de programacin.
La programacin imperativa se basa en tres conceptos
importantes :
Celda de memoria variable
Operaciones de asignacin
Operaciones de repeticin

celdas de memoria donde se almacenan valores que son


referenciados y modificados durante la ejecucin del
programa, a las que se suele asignar un nombre o
identificador.

Operaciones de asignacin: son las que permiten asociar


los datos o valores a la posicin de la memoria o variable
que los contiene.

Repeticin: normalmente un programa iterativo realiza su


tarea ejecutando una y otra vez una secuencia de pasos
elementales
Ventajas
. y Desventajas de La
Programacin Imperativa
Ventajas:

Su relativa simplicidad y facilidad de implementacin de


los compiladores e intrpretes

La capacidad de reutilizar el mismo cdigo en diferentes


lugares en el programa sin copiarlo.

Una forma fcil seguir la pista de flujo del programa.

La capacidad de ser muy modular o estructurado.

Necesita menos memoria solamente.


Desventajas:

Los datos son expuestos a la totalidad del programa, as


que no hay seguridad para los datos.

Dificultad para relacionarse con los objetos del mundo real.

Difcil crear nuevos tipos de datos reduce la extensibilidad.

Se da importancia a la operacin de datos en lugar de los


datos mismos
CAMPOS DE APLICACIN
Los lenguajes imperativos pueden resolver prcticamente
cualquier problema en cualquier rea: desde simples hasta
complejos clculos matemticos.
Se pueden hacer cualquier tipo de aplicaciones:
De nominas
De control areo
De inteligencia artificial
De control de dosis de medicamentos
Para cajeros automticos
Para naves espaciales
Para dispositivos mviles
Aplicaciones en lnea y tiempo real.

Hay que recordar que fue el primer paradigma que le vino a


poner orden a la manera de hacer programas, y por tanto su
filosofa marco la lnea a seguir para resolver problemas de la
vida cotidiana.
PARADIGMA DE 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.
HISTORIA

Sus orgenes provienen del Clculo Lambda (o -


clculo), una teora matemtica elaborada por
Alonso Church como apoyo a sus estudios sobre la
Informatica. Un lenguaje funcional es, a grandes
rasgos, un azcar sintctico del Clculo Lambda.
CALCULO LAMBDA

Los orgenes tericos del modelo funcional se


remontan a la dcada del 30, mas precisamente al
ao 1934, cuando Alonso Church introdujo un
modelo matemtico de computacin llamado
lambda calculo. A pesar de que en esta poca las
computadoras aun no existan el lambda clculo se
puede considerar como el primer lenguaje
funcional de la historia y sus fundamentos fueron
la base de toda la teora de la programacin
funcional y de los lenguajes funcionales
desarrollados posteriormente.
PROGRAMACIN DECLARATIVA
La caracterstica fundamental del paradigma
declarativo es que no existe la asignacin ni el
cambio de estado en un programa. Las variables
son identificadores de valores que no
cambian en toda la evaluacin (como constantes
definidas con un DEFINE de C). Slo
existen valores y expresiones matemticas que
devuelven nuevos valores a partir de los
declarados.
LENGUAJES FUNCIONALES
Programar en un lenguaje funcional significa
construir funciones a partir de las ya existentes.
Por lo tanto es importante conocer y comprender
bien las funciones que conforman la base del
lenguaje, as como las que ya fueron definidas
previamente. De esta manera se pueden ir
construyendo aplicaciones cada vez ms
complejas.
SCHEME
Scheme es un lenguaje compacto con un alto grado
de abstraccin, por lo cual resulta adecuado para
cursos introductorios de computacin, donde el
nfasis est en la metodologa de resolucin de
problemas. Scheme permite resolver problemas
complejos con programas cortos y elegantes. De
este modo, el lenguaje se convierte en un aliado
para resolver problemas, no un problema ms que
resolver.
DUALIDAD ENTRE DATOS Y PROGRAMAS

Los programas en Scheme son expresiones entre


parntesis (expresiones-S o S-expressions en
ingls)
Una expresin es una lista de smbolos
Esto permite tratar a los programas como datos y
viceversa.
LAS VENTAJAS DE TENER UN LENGUAJE
TAN SIMPLE SON:

 Permite definiciones simples.


 Facilita el estudio de aspectos computacionales.
 Su carcter formal facilita la demostracin de
propiedades.

APLICACIONES

 Compilacin de lenguajes funcionales.


 Especificar semntica a lenguajes imperativos.
 Formalismo para definir otras teoras.
PARADIGMA FUNCIONAL
En un sentido estricto, la programacin funcional
define un programa como una funcin matemtica que
convierte unas entradas en unas salidas, sin ningn
estado interno y ningn efecto lateral.

Otras caractersticas del paradigma funcional son las


siguientes:

-Recursin
-Funciones como tipos de datos primitivos
-Uso de listas
FUNCIONES COMO DATOS DE PRIMER
ORDEN

 Las funciones son datos de primer orden de los


lenguajes funcionales.
 Un dato de primer orden es aquel que:

 Puede ser asignado a una variable


 Puede ser pasado como argumento a una funcin
 Puede ser devuelto como resultado de una
invocacin a una funcin
 Puede ser parte de un tipo mayor
LENGUAJE LISP

LISP es el primer lenguaje de programacin de


alto nivel basado en el paradigma funcional
Creado en 1958 por John McCarthy LISP es un
lenguaje revolucionario e introduce nuevos
conceptos de programacin: funciones como
objetos primitivos, funciones de orden superior,
polimorfismo, listas, recursin, smbolos,
homogeneidad de datos y programas.
FUNCIONES
Una funcin es un grupo de instrucciones con un
objetivo en particular y que se ejecuta al ser
llamada desde otra funcin o procedimiento. Una
funcin puede llamarse mltiples veces e incluso
llamarse a s misma (funcin recurrente). Las
funciones pueden recibir datos desde afuera al ser
llamadas a travs de los parmetros y deben
entregar un resultado. Se diferencian de los
procedimientos porque estos no devuelven un
resultado.
MODELO DE COMPUTACIN DE
SUSTITUCIN

 Un modelo computacional es un formalismo


(conjunto de reglas) que definen el funcionamiento
de un programa.
 En de los lenguajes funcionales basados en la
evaluacin de expresiones, el modelo
computacional define cul va a ser el resultado de
evaluar una determinada expresin.
 El modelo de sustitucin se basa en una versin
simplificada de la regla de reduccin del clculo
lambda.
ORDEN NORMAL VS. ORDEN
APLICATIVO

 Orden aplicativo: cuando se llega a una


expresin primitiva se evala.
 Orden normal: se realizan todas las
sustituciones hasta que se tiene una larga
expresin formada por expresiones
primitivas; se evala entonces.
 Scheme utiliza el orden aplicativo
PARADIGMA LGICO
INTRODUCCION A LA PROGRAMACION LOGICA
Es una forma de razonar para resolver problemas en
matemticas y se fundamenta en la lgica.
El conocimiento bsico de las matemticas se puede
representar en la lgica en forma de axiomas, a los
cuales se aaden reglas formales para deducir cosas
verdaderas (teoremas) a partir de los axiomas. Gracias
al trabajo de algunos matemticos de finales del siglo
pasado y principios de este, se encontr la manera de
automatizar computacionalmente el racionamiento
lgico particularmente para un conjunto significativo de
la lgica.
PARADIGMA LGICO
INTRODUCCION A LA PROGRAMACION LOGICA

En la lgica matemtica se dio origen a otros


tipos de lenguaje de programacin , conocidos
como lenguaje lgicos.

Tambin se conoce como lenguajes


declarativos por que todo lo que el
programador tiene que hacer para solucionar
un problema es describirlo va axiomas y
reglas de deduccin.
LOGICA PROPORCIONAL
 La programacin lgica tiene sus orgenes
en los trabajos de prueba automtica de
teoremas, para esto se utiliza una nica
regla de inferencia llamada principio de
resolucin , mediante la cual prueba un
teorema que puede ser llevado acabo de
forma automtica , esta regla se aplica
sobre las formulas surgidas de la lgica de
primer orden.
CONSTANTES INDIVIDUALES

Son simplemente smbolos (nombres) que se


usan para referir a algn objeto individual fijo .
por ejemplo:
Usa juan como un constante individual para
denotar una persona en particular o 1 como una
constante individual para denotar un numero en
particular. en ambos casos, funciona
exactamente como los nombres funcionan en
espaol.
SIMBOLOS DE PREDICADO

Son utilizados para denotar alguna


propiedad de objetos o alguna relacin entre
ellos, con expresiones combinadas de
nombres que forman enunciados
atmicos, pero no corresponden
exactamente a los predicados de la
gramtica espaola.
ejemplo:
juan es padre de ana
ENUNCIADOS ATOMICOS

Son aquellas que son utilizadas con un


predicado simple y el numero apropiado de
contantes individuales.
Un enunciado formado por un predicado
seguido por el numero correcto de nombres
es llamado un enunciado atmico.
ejemplo:
mujer (ana) mayor (juan, ana) = juan es
mayor que ana
ENUNCIADOS ATOMICOS COMBINADO

Los predicados constituyen funciones que


transforman los argumentos de objetos
(constantes individuales) en valores verdaderos
o falsos.
por ejemplo :
Interpretar el objeto albatros y el predicados
plumas y pjaro se puede decir de manera
informal.
plumas (albatros)
pjaro (albatros)
LENGUAJES GENERALES DE PRIMER ORDEN

Es determinado fijando los nombres y


predicados que contiene, cada predicado
viene con una claridad especificada. Un
lenguaje de primer orden debe tener al
menos un smbolo de predicado.
ejemplo:
ana es mujer y mayor (maria,juan) en
traduccion seria
maria es mayor que juan.
PREDICADOS CON CONSECUENTE

Una de las mayores preocupaciones de la


lgica es el concepto de consecuencia
lgica. cuando una oracin, enunciado o
afirmacin se sigue lgicamente de otras
evitando la complejidad y la ambigedad del
lenguaje ordinario, esperamos que las
consecuencias de nuestras afirmaciones
sean mas fcilmente reconocibles
INTRODUCCION A PROLOG

El Prolog (o Prolog), proveniente


del francs programmation en logique, es
un lenguaje para programar artefactos
electrnicos mediante el
paradigma lgico con tcnicas de
produccin final interpretada. es bastante
conocido en el rea de la ingeniera
informtica para investigacin
en inteligencia artificial.
Su lenguaje a partir de un alfabeto contiene
dos tipos de smbolos:
 Smbolos lgicos: entre los que se
encuentran los smbolos de contantes
proporciones (verdadero y falso) para la
negacin, la conjuncin, la disyuncin y la
aplicacin.
 Smbolos no lgicos: estn agrupaos en
el conjunto de smbolos constantes , el
conjunto de smbolos de variables
individuales (identificadores) , la cual se
divide en smbolos de relaciones y smbolos
de funciones.
CALCULO DE RELACIONES
La programacin lgica trabaja mas con
relaciones que con funciones se basa en la
premisa de que programar con relaciones es
mas flexibles que programar con funciones
debido a que las relaciones tratan de forma
uniforme a los argumentos y a los
resultados. De manera informal, las
relaciones no tiene sentido de direccin ni
prejuicio alguno a cerca de que se calcula a
partir de que.
PROGRAMACION ORIENTADA A OBJETOS (POO)
INTRODUCCION
 La programacin Orientada a Objetos tiene tres
paradigmas que deben ser presentados cuando
se utilicen los mismos para el desarrollo de
programas informticos, independientemente
del lenguaje de programacin utilizado. Estos
tres paradigmas son:
 Encapsulamiento
 Herencia
 Polimorfismo.
PROGRAMACION ORIENTADA A OBJETOS (POO)
ENCAPSULAMIENTO
 Es una tcnica que permite proteger las caractersticas del objeto,
con lo que se evitan manipulaciones incorrectas. Para acceder a
modificar alguna de las caractersticas de un objeto, se utilizan los
mtodos getters y setters respectivamente.
 Los mtodos getters y setters permiten obtener el valor de una
variable y modificar su valor respectivamente
PROGRAMACION ORIENTADA A OBJETOS (POO)
HERENCIA
 La herencia es una caracterstica sumamente importante en
la programacin orientada a objetos la cual tiene como
concepto clave la reusabilidad. En Java esta caracterstica
determina que una clase hija (subclase) herede tanto
atributos como mtodos de la clase padre (superclase),
pudiendo sobrescribir algunos de ellos si se quiera modificar
su comportamiento.
HERENCIA
 Cabe destacar que no existe la herencia mltiple, es decir
una clase solamente puede heredar o tener una clase padre.
 Con la herencia se garantiza la reutilizacin tanto de
caractersticas como comportamiento de la clase padre en
las hijas.
PROGRAMACION ORIENTADA A OBJETOS (POO)
POLIFORMISMO
 El poliformismo es una caracterstica de la
programacin orientada a objetos que quiere decir
muchas formas, el cual maximiza la reusabilidad y
extensibilidad de nuestro cdigo. En trminos de
programacin, el polimorfismo permite que un solo
nombre de clase o mtodo representen diferente
cdigo seleccionado mediante algn mecanismo
automtico, de esta forma, puesto que un nombre
puede representar diferente cdigo, tambin puede
representar muchos comportamientos distintos.
POLIFORMISMO

 Un claro ejemplo seria tener varias figuras geomtricas


(cuadrado, triangulo, circulo) que comparten mtodos
comunes como dibujar, ya que todas son subclases de Figura
geomtrica. La implementacin de dibujar es propia de cada
figura sin embargo gracias al polimorfismo el mtodo con el
mismo nombre dibujar, permiten que este se comporte de
manera diferente dependiendo del tipo de figura especfica.
POLIFORMISMO

 Recuerda
polimorfismo significa,
mismo nombre,
distinto
comportamiento.

You might also like