SlideShare una empresa de Scribd logo
1 de 80
Estilos de Programación
y sus Lenguajes
Preparado por Pedro Contreras F.
pcontreras@informatica.uda.cl
DIICC - UDA
Definiciones
♦ Lenguaje
♦ Programación
♦ Programador
♦ Analista
♦ Ejecutar
Origen y Evolución.
♦ Clasificación por Tipo de Solución
– Lenguajes basados en el cálculo númerico (Jovial, Fortran, Algol)
– Lenguajes para negocios (Flow matic, CBL, Cobol)
– Lenguajes para inteligencia artificial (IPL, Lisp, Comit, Snobol)
– Lenguajes para sistemas operativos (PL/I, BCPL, B, C)
– Lenguajes para formato (SGML, HTML, PostScript, Vbscript, Javascript,
Pearl)
Origen y Evolución.
♦ Clasificación por generaciones.
– 1º Generación: Código Binario
– 2º Generación: Lenguaje Ensamblador
– 3º Generación: Lenguajes de Alto nivel (C, etc.)
– 4º Generación:
• Entornos RAD (Rapid Application Development)
• Programación Visual
• Modelo de componentes reutilizables
– 5º Generación: Lenguajes de programación declarativos.
Origen y Evolución.
♦ Clasificación por procesos.
– Lenguaje Máquina: Son aquellos cuyas instrucciones son directamente
entendibles por la computadora y no necesitan traducción posterior para
que la CPU pueda comprender y ejecutar el programa. Las instrucciones en
lenguaje maquina se expresan en téminos de la unidad de memoria mas
pequeña el bit (dígito binario 0 o 1).
– Lenguaje de Bajo Nivel (ensamblador): En este lenguaje las
instrucciones se escriben en códigos alfabeticos conocidos como
mnemotecnicos para las operaciones y direcciones simbolicas.
– Lenguaje de Alto Nivel: Los lenguajes de alto nivel (Basic , Pascal,
Cobol, Fortran,C, C++, etc. ) son aquellos en los que las instrucciones o
sentencias a la computadora son escritascon palabras similares a los
lenguajes humanos (en general en ingles), lo que facilita la escritura y
comprensión del programa.
Cronología
Años Hardware – Métodos - Lenguajes
1951-55 Tubos al vacío – Lenguajes ensambladores – Uso experimental de compiladores de expresiones.
1956-60 Cintas magnéticas, circuitos de transistores, memorias de núcleo – Gramáticas BNF, interpretes
– Fortran, Algol58, Cobol, Lisp.
1961-65 Arquitecturas conpatibles, discos magneticos – SO de multiprogramación, compiladores por
sintaxis – Cobol61, Algol60 (revisado), Snobol, Jovial, notación APL.
1966-70 Minicomputadoras, Microprogamación y circuitos integrados – Sistemas de compartición de
tiempos, compiladores optimizados – APL, Fortran66, Cobo65l, Algol68, Snobol4, Basic, PL/I,
Simula 67, Algol-W.
1971-75 Microcomputadoras, memorias de semiconductores – Programación estructurada, Crecimiento
de la I.Sw. Como disciplina – Pascal, Cobol74, PL/I (estandar), C, Scheme, Prolog.
1976-80 Microcomputadoras de calidad comercial, sistemas de gran almacenamiento y computación
distribuida – Técnicas de programación concurrente, incrustada y en tiempo real. – SmallTalk,
Ada, Fortran 77, ML
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.
Funcional Utilización de funciones para c/proceso.
Lógico Operaciones lógicas y definición de reglas.
Orientado al
Objeto
El enfoque pretende utilizar la relación del
hombre con objetos, clases y métodos.
Orientado al
Evento
Herramientas resultantes de la POO y que
permiten trabajar con eventos, atributos y
objetos encapsulados.
Orientado al
Formato
Son lenguajes interpretes que permiten
internamente declarar los formatos de salida
del texto, imagen, grafica, etc.
Estilo Imperativo
Estilo Imperativo
♦ ORIGEN
– Resultado de la arquitectura de Von Neumann, que establece una
secuencia de celdas, llamada memoria, donde se guarda en forma
codificada los datos e instrucciones.
– Además un procesador de ejecutar en forma secuencial una serie de
operaciones, principalmente aritméticas y booleanas, llamadas comandos.
♦ CONCEPTOS
– Datos: números, caracteres y booleanos, codificados y guardados en las
celdas de memoria.
– Variables: nombres de las celdas donde están los datos.
– Instrucciones: Asignaciones, condicione, iteraciones y entrada/salida
codificacdas como secuencia de comandos.
– Programa: combinacion de declaraciones de variables y secuencias de
instrucciones la cual se puede guardar en memoria y, despues de un
proceso de compilación, se ejecuta por el procesador.
Estilo Imperativo
♦ EJEMPLO
– Algunos de los lenguajes de este tipo son: Fortran, Algol, Pascal, C, Modula-2,
Ada.
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
ARBOLES
ARBOLES
FRUTALES
NARANJO MANZANO
CLASE1
CLASE2
CLASE3
CLASE 3.2 CLASE 3.1
Estilo Orientado al Objeto
♦ Plan de Implementación en POO
– Diseño de estructura de clases
– Definir métodos que trabajan con estos datos
– Definir interrelaciones
– Utilización de herramientas como Rational Rose
– Nunca el modelo diseñado sobre papel o la
herramienta es el modelo finalmente implementado.
Estilo Orientado al Objeto
♦ Consejos para POO
– Divide y vencerás
• Definir método para cada tarea pequeña de la clase
– No piense en forma procedural
• Los objetos son de verdad, no son cajas de almacenamiento de
código.
– Los métodos no son funciones
• No defina métodos como si fueran funciones, sino como acciones
naturales del objeto.
♦ Pasos en el diseño para POO
– Identificar el ámbito de trabajo: establecer clases más bajas o
abstractas.
– Identificar los distintos sub ámbitos de trabajo: instancias.
– Especificar objetos finales: establecer relaciones entre clases
del ámbito y sub ámbito.
Estilo Orientado al Objeto
♦ De la teoría a la realidad
– Operador de envío
• Es el separador entre el objeto y los métodos. Cada
lenguaje tiene uno (en C++ esta “.”, y otros “:”)
• Ejemplo: enviar el mensaje Caminar al objeto Juan
de la clase hombre
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
ESTUDIANTE
Nombres Inserta
Apellidos imprime
Rut
Teléfono
Edad
Carrera
NºMatricula
PROFESOR
Nombres inserta
Apellidos imprime
Rut
Teléfono
Edad
Departamento
Oficina
EGRESADO
Nombres Inserta
Apellidos imprime
Rut
Teléfono
Edad
Carrera
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 entradasalida 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)
Que indica que el abuelo de Nombre_A es Nombre_B
Estilo Lógico o Declarativo
♦ OPS
– Official Production System fue creado por C.L. Forgy
de la Universidad Carnegie Mellon en en la mitad de la
decada de los setenta.
– Los elementos básicos son:
• Los datos: compuestos por tres campos (atributos, valor y dato
no accesible al programador). Estas se almacenan en la memria
de trabajo (WMEworking memory element)
• Las reglas: son la estructura de representación del
conocimiento.
(nombre_regla(condición1)...(condición_n) (acción_1)...
(acción_n))
Estilo Lógico o Declarativo
♦ Ejercicios
– Baldes, Puzzle (árboles)
– Menú, menú equilibrado, agencia, universidades
(reglas)
Estilo Lógico
♦ Problema de los baldes
• Se tienen dos baldes con capacidad para 8 y 6 litros.
Se debe buscar la forma para que en el balde de 8
litros queden 4 litros de agua.
• Se hará el recorrido primero por amplitud y luego
por profundidad.
Capacidad (v8, v6)
Estado final (4, ?)
Estilo Lógico
(0,0)
(8,6)
(8,0) (0,6)
(0,0) (6,0)(2,6)(0,0)(8,6)
(8,0)(0,6)
(0,6)(8,6) (8,0)(2,0) (6,6)(8,0) (0,6)(0,0)
(2,6)(8,0) (0,2)(0,0) (0,6)(8,6) (8,4)(6,0)
(0,6)(8,2) (2,0)(0,0)
(0,2)(8,6) (4,6)(8,0)
(0,4)(8,6) (6,6)(8,0)
(0,6)(8,6) (4,0)(0,0)
Esta solución es más
optima que la razonada
Primero Amplitud
Estilo Lógico
(0,0)
(8,0) (0,6)
(2,6)(0,0)(8,6)
(0,6)(8,0)
(0,6)(8,6) (8,0)(2,0)
(2,6)(8,0) (0,2)(0,0)
(0,6)(8,2) (2,0)(0,0)
(0,2)(8,6) (4,6)(8,0)
Primero Profundidad
Estilo Lógico
(0,0)
(8,0) (0,6)
(2,6)(0,0)(8,6)
(0,6)(8,0)
(0,6)(8,6) (8,0)(2,0)
(2,6)(8,0) (0,2)(0,0)
(0,6)(8,2) (2,0)(0,0)
(0,2)(8,6) (4,6)(8,0)
Búsqueda hacia atrás
Estilo Lógico
♦ Problema del puzzle
• Se un puzzle el cual debe ser ordenado de la
siguiente forma
1 2 3
5 6
4 7 8
1 2 3
4 5 6
7 8
Estado inicial Estado final
Estilo Lógico
♦ Problema del puzzle
Nº
acción
Acción Condiciones para
aplicar
1 Mover ↑ blanco
Mover pieza de ↑ hacia ↓
Si hay una pieza arriba
2 Mover ↓ blanco
Mover pieza de ↓ hacia ↑
Si hay una pieza abajo
3 Mover blanco →
Mover pieza de → hacia ←
Si hay una pieza abajo
4 Mover blanco ←
Mover pieza de ← hacia →
Si hay una pieza a la
izquierda
Estilo Lógico
♦ Primero amplitud
1 2 3
5 6
4 7 8
1 2 3
4 5 6
7 8
2 3
1 5 6
4 7 8
1 2 3
5 6
4 7 8
2 3
1 5 6
4 7 8
1 2 3
5 6
4 7 8
1 2 3
5 6
4 7 8
1 2 3
5 6
4 7 8
1 2 3
5 6
4 7 8
1 3
5 2 6
4 7 8
1 2 3
4 5 6
7 8
1 2 3
5 7 6
4 8
2 3
1 5 6
4 7 8
2 5 3
1 6
4 7 8
1 2 3
5 6
4 7 8
1 2 3
4 6
7 5 8
1 2 3
4 5 6
7 8
1 3
5 2 6
4 7 8
1 3
5 2 6
4 7 8
1 2 3
5 7 6
4 8
1 2 3
5 7 6
4 8
1 2
5 6 3
4 7 8
1 2 3
5 6 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
2 3
1 5 6
4 7 8
1 2 3
4 5 6
7 8
1 2 3
5 6
4 7 8
1 2 3
5 6
4 7 8
1 2 3
4 5 6
7 8
1 2 3
4 5 6
7 8
1 2 3
4 6
7 5 8
1 2 3
4 5 6
7 8
4
6 4 4
57
8
6 6
Estilo Lógico o Declarativo
♦ Programa tradicional
– Dato+algoritmo+control+es
♦ 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?
♦ Alberto, Bernardo y Carlos reparten sus tardes entre
estudio y cine.
• 1- Si Alberto se queda estudiando, Bernardo se va al cine.
• 2- Cada tarde uno de los dos, Alberto o Carlos, se queda estudiando,
pero no los dos.
• 3- Bernardo y Carlos no van la misma tarde al cine.
¿Quien cree usted que pudo haber ido ayer al cine y quedado hoy
estudiando?
Estilo Funcional
♦ 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
(Massachusetts Institute of
Tecnology)
Desarrollado por Robin Miller
Aplicación Robotica, Procesamiento de Leng.
Naturales, Prueba de
Teoremas,SsistemasInteligentes
Uso educativo y poco uso
comercial
Ventajas Recursión, equivalencia de forma
entre programas y estructuras de
datos
Polimorfismo, Abstracción de
datos, compacto,
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 nombrevalor (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 xy.
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ónherramientas 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
DEFINICION EJEMPLO DE LA REALIDAD EJEMPLO DE VISUAL
BASIC
Objeto Una habitación Una ventana MDI
Clase Una puerta de la habitación Una alternativa de menú
Evento La apertura de la puerta Un click sobre el menu
Método El viento que puede provocar La rutina ejecutada cuando
la opción se acepta
Propiedades Color. Forma, textura, etc Color destacado, mensaje
lateral Ctrl-F12, etc
Estilo Orientado al Evento
♦ 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

Más contenido relacionado

La actualidad más candente

Conmutacion de circuitos y paquetes
Conmutacion de circuitos y paquetesConmutacion de circuitos y paquetes
Conmutacion de circuitos y paquetesJarvey Gonzalez
 
Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.LuiS YmAY
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPUIvan Porras
 
Integridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosIntegridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosDrakonis11
 
Tipos de módems, estandares y protocolos
Tipos de módems, estandares y protocolosTipos de módems, estandares y protocolos
Tipos de módems, estandares y protocolosLucre Castillo Lorenzo
 
automatas finitos
 automatas finitos automatas finitos
automatas finitosAnel Sosa
 
Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasJ M
 
Consideraciones para elegir un buen DBMS
Consideraciones para elegir un buen DBMSConsideraciones para elegir un buen DBMS
Consideraciones para elegir un buen DBMSevavivez
 
Unidad 2 concepto de Programa,Proceso y Procesador
Unidad 2  concepto de Programa,Proceso y ProcesadorUnidad 2  concepto de Programa,Proceso y Procesador
Unidad 2 concepto de Programa,Proceso y ProcesadorMario Alberto Antonio Lopez
 
Origen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redesOrigen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redesKim Sorel Rush
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turingAnel Sosa
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPUEduardo Suarez
 

La actualidad más candente (20)

Conmutacion de circuitos y paquetes
Conmutacion de circuitos y paquetesConmutacion de circuitos y paquetes
Conmutacion de circuitos y paquetes
 
Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
Integridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosIntegridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De Datos
 
Tipos de módems, estandares y protocolos
Tipos de módems, estandares y protocolosTipos de módems, estandares y protocolos
Tipos de módems, estandares y protocolos
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o Hebras
 
Gestion de Memoria
Gestion de MemoriaGestion de Memoria
Gestion de Memoria
 
Consideraciones para elegir un buen DBMS
Consideraciones para elegir un buen DBMSConsideraciones para elegir un buen DBMS
Consideraciones para elegir un buen DBMS
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Unidad 2 concepto de Programa,Proceso y Procesador
Unidad 2  concepto de Programa,Proceso y ProcesadorUnidad 2  concepto de Programa,Proceso y Procesador
Unidad 2 concepto de Programa,Proceso y Procesador
 
Origen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redesOrigen del Modelo OSI y su impacto en als estructuras de redes
Origen del Modelo OSI y su impacto en als estructuras de redes
 
Sistemas embebidos
Sistemas embebidosSistemas embebidos
Sistemas embebidos
 
Arquitecturas de computadoras
Arquitecturas de computadorasArquitecturas de computadoras
Arquitecturas de computadoras
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turing
 
Ingeniería de software modelo incremental
Ingeniería de software  modelo incrementalIngeniería de software  modelo incremental
Ingeniería de software modelo incremental
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
 

Destacado

Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcionalAlejandra MA
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOFredy Olaya
 
Estandares de Codigo (Emanuel)
Estandares de Codigo (Emanuel)Estandares de Codigo (Emanuel)
Estandares de Codigo (Emanuel)PiXeL16
 
PARADIGMA LOGICO
PARADIGMA LOGICOPARADIGMA LOGICO
PARADIGMA LOGICOFredy Olaya
 
Evaluacion De Expresiones
Evaluacion De ExpresionesEvaluacion De Expresiones
Evaluacion De Expresionesrezzaca
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacionyamy matin
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programaciónMay Ibarra
 
Programa estilos
Programa estilos Programa estilos
Programa estilos ruizstvn07
 
Cuestionario. Respuestas personales
Cuestionario. Respuestas personalesCuestionario. Respuestas personales
Cuestionario. Respuestas personalesVicktor Criollo
 
Lenguajes de programación lógica
Lenguajes de programación lógicaLenguajes de programación lógica
Lenguajes de programación lógicaDarwin_Cusme
 
Introduccion a la logica de programacion
Introduccion a la logica de programacionIntroduccion a la logica de programacion
Introduccion a la logica de programacionnmqy28
 
Acertijos matemáticos
Acertijos matemáticosAcertijos matemáticos
Acertijos matemáticosBelindaEscobar
 

Destacado (20)

Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVO
 
Estandares de Codigo (Emanuel)
Estandares de Codigo (Emanuel)Estandares de Codigo (Emanuel)
Estandares de Codigo (Emanuel)
 
Contadores y Acumuladores
Contadores y AcumuladoresContadores y Acumuladores
Contadores y Acumuladores
 
PARADIGMA LOGICO
PARADIGMA LOGICOPARADIGMA LOGICO
PARADIGMA LOGICO
 
Cuestionario consultado
Cuestionario consultadoCuestionario consultado
Cuestionario consultado
 
Evaluacion De Expresiones
Evaluacion De ExpresionesEvaluacion De Expresiones
Evaluacion De Expresiones
 
Lenguajesprog
LenguajesprogLenguajesprog
Lenguajesprog
 
Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacion
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Programa estilos
Programa estilos Programa estilos
Programa estilos
 
Cuestionario. Respuestas personales
Cuestionario. Respuestas personalesCuestionario. Respuestas personales
Cuestionario. Respuestas personales
 
C E09 S06 D C
C E09  S06  D CC E09  S06  D C
C E09 S06 D C
 
Lenguajes de programación lógica
Lenguajes de programación lógicaLenguajes de programación lógica
Lenguajes de programación lógica
 
Introduccion a la logica de programacion
Introduccion a la logica de programacionIntroduccion a la logica de programacion
Introduccion a la logica de programacion
 
Lógica de programación
Lógica de programaciónLógica de programación
Lógica de programación
 
Tutorial informatica
Tutorial informaticaTutorial informatica
Tutorial informatica
 
Tipos de redes examen
Tipos de redes examenTipos de redes examen
Tipos de redes examen
 
Acertijos matemáticos
Acertijos matemáticosAcertijos matemáticos
Acertijos matemáticos
 
Trabajo neto
Trabajo netoTrabajo neto
Trabajo neto
 

Similar a Estilos de programación y sus lenguajes

Similar a Estilos de programación y sus lenguajes (20)

Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
Tema 1[1][1]
Tema 1[1][1]Tema 1[1][1]
Tema 1[1][1]
 
Programacion java
Programacion javaProgramacion java
Programacion java
 
Javaqert
JavaqertJavaqert
Javaqert
 
Javaqert
JavaqertJavaqert
Javaqert
 
Clase 5
Clase 5Clase 5
Clase 5
 
Software Clips
Software ClipsSoftware Clips
Software Clips
 
Lenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de Programación
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Curso de C++ (2014)
Curso de C++ (2014)Curso de C++ (2014)
Curso de C++ (2014)
 
Lenguaje C (pdf)
Lenguaje C (pdf)Lenguaje C (pdf)
Lenguaje C (pdf)
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
TEMA Nº 1
TEMA Nº 1TEMA Nº 1
TEMA Nº 1
 
Presentación1
Presentación1Presentación1
Presentación1
 
Lenguajes_de_Programacion
Lenguajes_de_ProgramacionLenguajes_de_Programacion
Lenguajes_de_Programacion
 
Programacion web introduccion diego zuluaga
Programacion web introduccion diego zuluagaProgramacion web introduccion diego zuluaga
Programacion web introduccion diego zuluaga
 
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 08
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 08UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 08
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 08
 
Programas sim
Programas simProgramas sim
Programas sim
 
[Ebook] super manual de a lgoritmia
[Ebook] super manual de a lgoritmia[Ebook] super manual de a lgoritmia
[Ebook] super manual de a lgoritmia
 
PROGRAMACION-copia.pptx
PROGRAMACION-copia.pptxPROGRAMACION-copia.pptx
PROGRAMACION-copia.pptx
 

Más de Pedro Contreras Flores

Servicio de información para bibliotecas
Servicio de información para bibliotecasServicio de información para bibliotecas
Servicio de información para bibliotecasPedro Contreras Flores
 
Business intelligence (bi) y big data0
Business intelligence (bi) y big data0Business intelligence (bi) y big data0
Business intelligence (bi) y big data0Pedro Contreras Flores
 
Sistemas y servicios de informacion intro
Sistemas y servicios de informacion introSistemas y servicios de informacion intro
Sistemas y servicios de informacion introPedro Contreras Flores
 
Hormigas arfificiales - Mauro San Martín
Hormigas arfificiales - Mauro San MartínHormigas arfificiales - Mauro San Martín
Hormigas arfificiales - Mauro San MartínPedro Contreras Flores
 

Más de Pedro Contreras Flores (20)

El dilema de las redes sociales
El dilema de las redes sociales El dilema de las redes sociales
El dilema de las redes sociales
 
Tipos de sistemas de información
Tipos de sistemas de informaciónTipos de sistemas de información
Tipos de sistemas de información
 
Text Analytics - JCC2014 Kimelfeld
Text Analytics - JCC2014 KimelfeldText Analytics - JCC2014 Kimelfeld
Text Analytics - JCC2014 Kimelfeld
 
Servicio de información para bibliotecas
Servicio de información para bibliotecasServicio de información para bibliotecas
Servicio de información para bibliotecas
 
Gestión del conocimiento
Gestión del conocimientoGestión del conocimiento
Gestión del conocimiento
 
Business intelligence (bi) y big data0
Business intelligence (bi) y big data0Business intelligence (bi) y big data0
Business intelligence (bi) y big data0
 
Bibliotecas moviles y calidad
Bibliotecas moviles y calidadBibliotecas moviles y calidad
Bibliotecas moviles y calidad
 
Sistemas y servicios de informacion intro
Sistemas y servicios de informacion introSistemas y servicios de informacion intro
Sistemas y servicios de informacion intro
 
Plataforma de Digitalización
Plataforma de DigitalizaciónPlataforma de Digitalización
Plataforma de Digitalización
 
Red de transporte urbano
Red de transporte urbanoRed de transporte urbano
Red de transporte urbano
 
Packing
PackingPacking
Packing
 
Hormigas arfificiales - Mauro San Martín
Hormigas arfificiales - Mauro San MartínHormigas arfificiales - Mauro San Martín
Hormigas arfificiales - Mauro San Martín
 
Tecnologías de la información
Tecnologías de la informaciónTecnologías de la información
Tecnologías de la información
 
Modelamiento y simulación
Modelamiento y simulaciónModelamiento y simulación
Modelamiento y simulación
 
Java 3D
Java 3DJava 3D
Java 3D
 
Complementos de programación
Complementos de programaciónComplementos de programación
Complementos de programación
 
4 memoria dinamica
4 memoria dinamica4 memoria dinamica
4 memoria dinamica
 
3 recursividad
3 recursividad3 recursividad
3 recursividad
 
2 punteros y lenguaje c
2 punteros y lenguaje c2 punteros y lenguaje c
2 punteros y lenguaje c
 
Programación grafica en lenguaje c
Programación grafica en lenguaje cProgramación grafica en lenguaje c
Programación grafica en lenguaje c
 

Último

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
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
 
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
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
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
 
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
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
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
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
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
 
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
 
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
 
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
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
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
 

Último (20)

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
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
 
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
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
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
 
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
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
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
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
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
 
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
 
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
 
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
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
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
 

Estilos de programación y sus lenguajes

  • 1. Estilos de Programación y sus Lenguajes Preparado por Pedro Contreras F. pcontreras@informatica.uda.cl DIICC - UDA
  • 2. Definiciones ♦ Lenguaje ♦ Programación ♦ Programador ♦ Analista ♦ Ejecutar
  • 3. Origen y Evolución. ♦ Clasificación por Tipo de Solución – Lenguajes basados en el cálculo númerico (Jovial, Fortran, Algol) – Lenguajes para negocios (Flow matic, CBL, Cobol) – Lenguajes para inteligencia artificial (IPL, Lisp, Comit, Snobol) – Lenguajes para sistemas operativos (PL/I, BCPL, B, C) – Lenguajes para formato (SGML, HTML, PostScript, Vbscript, Javascript, Pearl)
  • 4. Origen y Evolución. ♦ Clasificación por generaciones. – 1º Generación: Código Binario – 2º Generación: Lenguaje Ensamblador – 3º Generación: Lenguajes de Alto nivel (C, etc.) – 4º Generación: • Entornos RAD (Rapid Application Development) • Programación Visual • Modelo de componentes reutilizables – 5º Generación: Lenguajes de programación declarativos.
  • 5. Origen y Evolución. ♦ Clasificación por procesos. – Lenguaje Máquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en téminos de la unidad de memoria mas pequeña el bit (dígito binario 0 o 1). – Lenguaje de Bajo Nivel (ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabeticos conocidos como mnemotecnicos para las operaciones y direcciones simbolicas. – Lenguaje de Alto Nivel: Los lenguajes de alto nivel (Basic , Pascal, Cobol, Fortran,C, C++, etc. ) son aquellos en los que las instrucciones o sentencias a la computadora son escritascon palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensión del programa.
  • 6. Cronología Años Hardware – Métodos - Lenguajes 1951-55 Tubos al vacío – Lenguajes ensambladores – Uso experimental de compiladores de expresiones. 1956-60 Cintas magnéticas, circuitos de transistores, memorias de núcleo – Gramáticas BNF, interpretes – Fortran, Algol58, Cobol, Lisp. 1961-65 Arquitecturas conpatibles, discos magneticos – SO de multiprogramación, compiladores por sintaxis – Cobol61, Algol60 (revisado), Snobol, Jovial, notación APL. 1966-70 Minicomputadoras, Microprogamación y circuitos integrados – Sistemas de compartición de tiempos, compiladores optimizados – APL, Fortran66, Cobo65l, Algol68, Snobol4, Basic, PL/I, Simula 67, Algol-W. 1971-75 Microcomputadoras, memorias de semiconductores – Programación estructurada, Crecimiento de la I.Sw. Como disciplina – Pascal, Cobol74, PL/I (estandar), C, Scheme, Prolog. 1976-80 Microcomputadoras de calidad comercial, sistemas de gran almacenamiento y computación distribuida – Técnicas de programación concurrente, incrustada y en tiempo real. – SmallTalk, Ada, Fortran 77, ML 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)
  • 7. Estilos de programación Estilo Descripción Imperativo Entrada, procesamiento y salida de datos. Funcional Utilización de funciones para c/proceso. Lógico Operaciones lógicas y definición de reglas. Orientado al Objeto El enfoque pretende utilizar la relación del hombre con objetos, clases y métodos. Orientado al Evento Herramientas resultantes de la POO y que permiten trabajar con eventos, atributos y objetos encapsulados. Orientado al Formato Son lenguajes interpretes que permiten internamente declarar los formatos de salida del texto, imagen, grafica, etc.
  • 9. Estilo Imperativo ♦ ORIGEN – Resultado de la arquitectura de Von Neumann, que establece una secuencia de celdas, llamada memoria, donde se guarda en forma codificada los datos e instrucciones. – Además un procesador de ejecutar en forma secuencial una serie de operaciones, principalmente aritméticas y booleanas, llamadas comandos. ♦ CONCEPTOS – Datos: números, caracteres y booleanos, codificados y guardados en las celdas de memoria. – Variables: nombres de las celdas donde están los datos. – Instrucciones: Asignaciones, condicione, iteraciones y entrada/salida codificacdas como secuencia de comandos. – Programa: combinacion de declaraciones de variables y secuencias de instrucciones la cual se puede guardar en memoria y, despues de un proceso de compilación, se ejecuta por el procesador.
  • 10. Estilo Imperativo ♦ EJEMPLO – Algunos de los lenguajes de este tipo son: Fortran, Algol, Pascal, C, Modula-2, Ada. 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.
  • 11. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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++)
  • 16. Estilo Orientado al Objeto ♦ RECOMENDACIÓN – Dejar de lado todas las ideas preconcebidas acerca de cómo debe realizarse un programa. ♦ LENGUAJES PARA POO
  • 17. Estilo Orientado al Objeto ♦ CONCEPTOS – Clases – Objetos – Instancias – Métodos – Polimorfismo – Herencia – Encapsulación
  • 18. Estilo Orientado al Objeto ♦ Plan de Implementación en POO – Planificar árbol (jerarquía) clases. VEGETALES ARBOLES ARBOLES FRUTALES NARANJO MANZANO CLASE1 CLASE2 CLASE3 CLASE 3.2 CLASE 3.1
  • 19. Estilo Orientado al Objeto ♦ Plan de Implementación en POO – Diseño de estructura de clases – Definir métodos que trabajan con estos datos – Definir interrelaciones – Utilización de herramientas como Rational Rose – Nunca el modelo diseñado sobre papel o la herramienta es el modelo finalmente implementado.
  • 20. Estilo Orientado al Objeto ♦ Consejos para POO – Divide y vencerás • Definir método para cada tarea pequeña de la clase – No piense en forma procedural • Los objetos son de verdad, no son cajas de almacenamiento de código. – Los métodos no son funciones • No defina métodos como si fueran funciones, sino como acciones naturales del objeto. ♦ Pasos en el diseño para POO – Identificar el ámbito de trabajo: establecer clases más bajas o abstractas. – Identificar los distintos sub ámbitos de trabajo: instancias. – Especificar objetos finales: establecer relaciones entre clases del ámbito y sub ámbito.
  • 21. Estilo Orientado al Objeto ♦ De la teoría a la realidad – Operador de envío • Es el separador entre el objeto y los métodos. Cada lenguaje tiene uno (en C++ esta “.”, y otros “:”) • Ejemplo: enviar el mensaje Caminar al objeto Juan de la clase hombre hmrJuan.Caminar() EJERCICIO: Para la clase felinos (gato, león). Además definir árbol de clases, métodos originales y métodos nuevos.
  • 22. 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();
  • 23. 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”; }
  • 24. 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>...
  • 25. 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();
  • 26. 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.
  • 33. Estilo Orientado al Objeto ♦ Sistema Universitario PERSONA Nombres Inserta Apellidos imprime Rut Teléfono Edad ESTUDIANTE Nombres Inserta Apellidos imprime Rut Teléfono Edad Carrera NºMatricula PROFESOR Nombres inserta Apellidos imprime Rut Teléfono Edad Departamento Oficina EGRESADO Nombres Inserta Apellidos imprime Rut Teléfono Edad Carrera NºMatricula Tesis Avance
  • 38. 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.
  • 39. 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 entradasalida complejas, pero posibles
  • 40. 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) Que indica que el abuelo de Nombre_A es Nombre_B
  • 41. Estilo Lógico o Declarativo ♦ OPS – Official Production System fue creado por C.L. Forgy de la Universidad Carnegie Mellon en en la mitad de la decada de los setenta. – Los elementos básicos son: • Los datos: compuestos por tres campos (atributos, valor y dato no accesible al programador). Estas se almacenan en la memria de trabajo (WMEworking memory element) • Las reglas: son la estructura de representación del conocimiento. (nombre_regla(condición1)...(condición_n) (acción_1)... (acción_n))
  • 42. Estilo Lógico o Declarativo ♦ Ejercicios – Baldes, Puzzle (árboles) – Menú, menú equilibrado, agencia, universidades (reglas)
  • 43. Estilo Lógico ♦ Problema de los baldes • Se tienen dos baldes con capacidad para 8 y 6 litros. Se debe buscar la forma para que en el balde de 8 litros queden 4 litros de agua. • Se hará el recorrido primero por amplitud y luego por profundidad. Capacidad (v8, v6) Estado final (4, ?)
  • 44. Estilo Lógico (0,0) (8,6) (8,0) (0,6) (0,0) (6,0)(2,6)(0,0)(8,6) (8,0)(0,6) (0,6)(8,6) (8,0)(2,0) (6,6)(8,0) (0,6)(0,0) (2,6)(8,0) (0,2)(0,0) (0,6)(8,6) (8,4)(6,0) (0,6)(8,2) (2,0)(0,0) (0,2)(8,6) (4,6)(8,0) (0,4)(8,6) (6,6)(8,0) (0,6)(8,6) (4,0)(0,0) Esta solución es más optima que la razonada Primero Amplitud
  • 45. Estilo Lógico (0,0) (8,0) (0,6) (2,6)(0,0)(8,6) (0,6)(8,0) (0,6)(8,6) (8,0)(2,0) (2,6)(8,0) (0,2)(0,0) (0,6)(8,2) (2,0)(0,0) (0,2)(8,6) (4,6)(8,0) Primero Profundidad
  • 46. Estilo Lógico (0,0) (8,0) (0,6) (2,6)(0,0)(8,6) (0,6)(8,0) (0,6)(8,6) (8,0)(2,0) (2,6)(8,0) (0,2)(0,0) (0,6)(8,2) (2,0)(0,0) (0,2)(8,6) (4,6)(8,0) Búsqueda hacia atrás
  • 47. Estilo Lógico ♦ Problema del puzzle • Se un puzzle el cual debe ser ordenado de la siguiente forma 1 2 3 5 6 4 7 8 1 2 3 4 5 6 7 8 Estado inicial Estado final
  • 48. Estilo Lógico ♦ Problema del puzzle Nº acción Acción Condiciones para aplicar 1 Mover ↑ blanco Mover pieza de ↑ hacia ↓ Si hay una pieza arriba 2 Mover ↓ blanco Mover pieza de ↓ hacia ↑ Si hay una pieza abajo 3 Mover blanco → Mover pieza de → hacia ← Si hay una pieza abajo 4 Mover blanco ← Mover pieza de ← hacia → Si hay una pieza a la izquierda
  • 49. Estilo Lógico ♦ Primero amplitud 1 2 3 5 6 4 7 8 1 2 3 4 5 6 7 8 2 3 1 5 6 4 7 8 1 2 3 5 6 4 7 8 2 3 1 5 6 4 7 8 1 2 3 5 6 4 7 8 1 2 3 5 6 4 7 8 1 2 3 5 6 4 7 8 1 2 3 5 6 4 7 8 1 3 5 2 6 4 7 8 1 2 3 4 5 6 7 8 1 2 3 5 7 6 4 8 2 3 1 5 6 4 7 8 2 5 3 1 6 4 7 8 1 2 3 5 6 4 7 8 1 2 3 4 6 7 5 8 1 2 3 4 5 6 7 8 1 3 5 2 6 4 7 8 1 3 5 2 6 4 7 8 1 2 3 5 7 6 4 8 1 2 3 5 7 6 4 8 1 2 5 6 3 4 7 8 1 2 3 5 6 8 4 7
  • 50. 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 2 3 1 5 6 4 7 8 1 2 3 4 5 6 7 8 1 2 3 5 6 4 7 8 1 2 3 5 6 4 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 6 7 5 8 1 2 3 4 5 6 7 8 4 6 4 4 57 8 6 6
  • 51. Estilo Lógico o Declarativo ♦ Programa tradicional – Dato+algoritmo+control+es ♦ 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
  • 52. 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.
  • 53. Estilo Lógico o Declarativo
  • 54. Estilo Lógico o Declarativo
  • 55. Estilo Lógico o Declarativo
  • 56. Estilo Lógico o Declarativo
  • 57. Estilo Lógico o Declarativo
  • 58. 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.
  • 59. 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.
  • 60. 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í.
  • 61. 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
  • 62. 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?
  • 63. Estilo Lógico o Declarativo ♦ Identificar sujetos • Uno_toxico_otro_no • Uno_no_toxico ♦ Hechos • Toxico • No_toxico ♦ Solución • findall
  • 64. 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? ♦ Alberto, Bernardo y Carlos reparten sus tardes entre estudio y cine. • 1- Si Alberto se queda estudiando, Bernardo se va al cine. • 2- Cada tarde uno de los dos, Alberto o Carlos, se queda estudiando, pero no los dos. • 3- Bernardo y Carlos no van la misma tarde al cine. ¿Quien cree usted que pudo haber ido ayer al cine y quedado hoy estudiando?
  • 65. Estilo Funcional ♦ 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 (Massachusetts Institute of Tecnology) Desarrollado por Robin Miller Aplicación Robotica, Procesamiento de Leng. Naturales, Prueba de Teoremas,SsistemasInteligentes Uso educativo y poco uso comercial Ventajas Recursión, equivalencia de forma entre programas y estructuras de datos Polimorfismo, Abstracción de datos, compacto,
  • 66. 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:
  • 67. 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 nombrevalor (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
  • 68. 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))
  • 69. 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)))
  • 70. 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
  • 71. 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 xy.
  • 72. 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
  • 73. 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
  • 74. Estilo Orientado al Evento ♦ Origen – Son herramientas gráficas de programaciónherramientas 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.
  • 75. 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 DEFINICION EJEMPLO DE LA REALIDAD EJEMPLO DE VISUAL BASIC Objeto Una habitación Una ventana MDI Clase Una puerta de la habitación Una alternativa de menú Evento La apertura de la puerta Un click sobre el menu Método El viento que puede provocar La rutina ejecutada cuando la opción se acepta Propiedades Color. Forma, textura, etc Color destacado, mensaje lateral Ctrl-F12, etc
  • 76. Estilo Orientado al Evento ♦ Principales herramientas • Visual Studio (VB,VJ++,VC++) (Microsoft) • Delphi (Borland) • Power Builder (PowerSoft) • Jbuilder (Borland)
  • 77. 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.
  • 78. 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
  • 80. 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