Download Paradigmas de Programación
Document related concepts
Transcript
Cátedra: PARADIGMAS DE PROGRAMACION Código: K9529 Carrera: INGENIERIA EN SISTEMA DE INFORMACIÓN Plan: ORD. Nº 1150 Régimen: CUATRIMESTRAL Año: 2013 Horas semanales: 8 Paradigmas de Programación Programa Analítico Introducción a los Paradigmas Lenguajes de programación: Objetivos. Cualidades Deseables. Paradigmas Funcional, lógico y orientado a objetos: Características principales y evolución. Manejo de la complejidad: abstracción, descomposición y ocultamiento de datos y operaciones. Otros conceptos importantes: cohesión, acoplamiento, precondiciones y postcondiciones. Paradigma Orientado a Objetos Introducción. Objetos. Fundamentos. Breve historia. Simulación. Conceptos básicos: Objeto. Comportamiento y Estado Interno. Responsabilidades. Mensajes y Métodos. Atributos. Emisor y receptor. Encapsulamiento. Clase. Tipos abstractos de datos vs Objetos. Clase abstracta y concreta. Instancia. Ejemplar. Identidad. Composición. Herencia. Subclase y superclase. Jerarquía de clases, árbol y bosque. Costos y beneficios de la herencia. Heurísticas para crear subclases. Polimorfismo: paramétrico y sobrecarga. Herencia múltiple. Otras relaciones entre clases y objetos. Conceptos avanzados: roles y objetos. Implementación: Enlace estático y dinámico. Ventajas y Desventajas de la Orientación a Objetos. OBJECT PASCAL: Características principales. Construcción de una aplicación. SMALLTALK: Elementos del lenguaje. Sintaxis. Palabras reservadas. El sistema de clases. Descripción de las clases más importantes. Ambiente de trabajo (browsers, inspector, workspaces, debugger). Metaclases. Métodos y variables de Clase. Construcción de una aplicación. Paradigma Funcional Introducción. Principios. Conceptos principales: Funciones. Transparencia referencial. Diferencias con la Programación Imperativa. Recursividad. Listas. Polimorfismo. Funciones sobre listas. Funciones de orden superior. Evaluación tardía. Cálculo Lambda. LISP: Elementos del lenguaje. Átomos. Listas. Operaciones básicas. Definición de funciones. Expresiones Aritméticas. Otras funciones. Aplicaciones Paradigma Lógico Introducción a la Programación Lógica. Principios. Cálculo de enunciados. Cálculo de Predicados de primer orden. Relaciones. Cláusulas de Horn. Reglas, hechos y consultas. Deducción. Variables lógicas. Estados: bound y unbound. Variable anónima. Unificación. Negación y fracaso. PROLOG: Elementos del lenguaje. Definición de predicados. Programas y consultas. Orden de evaluación. Control. Árbol de búsqueda, backtracking y cortes. Aplicaciones Otros Paradigmas Paralelo y distribuido. Orientados al acceso. Lenguajes de estructura de datos única. Programación de Flujo de datos. Lenguajes pequeños. Lenguajes de Bases de Datos. Lenguajes de tiempo real. Orientación a Aspectos. Bibliografía Título Programming Language Essentials Características Autores Editorial Descripción Temas Autores Editorial Descripción Ravi Sethi Addison Wesley Libro sobre las características generales de los lenguajes de programación. Contiene los distintos paradigmas Elementos de un lenguaje de programación. Asignación. Procedimientos. Encapsulamiento. Herencia. Programación Funcional, Lógica, Concurrente. Descripción de lenguajes. Autores Editorial Descripción Timothy Budd Addison Wesley Libro sobre Orientación a Objetos, con ejemplos en distintos lenguajes: Object Pascal, C++, Objetive-C, Smalltalk. Diseño por responsabilidades. Clases y métodos. Mensajes ejemplares e iniciación. Herencia. Enlace estático y dinámico. Herencia múltiple. Polimorfismo. Visibilidad y dependencia. Lenguajes de Programación Conceptos y constructores Temas Introducción a la Programación Orientada a Objetos Temas Autores Objetos. Conceptos, Métodos y Herramientas Editorial Descripción Temas Descubra SmallTalk Henri Bal. Dirk Grune. Addison Wesley Libro sobre las características generales de los lenguajes de programación. Contiene los conceptos más importantes de los distintos paradigmas. Aspectos de los lenguajes de programación. Lenguajes imperativos, orientados a objetos, funcionales, lógicos, paralelos y distribuidos. Otros paradigmas. Autores Editorial Descripción Mokrane Bouzaghoub. Georges Gardarin. Patrick Valduriez. Eyrolles. Libro sobre Programación, Análisis y Diseño Orientado o Objetos. También contiene conceptos sobre Bases de Datos Orientadas a Objetos. Conceptos Orientados a Objetos. Lenguajes O.O. Bases de Datos O.O. y normalización. Análisis y Diseño O.O. Wilf Lalonde Addison-Wesley Libro básico sobre Orientación a Objetos aplicando Smalltalk/V. Conveniente para iniciarse en este entorno de programación. SmallTalk. Best practice patterns Temas Smalltalk: mensajes, receptores y selectores. Áreas de trabajo y transcript. Métodos, clases y depurador. Jerarquía de clases. Biblioteca de Smalltalk. Autores Editorial Descripción Kent Beck Prentice Hall Libro sobre técnicas de programación en Smalltalk para aprovechar todo su potencial. Patrones. Métodos y Mensajes. Variables de instancia y variables temporales. Colecciones. Clases. Ejemplo de desarrollo en Smalltalk. Temas Autores Editorial Descripción Object Oriented Programming Temas LISP Autores Editorial Descripción Temas Logic, Programming And PROLOG Autores Editorial Descripción Temas Autores Brad Cox. Andrew Novobilski Addison Wesley Este libro presenta los conceptos básicos de la Orientación a Objetos y compara las ventajas y desventajas de utilizar lenguajes adaptados a objetos (híbridos) versus lenguajes puros. Objetivos de la Orientación a Objetos. Objetos, Mensajes y encapsulamiento. Clases y herencia. Clases básicas. Colecciones. Interfaces. Desarrollo de ejemplos comparados en Ada, C++, Objetive-C y Smalltalk-80 Ulises Cortés. Carlos Sierra. Marcombo Conceptos de programación funcional aplicando LISP. No hace énfasis en la programación funcional pura, sino que la mezcla con instrucciones del paradigma imperativo. Expresiones simbólicas, átomos y listas. Predicados. Entrada/salida. Recursividad e iteración. Estructuras. Aplicaciones. Ulf Nilsson. Jan Matuszynski. Wiley Contiene conceptos básicos sobre Lógica matemática; posteriormente explica como transformar las expresiones lógicas en programación, y por último analiza el caso particular del lenguaje Prolog. Incluye también programación lógica con concurrencia y bases de datos deductivas. Lógica e inferencia. Cláusulas. Unificación. Negación. Lógica y Bases de Datos. Lógica y Sistemas Expertos. Gramáticas. Esquemas alternativos de lógica. Iván Bratko Editorial Descripción PROLOG, programming For Artificial Intelligence The Essence of Logic Temas Autores Editorial Descripción Temas BIBLIOGRAFÍA COMPLEMENTARIA Software Utilizado Addison Wesley Contiene conceptos básicos y avanzados sobre Prolog, y su aplicación a sistemas basados en el conocimiento, en especial Sistemas Expertos. PROLOG: reglas, sintáxis, listas, operadores. Estructuras de datos. Backtracking. Entrada/Salida. Representación de árboles. Inteligencia Artificial: problema y estrategias de solución. Búsquedas y heurística. Sistemas Expertos y represtanción del conocimiento. Sistemas de aprendizaje. John Kelly Prentice Hall Contiene las bases matemáticas formales de la lógica, incluyendo el cálculo proposicional (de enunciados) y el cálculo de predicados. Tablas de verdad. Semántica. Deducción. Lógica proposicional axiomática. Lógica de predicados. Manual de referencia de Free Pascal Tutorial de Smalltalk Manuales de referencia de Visualwork Smalltalk Documentación de LispWorks Documentación de SWI Prolog Free Pascal (Windows, Linux, Mac OS) VisualWorks Smalltalk (Windows, Linux, Mac OS) LispWorks (Windows) o similar SWI Prolog (Windows) o similar