Estilos de programación y sus lenguajes

80
Estilos de Programación y sus Lenguajes Preparado por Pedro Contreras F. [email protected] DIICC - UDA

Transcript of Estilos de programación y sus lenguajes

Page 1: Estilos de programación y sus lenguajes

Estilos de Programación

y sus Lenguajes

Preparado por Pedro Contreras [email protected]

DIICC - UDA

Page 2: Estilos de programación y sus lenguajes

Definiciones

Lenguaje Programación Programador Analista Ejecutar

Page 3: Estilos de programación y sus lenguajes

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)

Page 4: Estilos de programación y sus lenguajes

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.

Page 5: Estilos de programación y sus lenguajes

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.

Page 6: Estilos de programación y sus lenguajes

CronologíaAñ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)

Page 7: Estilos de programación y sus lenguajes

Estilos de programación

Estilo DescripciónImperativo 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.

Page 8: Estilos de programación y sus lenguajes

Estilo Imperativo

Page 9: Estilos de programación y sus lenguajes

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.

Page 10: Estilos de programación y sus lenguajes

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=50Var i=2..n;

j=2..n;I_es_primo=boolean;

Beginfor i=2 to n dobegin 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);

endEnd.

Page 11: Estilos de programación y sus lenguajes

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.

Page 12: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 13: Estilos de programación y sus lenguajes

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.

Page 14: Estilos de programación y sus lenguajes

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.

Page 15: Estilos de programación y sus lenguajes

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++)

Page 16: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

RECOMENDACIÓN– Dejar de lado todas las ideas preconcebidas acerca de cómo

debe realizarse un programa.

LENGUAJES PARA POO

Page 17: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

CONCEPTOS– Clases– Objetos– Instancias– Métodos– Polimorfismo– Herencia– Encapsulación

EJEMPLOS

EVALUACIÓN

Page 18: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Plan de Implementación en POO– Planificar árbol (jerarquía) clases.

VEGETALES

ARBOLES

ARBOLESFRUTALES

NARANJO MANZANO

CLASE1

CLASE2

CLASE3

CLASE 3.2 CLASE 3.1

Page 19: Estilos de programación y sus lenguajes

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.

Page 20: Estilos de programación y sus lenguajes

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.

Page 21: Estilos de programación y sus lenguajes

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.

Page 22: Estilos de programación y sus lenguajes

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();

Page 23: Estilos de programación y sus lenguajes

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 ceroHombre hmrEstandar= new Hombre();Realiza lo siguiente:Hombre::Hombre(){This.edad=30;This.estatura=175;This.ojos=“marrón”;}

Page 24: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Destructoresfinalize()

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>...

Page 25: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Ejemplos en variablesPublic String sNombre;

Protected int nEdad;

Private long nAcceso;

Ejemplos en métodosPublic void Imprimir();

Protected int Calcular();

Private string Grabar();

Page 26: Estilos de programación y sus lenguajes

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.

Page 27: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 28: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 29: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 30: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 31: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 32: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 33: Estilos de programación y sus lenguajes

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

Page 34: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 35: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 36: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 37: Estilos de programación y sus lenguajes

Estilo Orientado al Objeto

Page 38: Estilos de programación y sus lenguajes

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.

Page 39: Estilos de programación y sus lenguajes

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

Page 40: Estilos de programación y sus lenguajes

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

Page 41: Estilos de programación y sus lenguajes

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 (WME\working 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))

Page 42: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Ejercicios– Baldes, Puzzle (árboles)– Menú, menú equilibrado, agencia,

universidades (reglas)

Page 43: Estilos de programación y sus lenguajes

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, ?)

Page 44: Estilos de programación y sus lenguajes

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

Page 45: Estilos de programación y sus lenguajes

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

Page 46: Estilos de programación y sus lenguajes

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

Page 47: Estilos de programación y sus lenguajes

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

Page 48: Estilos de programación y sus lenguajes

Estilo Lógico

Problema del puzzle

Nº acción

Acción Condiciones para aplicar

1 Mover blancoMover pieza de hacia

Si hay una pieza arriba

2 Mover blancoMover 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

Page 49: Estilos de programación y sus lenguajes

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

Page 50: Estilos de programación y sus lenguajes

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

Page 51: Estilos de programación y sus lenguajes

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

Page 52: Estilos de programación y sus lenguajes

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.

Page 53: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Page 54: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Page 55: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Page 56: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Page 57: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Page 58: Estilos de programación y sus lenguajes

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.

Page 59: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Solución de AcertijosEn general, la base de conocimiento que

permita lasolució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.

Page 60: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Ejercicio 1Las 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í.

Page 61: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Identificar sujetos• Mujeres

• Ocupaciones

Hechos• Son eliminaciones

(no_es,alérgica,relacionado,solo_escucha,incompatibles,diferentes)

Solución• respuesta

Page 62: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Ejercicio 2Sobre líquidos venenososEl Sr. Ido, el químico, tiene seis frascos llenos de líquidos coloreados. Hay uno decada color: rojo, anaranjado, amarillo, verde, azul y violeta. El señor Ido sabeque 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 defrascos 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 sinveneno:

– 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 esvenenoso¿Qué frascos tienen veneno?

Page 63: Estilos de programación y sus lenguajes

Estilo Lógico o Declarativo

Identificar sujetos• Uno_toxico_otro_no

• Uno_no_toxico

Hechos• Toxico

• No_toxico

Solución• findall

Page 64: Estilos de programación y sus lenguajes

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?

Page 65: Estilos de programación y sus lenguajes

Estilo Funcional

Características principales• Programación aplicativa o funcional

• Se utiliza almacenamiento en montículos

• Se utilizan estructura de listas

Principales lenguajesLisp 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,

Page 66: Estilos de programación y sus lenguajes

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:

Page 67: Estilos de programación y sus lenguajes

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

Page 68: Estilos de programación y sus lenguajes

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))

Page 69: Estilos de programación y sus lenguajes

Estilo Funcional-Lisp

Entradas y salidas: Las más conocidas sonRead lee desde tecladoOpen abre un archivo de datosPrint imprime objeto legibleLoad carga archivo en memoriaTrace function_none rastrea ejecucion para encontrar erroresSetq nombre_pt(open nombre_archivo) declara a variable

apuntando aun archivoHelp proporcina ayudabye 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)))

Page 70: Estilos de programación y sus lenguajes

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

Page 71: Estilos de programación y sus lenguajes

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.

Page 72: Estilos de programación y sus lenguajes

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

Page 73: Estilos de programación y sus lenguajes

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

Page 74: Estilos de programación y sus lenguajes

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.

Page 75: Estilos de programación y sus lenguajes

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

Page 76: Estilos de programación y sus lenguajes

Estilo Orientado al Evento

Principales herramientas• Visual Studio (VB,VJ++,VC++) (Microsoft)

• Delphi (Borland)

• Power Builder (PowerSoft)

• Jbuilder (Borland)

Page 77: Estilos de programación y sus lenguajes

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.

Page 78: Estilos de programación y sus lenguajes

Estilo Orientado al EventoVisual 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

Page 79: Estilos de programación y sus lenguajes

Estilo Paralelo

Page 80: Estilos de programación y sus lenguajes

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