Escolar Documentos
Profissional Documentos
Cultura Documentos
y sus Lenguajes
1956-60 Cintas magnéticas, circuitos de transistores, memorias de núcleo – Gramáticas BNF, interpretes
– Fortran, Algol58, Cobol, Lisp.
1981-85 PC, Estaciones de trabajo, Videojuegos, LAN, Arpanet – POO, Entornos interactivos, editores
diriguidos por sintaxis – Turbo Pascal, Smalltalk80, Prolog, Ada83, Postscript
1986-90 Edad de microcomputadora, Arquitecturas RISC, redes globales, Internet – Computación Cliente
Servidor – Fortran 90, C++, SML
1991-95 Estaciones de trabajo, rapidas y baratas microcomputadoras, voz, video, fax, multimedia –
Sistemas abiertos, super carretera de la información – Ada 95, lenguajes de procesos (TCL, Perl)
Estilos de programación
Estilo Descripción
Imperativo Entrada, procesamiento y salida de datos.
Program Primos(input,output);
{Programa para imprimir números primos entre 2 y n}
Const n=50
Var i=2..n;
j=2..n;
I_es_primo=boolean;
Begin
for i=2 to n do
begin
J=2;
i_es_primo:=true;
while i_es_primo and (j<=i) do
if (i mod j) <>0 then j:=j+1;
else i_es_primo:=false;
if i_es_primo then write(i);
end
End.
Estilo Imperativo
♦ EVALUACION
– El programador deberá traducir la solución abstracta
del problema a términos muy primitivos, cercanos a la
máquina.
– La solución de los problemas son más comprensibles
para la máquina que para el hombre.
– Utilización de gran esfuerzo al momento de construir el
programa y efectuar la evaluación de calidad.
– Permite eficiencia en la construcción del código pro la
cercanía de los algoritmos a la sintaxis del lenguaje.
Estilo Orientado al Objeto
Estilo Orientado al Objeto
♦ ¿QUÉ ES LA POO?
– QUE NO ES...
• Un sistema computacional basado en ratones, ventanas, iconos,etc.
• No es un lenguaje.
– QUE ES...
• Es un conjunto de técnicas de OOP que pueden utilizarse en cualquier
lenguaje conocido y los que están por venir (vendrán con facilidades
para manejar objetos).
• Estas tecnicas nos aseguran la re-usabilidad de nuestro código, es
decir los objetos que hoy escribimos, si están bien escritos, nos
servirán para siempre.
• Además podemos re-usar los comportamientos de un objeto,
ocultando o redefininiendo los antiguos de acuerdo a las nuevas
necesidades.
Estilo Orientado al Objeto
♦ EJEMPLO SIMPLE
– Si tenemos un vehículo y queremos uno más rápido.
• No compramos uno nuevo, modificamos algunas piezas y utilizamos
todas las otras.
• Podemos cambiar el carburador por otro más potente, cambiamos las
ruedas por unas más anchas para mejorar la estabilidad y añadimos un
sistema turbo.
– ¿Que se ha hecho de POO?
• Hemos modificado las cualidades de nuestro objeto (métodos): el
carburador y las ruedas.
• Hemos añadido un metodo nuevo: el sistema turbo
• Además podemos decir que nuestra modelo del vehiculo es un objeto
que pertenece a la clase llamada vehículo.
• En programación tradicional hubiesemos tenido que construir un auto
nuevo.
Estilo Orientado al Objeto
♦ ORIGEN
– Los conceptos de clase y herencia fueron por primera vez
implementados en el lenguaje Simula 67 (extensión de Algol 60).
– Simula 67 fue diseñado en 1967 por Ole-Johan Dhal y Krysten
Nygaard en la Universidad de Oslo y el Centro de Comunicación
Noruego (Norsk Regnesentral).
– En los 80’s recién aparecen lenguajes que utilizan estos
innovadores conceptos (Smalltalk y sobretodo C++)
Estilo Orientado al Objeto
♦ RECOMENDACIÓN
– Dejar de lado todas las ideas preconcebidas acerca de cómo
debe realizarse un programa.
♦ LENGUAJES PARA POO
Estilo Orientado al Objeto
♦ CONCEPTOS
– Clases
– Objetos
– Instancias
– Métodos
– Polimorfismo
– Herencia
– Encapsulación
Estilo Orientado al Objeto
♦ Plan de Implementación en POO
– Planificar árbol (jerarquía) clases.
VEGETALES CLASE1
ARBOLES CLASE2
ARBOLES
FRUTALES CLASE3
hmrJuan.Caminar()
EJERCICIO:
Para la clase felinos (gato, león). Además definir árbol de
clases, métodos originales y métodos nuevos.
Estilo Orientado al Objeto
♦ De la teoría a la realidad
– Referencias de si mismo
• Para hacer referencia desde los propios metodos se
utiliza el: This o Self
Ejemplo: This..ocultar()
– Constructores y destructores
• Método especial encargado de crear al objeto. P
– New()
– Hombre hmrJuan= Hombre.New();
– Hombre hmrJuan= new Hombre();
Estilo Orientado al Objeto
• Envío de mensajes (acceso a datos)
hrmJuan.Edad=30;
hrmJuan.Alto=180;
hrmJuan.Ojos=“Azules”;
• Envío de mensajes (acceso al método)
Hombre hmrJuan= new Hombre(30,180,”Marron”);
Hombre hmrJuan= new Hombre(25,175,”Azul”);
Hombre hmrJuan= new Hombre(20,167,”Cafe”);
• Constructor con argumento cero
Hombre hmrEstandar= new Hombre();
Realiza lo siguiente:
Hombre::Hombre()
{
This.edad=30;
This.estatura=175;
This.ojos=“marrón”;
}
Estilo Orientado al Objeto
♦ Destructores
finalize()
♦ Accesibilidad a datos y métodos
– Tipos de accesos
• Públicos: Son visibles dentro y fuera de la clase sin restricción
alguna. Se denotan con “Public”. En POO los datos nunca deben ser
públicos, ya que se rompe el principio de Encapsulación.
• Protegidos: son visibles dentro de la clase donde existen. Se declaran con
“Protected” o “friend”
• Privados: Son solo accesibles desde dentro de la clase donde existen. La
palabra reservada más común para denotarlos es “private”
– Sintaxis variable
[<public|protected|private>]<TipoVariable><NombreVariable>
– Sintaxis métodos
[<public|protected|private>]<TipoRetorno><NombreMetodo>...
Estilo Orientado al Objeto
♦ Ejemplos en variables
Public String sNombre;
Protected int nEdad;
Private long nAcceso;
♦ Ejemplos en métodos
Public void Imprimir();
Protected int Calcular();
Private string Grabar();
Estilo Orientado al Objeto
♦ Limitaciones e inconvenientes de la POO
– Mucha fuerza bruta, pero poca productividad.
– La encapsulación y la herencia se contradicen,
y son piedras angulares.
– Por un lado decimos los objetos deben ser
totalmente independientes y autónomos, por
otro lado al heredar se deja fuera información
perteneciente a una clase hija.
– Imposibilidad de usar objetos de distintos
programadores.
Estilo Orientado al Objeto
Estilo Orientado al Objeto
Estilo Orientado al Objeto
Estilo Orientado al Objeto
Estilo Orientado al Objeto
Estilo Orientado al Objeto
Estilo Orientado al Objeto
♦ Sistema Universitario
PERSONA
Nombres Inserta
Apellidos imprime
Rut
Teléfono
Edad
EGRESADO
PROFESOR ESTUDIANTE Nombres Inserta
Nombres inserta Nombres Inserta Apellidos imprime
Apellidos imprime Apellidos imprime Rut
Rut Rut Teléfono
Teléfono Teléfono Edad
Edad Edad Carrera
Departamento Carrera NºMatricula
Oficina NºMatricula Tesis
Avance
Estilo Orientado al Objeto
Estilo Orientado al Objeto
Estilo Orientado al Objeto
Estilo Orientado al Objeto
Estilo Lógico o Declarativo
♦ Se indica lo que se quiere demostrar
♦ Se especifica el universo donde se debe demostrar
♦ Se establecen reglas, ósea el “que” y no el “como”
♦ Se debe incorporar un motor de inferencia que
controle el proceso de demostración
♦ Los lenguajes más conocidos son Prolog y OPS
♦ La principal aplicación es el desarrollo de sistemas
expertos.
Estilo Lógico o Declarativo
♦ Los lenguajes lógicos o declarativos cuentan con:
– Un sistema de representación de conocimiento
mediante reglas de producción.ç
– Un motor de inferencia de orden 1 que es el propio
interprete o compilador.
– Un sistema sencillo de dialogo
– Una especial compactación al necesitar ninguna
estructura de control.
– Operaciones de entrada\salida complejas, pero posibles
Estilo Lógico o Declarativo
♦ Prolog
– Programming in Logic fue creado por Alain
Colmearauer de la Universidad de Marsella en 1972.
– Se baso en el principio de resolución automatica de
Robinson (1965)
– El elemento principal de Prolog son los predicados, que
es aquello que se afirma o o se dice de un sujeto.
Abuelo(Nombre_A, Nombre_B)
(8,0) (0,6)
(0,6) (8,0)
(8,0) (0,6)
(8,0) (0,6)
(8,0) (0,6)
(8,0) (0,6)
1 2 3 1 2 3
5 6 4 5 6
4 7 8 7 8
Estilo Lógico
♦ Problema del puzzle
5 6
4 7 8
2 3 1 2 3 1 2 3
1 5 6 4 5 6 5 6
4 7 8 7 8 4 7 8
1 2 3 2 3 1 2 3 1 2 3 1 3 1 2 3 1 2 3 1 2 3
5 6 1 5 6 5 6 4 5 6 5 2 6 5 7 6 5 6 5 6
4 7 8 4 7 8 4 7 8 7 8 4 7 8 4 8 4 7 8 4 7 8
1 2 3 2 5 3 2 3 1 2 3 1 2 3 1 3 1 3 1 2 3 1 2 3 1 2 1 2 3
5 6 1 6 1 5 6 4 6 4 5 6 5 2 6 5 2 6 5 7 6 5 7 6 5 6 3 5 6 8
4 7 8 4 7 8 4 7 8 7 5 8 7 8 4 7 8 4 7 8 4 8 4 8 4 7 8 4 7
Estilo Lógico o Declarativo
♦ La solución o heuristica del puzzle es:
F(N)=Numero de casillas bien ubicadas(se elige numero mayor)
1 2 3
5 6
4 7 8 4
1 2 3 2 3 1 2 3
6 4 5 6
4 1 5 6 5 6
4
7 8 4 7 8 4 7 8
1 2 3 1 2 3
7 4 5 6 5 6
5
7 8 4 7 8
1 2 3 1 2 3 1 2 3
8 4
7
5
8
6 4
7 5
6
8
4 5
7
6
6 6
Estilo Lógico o Declarativo
♦ Programa tradicional
– Dato+algoritmo+control+e\s
♦ Programa Sistema Experto
– Base Hechos: La información no cambia los resultados en las
diferentes ejecuciones del sistema experto, es un conjunto de
información fija (no cambia)
– Base Conocimiento: El algoritmo es reemplazado de
conocimiento, es un conjunto de reglas que determinan el dominio
y el ambito que va a resolver el problema.
– Motor de inferencia:Shell,que contiene el control del motor de
inferencia, donde se puede ejecutar.
– Además estan el modulo de usuario y el modulo experto.
– Los S.E. Son declarativos
Estilo Lógico o Declarativo
♦ Ejemplo de reglas
– “,” tiene mayor prioridad que “;”
– “,” ”y”
– “;” ”o”
– “.” TERMINO EXPRESION
Reglas Declaración
R1 P :- Q , R
R2 P :- S
R3 Q.
R4 R.
R5 R :- T
R6 T.
Estilo Lógico o Declarativo
Estilo Lógico o Declarativo
Estilo Lógico o Declarativo
Estilo Lógico o Declarativo
Estilo Lógico o Declarativo
Estilo Lógico o Declarativo
♦ Acertijos
– Un acertijo es un tipo de problema en el cual se describe una
situación, pero a través de datos fragmentarios y pistas indirectas.
Consta generalmente de una descripción general del problema, en
donde se pueden identificar las dimensiones y los límites, y un
conjunto de pistas, indicios y condiciones. Estos últimos
comúnmente caen dentro de cuatro categorías:
• Dar un dato concreto. Por ejemplo: Luisa siempre viste de rojo
• Eliminaciones. Por ejemplo: El nombre del señor López no es Juan
• Límites superiores e inferiores. Por ejemplo: María compró la prenda
más económica
• Pistas más sutiles. Por ejemplo: A Pedro le desagrada el rock
– Otros acertijos traen la descripción de la tarea en su enunciado y
son solucionados por medio de subtareas.
Estilo Lógico o Declarativo
♦ Solución de Acertijos
En general, la base de conocimiento que permita la
solución de un acertijo constará de:
– Un conjunto de hechos que permitan definir a los
sujetos que intervienen.
– Un conjunto de hechos y reglas para describir las
pistas, indicios y condiciones.
– Una o más consultas, que permitan indagar a la
base sobre todos o algunos de los datos que
completan la descripción de la situación.
Estilo Lógico o Declarativo
♦ Ejercicio 1
Las mujeres y sus trabajos
Clara, Luisa, María y Nélida son cuatro mujeres que aman sus
trabajos. Ellas trabajan como diseñadora de moda, florista,
jardinera y directora de orquesta. Cada mujer tiene un solo
trabajo, y cada trabajo es ocupado por una sola mujer. Con las
siguientes pistas, encontrar el trabajo realizado por cada mujer:
• Clara es violentamente alérgica a las plantas.
• Luisa y la florista comparten el departamento
• A María y Luisa les gusta solamente la música rock
La jardinera, la diseñadora de modas y Nélida no se conocen entre
sí.
Estilo Lógico o Declarativo
♦ Identificar sujetos
• Mujeres
• Ocupaciones
♦ Hechos
• Son eliminaciones
(no_es,alérgica,relacionado,solo_escucha,incompati
bles,diferentes)
♦ Solución
• respuesta
Estilo Lógico o Declarativo
♦ Ejercicio 2
Sobre líquidos venenosos
El Sr. Ido, el químico, tiene seis frascos llenos de líquidos coloreados. Hay uno de
cada color: rojo, anaranjado, amarillo, verde, azul y violeta. El señor Ido sabe
que algunos de esos líquidos son tóxicos, pero no recuerda cuales...
Sin embargo, sí recuerda algunos datos. En cada uno de los siguientes pares de
frascos hay uno con veneno y otro no:
– los frascos violeta y azul
– los frascos rojo y amarillo
– los frascos azul y anaranjado
El Sr. Ido recuerda también que en estos otros pares de frascos hay uno sin
veneno:
– el violeta y el amarillo
– el rojo y el anaranjado
– el verde y el azul
¡Ah! Casi lo olvido, añade el Sr. Ido, el líquido del frasco rojo no es
venenoso¿Qué frascos tienen veneno?
Estilo Lógico o Declarativo
♦ Identificar sujetos
• Uno_toxico_otro_no
• Uno_no_toxico
♦ Hechos
• Toxico
• No_toxico
♦ Solución
• findall
Estilo Lógico o Declarativo
♦ Un tío le dice a su sobrino: " Yo tengo el triple de la edad que
tú tenías cuando yo tenía la edad que tú tienes. Cuando tú
tengas la edad que yo tengo ahora, la suma de las dos edades
será de 70 años". ¿Qué edad tienen ahora ambos?
♦ Características principales
• Programación aplicativa o funcional
• Se utiliza almacenamiento en montículos
• Se utilizan estructura de listas
♦ Principales lenguajes
Lisp ML(Meta lenguaje)
Implementado Implemantado por la MIT en 1960 Desarrollado por Robin Miller
(Massachusetts Institute of
Tecnology)
Aplicación Robotica, Procesamiento de Leng. Uso educativo y poco uso
Naturales, Prueba de comercial
Teoremas,SsistemasInteligentes
Ventajas Recursión, equivalencia de forma Polimorfismo, Abstracción de
entre programas y estructuras de datos, compacto,
datos
Estilo Funcional-Lisp
♦ Variables y constantes
• Átomo: es el tipo elemental básico de un objeto de
datos (Ej. Átomo literal, átomo numérico)
• Un átomo es un identificador (Ej. Nombres de
variables, nombres de funciones, nombres de
parámetros formales.)
• Los átomos contienen una lista de propiedades, esta
pueden ser: nombre de impresión, enlaces del
átomo, tipo de átomo, etc.
• Ejemplo de átomos en Lisp:
Estilo Funcional-Lisp
♦ La ejecución de un programa en Lisp consiste en la evaluación de una
función en Lisp. La secuenciación tiene lugar normalmente por
llamada de función (que puede ser recursiva ) o por expresión
condicional.
♦ Las operaciones
– Primitivas aritmeticas básicas: +,-,*,\. Se utiliza la misma sintaxis.
– Operaciones relacionales: zerop, greaterp, lessp. Retornan nil y T
– Operaciones booleanas: and, or, not
– Funciones básicas: put (inserción), get (obtiene vigente asociado a la
propiedad), remprop (elimina una pareja de una lista).
– Por ejemplo:
(put ´maria´ edad 40) agrega la pareja de nombre\valor (edad,40) a la lista de propiedades del atomo maria
(get ´maria´edad) la propirdad edad de maria se puede recuperar a traves de la llamada de funcion get
(remprop ´maria´edad) elimina la propiedad edad de el atomo maria
Estilo Funcional-Lisp
♦ Comentarios
– Los comentarios se realizan anteponiendo “;”
♦ Expresiones condicionales
(cond alternativa1
alternativa2
...
alternativa n
(T expresion_por_omision))
Donde cada alternativa i es (predicadoi expresion i)
♦ Enunciados
– Este lenguaje se ejecuta evaluando funciones por lo tanto no tiene
enunciados
– Ejemplo (prog es para declaracion de varibles y progn sin declaracion):
(prog(variables) (expresion1)
(expresion2)
...
(expresion n))
Estilo Funcional-Lisp
♦ Entradas y salidas: Las más conocidas son
Read lee desde teclado
Open abre un archivo de datos
Print imprime objeto legible
Load carga archivo en memoria
Trace function_none rastrea ejecucion para encontrar errores
Setq nombre_pt(open nombre_archivo) declara a variable
apuntando aun archivo
Help proporcina ayuda
bye sale de lisp
♦ Definición de funciones
(defun <nom_funcion>(argumentos) expresion)
(define (<nom_funcion> argumentos) expresion)
(define <nom_funcion>(lambda(parametros)(cuerpo)))
(put ‘nom_funcion’expresion (lambda(parametros)(cuerpo)))
Estilo Funcional-Lisp
♦ Subprogramas y almacenamiento
– Funciones interpretadas
• Se representa en forma de estructura de listas
• Las primitivas eval y apply la ejecutan
• Sus argumentos se evaluan con definicion igual a expr
• Sus argumentos se evaluan con definicion igual a fexpr
– Funciones compiladas
• Se ejecuta ya el código compilado
• Se ejecuta la primitiva especial compile
– Macros
• Se utiliza define, pero la macro debe utilizar el lugar de lambda en la
definición de la función
Estilo Funcional-Lisp
♦ Funciones de lista
• (car L) devuelve el primer elemento de la lista L
• (cdr L) devuelve la lista L menos el primer elemento
• (cons x y) devuelve una lista L tal que (car L)=x y (cdr L)=y
• (list x y z) devuelve la lista (x y z)
• (quote x) o (‘x) no evalua x
♦ Predicados
• (atom x) devuelve true si x es un atomo
• (numberp x) devuelve true si x es un numero
• (greaterp x y) devuelve true si x>y
• (lessp x y) devuelve true si x<y
• (null x) devuelve true si el atomo es nulo
• (and x y) devuelve x ˆy
• (or x y) devuelve xˇy
• (not x) devuelve ~x
♦ Funciones aritmeticas
• (+ x y) devuelve x+y para los atomos x e y. Lo mismo es para -,*,\.
• (rem x y) devuelve el residuo de x\y.
Estilo Funcional-Lisp
♦ Evaluación de Lisp
– Es uno de los lenguajes más antiguos
– Ocupa solo un campo, inteligencia artificial
– Es facil implementar programas aplicativos
♦ Ejemplo 1 en XLISP-STAT
Estilo Funcional-Lisp
♦ Links de interes para Lisp
• http://www.geocities.com/CapeCanaveral/Hangar/1200/xlisp.htm
• http://www-cs.us.es/software/Welcome.html
• http://www.unex.es/economia/ramajo.htm
Estilo Orientado al Evento
♦ Origen
– Son herramientas gráficas de programación
– Su base esta en la POO
– Contienen y permiten crear objetos estándar
– Posee los mismos conceptos de la POO
• Objeto
• Clases
• Métodos
• Evento
• Propiedades
• Encapsulación.
Estilo Orientado al
Evento
DEFINICION EJEMPLO DE LA REALIDAD EJEMPLO DE VISUAL
BASIC
Objeto Un bosque Una ventana de dialogo
Clase Un árbol dentro del bosque Un botón dentro de la
ventana
Evento La ruptura de la rama Un click sobre el botón
Método El ruido de la caída La rutina ejecutada cuando
el botón se presione
Propiedades Grande, frondoso, etc. Color verde, pequeña, etc
♦ Principales herramientas
• Visual Studio (VB,VJ++,VC++) (Microsoft)
• Delphi (Borland)
• Power Builder (PowerSoft)
• Jbuilder (Borland)
Estilo Orientado al Evento
♦ Métodos y Eventos
– Un evento es la ocurrencia de algo asociado a un
objeto.
♦ Objetos y Clases
– Cada objeto posee propiedades, eventos y funciones.
Estilo Orientado al Evento
Visual Basic
♦ Ambiente de programación
♦ Creación de interfaz (calculadora)
♦ Variables y constantes
♦ Operadores y Funciones Internas
♦ Estructuras de Control
♦ Procedimientos y Funciones
♦ Objetos, Clases, Subclases, Eventos
♦ Base de Datos
Estilo Paralelo
Bibliografía
♦ “Lenguajes de Programación”, Pratt Terrence
♦ “Programación orientado a objetos”, Luis Joyanes Aguilar
♦ www.eidos.es
♦ www.fciencias.unam.mx
♦ www.inf.unitru.edu.pe
♦ http://nile.ed.umuc.edu/~cklein/ood/html/beforecourse.html