Вы находитесь на странице: 1из 31

Gua Didctica Lenguajes de Programacin 533047 Ingeniera Tcnica en Informtica de Sistemas

Contenidos
Contenidos .........................................................................................................................3 Equipo docente ..................................................................................................................6 Introduccin a la asignatura...............................................................................................6 Presentacin de los contenidos ..........................................................................................7 Objetivos generales............................................................................................................8 Requisitos previos .............................................................................................................9 Materiales .......................................................................................................................10 Recomendaciones bibliogrficas .....................................................................................10 Materiales complementarios............................................................................................11 Orientaciones generales para el estudio ..........................................................................11 Evaluacin .......................................................................................................................12 Prctica obligatoria .........................................................................................................12 Criterios de Calificacin..................................................................................................13 Criterios de Evaluacin ...................................................................................................13 Unidad Didctica I. Introduccin a los Lenguajes de Programacin, sintaxis y semntica14 Prefacio ...........................................................................................................................14 Organizacin....................................................................................................................14 Tema 1. Introduccin.......................................................................................................14 Guin-esquema................................................................................................................14 Introduccin.....................................................................................................................15 Objetivos especficos.......................................................................................................15 Lecturas recomendadas ...................................................................................................15 Ejercicios de autoevaluacin ...........................................................................................15 Bibliografa......................................................................................................................15 Tema 2. Principios de diseo de los lenguajes ................................................................16 Guin-esquema................................................................................................................16 Introduccin.....................................................................................................................16 Objetivos especficos.......................................................................................................16 Lecturas recomendadas ...................................................................................................16 Ejercicios de autoevaluacin ...........................................................................................16 Bibliografa......................................................................................................................16 Tema 3. Sintaxis ..............................................................................................................17 Guin-esquema................................................................................................................17 Introduccin.....................................................................................................................17 Objetivos especficos.......................................................................................................17 Lecturas recomendadas ...................................................................................................17 Ejercicios de autoevaluacin ...........................................................................................17 Tema 4. Semntica bsica ...............................................................................................18 Guin-esquema................................................................................................................18 Introduccin.....................................................................................................................18 Objetivos especficos.......................................................................................................18 Lecturas recomendadas ...................................................................................................18 Ejercicios de autoevaluacin ...........................................................................................18 Bibliografa......................................................................................................................18 Unidad Didctica II. Paradigmas y lenguajes..................................................................19 Prefacio ...........................................................................................................................19

Organizacin....................................................................................................................19 Tema 5. Programacin orientada a objetos .....................................................................19 Guin-esquema................................................................................................................19 Introduccin.....................................................................................................................20 Objetivos especficos.......................................................................................................20 Lecturas recomendadas ...................................................................................................20 Ejercicios de autoevaluacin ...........................................................................................20 Bibliografa......................................................................................................................20 Tema 6. Programacin funcional ....................................................................................21 Guin-esquema................................................................................................................21 Introduccin.....................................................................................................................21 Objetivos especficos.......................................................................................................21 Lecturas recomendadas ...................................................................................................21 Ejercicios de autoevaluacin ...........................................................................................21 Bibliografa......................................................................................................................22 Tema 7. Programacin lgica..........................................................................................23 Guin-esquema................................................................................................................23 Introduccin.....................................................................................................................23 Objetivos especficos.......................................................................................................23 Lecturas recomendadas ...................................................................................................23 Ejercicios de autoevaluacin ...........................................................................................23 Bibliografa......................................................................................................................24 Unidad Didctica III. Mecanismos de los lenguajes de programacin ...........................25 Prefacio ...........................................................................................................................25 Organizacin....................................................................................................................25 Tema 8. Tipos de datos....................................................................................................25 Guin-esquema................................................................................................................25 Introduccin.....................................................................................................................26 Objetivos especficos.......................................................................................................26 Lecturas recomendadas ...................................................................................................26 Ejercicios de autoevaluacin ...........................................................................................26 Bibliografa......................................................................................................................26 Tema 9. Expresiones y enunciados..................................................................................27 Guin-esquema................................................................................................................27 Introduccin.....................................................................................................................27 Objetivos especficos.......................................................................................................27 Lecturas recomendadas ...................................................................................................27 Ejercicios de autoevaluacin ...........................................................................................27 Bibliografa......................................................................................................................28 Tema 10. Procedimientos y ambientes ...........................................................................29 Guin-esquema................................................................................................................29 Introduccin.....................................................................................................................29 Objetivos especficos.......................................................................................................29 Lecturas recomendadas ...................................................................................................29 Ejercicios de autoevaluacin ...........................................................................................29 Bibliografa......................................................................................................................30 Tema 11. Tipos abstractos de datos y mdulos. ..............................................................31 Guin-esquema................................................................................................................31 Introduccin.....................................................................................................................31 Objetivos especficos.......................................................................................................31

Lecturas recomendadas ...................................................................................................31 Ejercicios de autoevaluacin ...........................................................................................31 Bibliografa......................................................................................................................32

Equipo docente
Dr. D. Tim Read. Profesor Titular. Coordinador de la asignatura. Dra. Da. Raquel Martnez. Profesora Titular. Se ruega al alumno consulte posibles cambios en la gua de curso a travs de la pgina web de la asignatura.

Introduccin a la asignatura
La asignatura de Lenguajes de Programacin (LP) se imparte en el segundo cuatrimestre del tercer curso, consta de 6 crditos (4 tericos y 2 prcticos), y es obligatoria para la titulacin de Ingeniera Tcnica en Informtica de Sistemas. La importancia del estudio de la asignatura de LP para la formacin acadmica, profesional y personal del estudiante de la ITIS queda patente en las razones que relacionan T. W. Pratt y M. V. Zelkowitz, en Programming Languages: Design and Implementation: Mejorar la habilidad para desarrollar algoritmos eficaces: muchos LP incluyen caractersticas que, cuando se usan de forma apropiada, benefician al programador pero si se usan incorrectamente, pueden desperdiciar grandes cantidades de tiempo de cmputo o conducir al programador a errores lgicos que consumen mucho tiempo. Mejorar el uso del LP disponible: a travs del entendimiento de como se implementan las caractersticas del LP que uno usa, se mejora la habilidad para escribir programas ms eficientes. Acrecentar el propio vocabulario con construcciones tiles sobre programacin: el LP sirve a la vez como una ayuda y como una restriccin para el pensamiento. Las personas usan el LP para expresar pensamientos, pero tambin sirve para estructurar la manera en que uno piensa, en la medida en que es difcil pensar en formas que no permiten una expresin directa en palabras. Hacer posible una mejor eleccin del LP: cuando se presenta la situacin, un conocimiento de diversos LP puede permitir la eleccin de un LP que sea precisamente el idneo para un proyecto particular. Facilitar el aprendizaje de un nuevo LP: un lingista, a travs de una comprensin profunda de la estructura subyacente de los lenguajes naturales, suele poder aprender un nuevo idioma con ms rapidez y facilidad que el novato esforzado que entiende poco de la estructura incluso de su lengua nativa. De manera similar, un conocimiento concienzudo de diversas construcciones de LP y tcnicas de ejecucin permite al programador aprender un nuevo LP con ms facilidad. Facilitar el diseo de un nuevo LP: pocos programadores piensan alguna vez en s mismos como diseadores de LP; sin embargo, todo programa tiene una

interfaz de usuario que es, de hecho, una forma de LP. La interfaz de usuario se compone de los comandos y formatos de datos que se suministran para que el usuario se comunique con el programa. El diseador de la interfaz de usuario para un programa grande como un editor de texto, un sistema operativo o un paquete de grficos debe ocuparse de muchas de las mismas cuestiones que estn presentes en el diseo de un LP para usos generales. Este aspecto del diseo de programas se suele simplificar si el programador est familiarizado con diversas construcciones y mtodos de implementacin de LP ordinarios.

Adems de las anteriores razones, desde una perspectiva ms general se puede justificar la necesidad de estudiar los LP destacando tres intereses diferentes en su estudio: El del programador profesional (que necesita saber las diferencias entre los LP para poder elegir uno adecuado para las tareas que quiere realizar o, si ya ha tomado esta decisin y trabaja con uno, puede tomar prestadas tcnicas disponibles en otros LP para mejorarlo). El del diseador del LP (que necesita saber tanto los fundamentos de los LP como el panorama completo del campo para considerar con todo rigor el nicho que va a ocupar su LP) El del implementador del LP (que desarrolla un compilador o intrprete para un LP sobre una mquina particular o un tipo de mquina y puede aprovechar lo que ha aprendido en este mismo proceso para otros LP posteriores). El programador, el diseador y el implementador de un LP deben conocer el rea de los LP, su evolucin histrica, los distintos usos, etc. para poder apreciar por qu presentan caractersticas diferentes. Y por fin se puede decir que el anlisis de los LP permite ver la evolucin de familias de LP, examinar la influencia que ejercen las arquitecturas y aplicaciones de los ordenadores sobre el diseo de los LP y evitar futuros defectos de diseo aprendiendo las lecciones del pasado.

Presentacin de los contenidos


La asignatura comprende once temas que se organizan en tres unidades didcticas con la siguiente estructura: Unidad didctica I. Introduccin a los lenguajes de programacin, sintaxis y semntica. Tema 1. Introduccin. Tema 2. Principios de diseo de los lenguajes. Tema 3. Sintaxis. Tema 4. Semntica bsica. Unidad didctica II. Paradigmas y lenguajes. Tema 5. Programacin orientada a objetos. Tema 6. Programacin funcional. Tema 7. Programacin lgica.

Unidad didctica III. Mecanismos de los lenguajes de programacin. Tema 8. Tipos de datos. Tema 9. Expresiones y enunciados. Tema 10. Procedimientos y ambientes. Tema 11. Tipos abstractos de datos y mdulos.

Objetivos generales
La asignatura de LP persigue los siguientes objetivos generales: El primer objetivo es introducir a los estudiantes en el estudio formal de los LP y su especificacin, es decir la sintaxis y a la semntica. El estudio de la especificacin formal de los lenguajes es un objetivo prioritario para un estudiante de Informtica; como se trata de una asignatura de primer ciclo, no es necesario que se realice un estudio en profundidad, pero s dar una visin general que permita entender el papel real que este aspecto juega dentro de los LP. El segundo objetivo consiste en destacar claramente a los estudiantes los mecanismos de los LP, es decir, distinguir entre el control de secuencia y el control de datos en un programa, los rasgos que caracterizan a los elementos de datos en un lenguaje, y su sistema de tipos: los mecanismos de definicin, estructura y comprobacin de tipos. Se trata de destacar la importancia de los tipos de datos en la abstraccin y estructuracin y de establecer una taxonoma de los tipos que proporcionan los lenguajes. El tercer objetivo es introducir a los estudiantes el concepto de paradigma de lenguaje de programacin. Se trata de identificar y situar los paradigmas existentes, enmarcar los LP en paradigmas y destacar las caractersticas de los LP que los hacen adecuados para la funcin que se les otorga. Es evidente que no es posible hacer un repaso de cada uno de los paradigmas a la vez que el estudio de (al menos) sus lenguajes representativos, as que se profundiza en el paradigma de programacin orientada a objetos (POO) y en Java. El equipo docente, adems de dar protagonismo a los paradigmas de los lenguajes, considera de especial inters el impartir aspectos relacionados con la POO: se trata de un paradigma que no est explcitamente cubierto en el plan de estudios y que ha cobrado gran protagonismo en la informtica actual. La decisin de profundizar en l tambin obedece al hecho de que no es alternativo a los otros, en el mismo sentido en que lo son el funcional o el lgico con relacin al imperativo. Adems, los lenguajes orientados a objetos incorporan muchas tcnicas y mecanismos propios de otros paradigmas como la concurrencia, propia del paradigma concurrente, o el uso de mtodos, propio del paradigma imperativo.

Requisitos previos
LP no tiene prerrequisitos debido a que en la UNED ninguna asignatura los tiene, aunque s se hacen explcitas indicaciones a los estudiantes respecto a las asignaturas cuyo estudio supone un valor aadido a la hora de cursar LP. Hay una serie de asignaturas del plan de estudios de Ingeniera Tcnica en Informtica de Sistemas directamente relacionadas con LP. Al impartirse LP en el segundo cuatrimestre del tercer curso, puede asumirse que todas las asignaturas con las que tiene temas y conceptos en comn han sido ya estudiadas y, por lo tanto, que el estudiante ya los conoce (excepto Compiladores, que se imparte en el mismo cuatrimestre). Esto permite al equipo docente asumir unos conocimientos por parte del estudiante y, por lo tanto, impartir otros con a un nivel ms avanzado. Entre las asignaturas relacionadas con LP destacan las siguientes: Asignaturas bsicas de programacin: Programacin I, II y III y Estructuras de Datos y Algoritmos (troncales). Asignaturas relacionadas con los lenguajes de programacin: Teora de Autmatas I y II y Compiladores (troncales y optativa respectivamente). Asignatura relacionada con el diseo de programas y de sistemas: Ingeniera del Software (obligatoria). Asignaturas relacionadas con los paradigmas de programacin: Programacin Declarativa, Programacin Concurrente y Programacin Orientada a la Inteligencia Artificial (optativas).

La siguiente tabla presenta de un modo esquemtico el contexto acadmico relevante a LP dentro de su plan de estudios, as como las recomendaciones del equipo docente: Asignaturas relacionadas con Lenguajes de Programacin Curso 1 Estudiadas antes Programacin I
ProgramacinII

Convendra haber estudiado

Programacin III Estructuras de Datos y Algoritmos IngenieradeSoftware 2 Teora de Autmatas I Programacin Concurrente Programacin Declarativa 1cuatrimestre Programacin Orientada a la Inteligencia Artificial 2 cuatrimestre Compiladores (a la vez)

Materiales
La eleccin del actual equipo docente como libro bsico o texto base de la asignatura es el siguiente: Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6 Los apartados concretos del libro que se utilizan en la asignatura se sealan en cada tema de la presente gua.

Recomendaciones bibliogrficas
Adems del texto complementaria: base el equipo docente recomienda como bibliografa

APPLEBY, D. y VANDEKOPPLE, J. J.: Lenguajes de programacin: paradigma y prctica. McGraw-Hill (2.a edicin), 1997.

Otros libros que pueden complementar a los anteriores son los siguientes: Friedman, D.P., M. Wand y C.T. Haynes. 2001. Essentials of Programming Languages. Segundo edicin. MITP. Pratt, T.W. y M.V. Zelkowitz. 2001. Programming Languages Design and Implementation. Cuarta edicin. Prentice-Hall. Roosta, S.H. 2003. Foundations of Programming Languages. Brooks-Cole. Sebesta, R. 2002. Concepts of Programming Languages. Quinta edicin. Addison-Wesley. Tucker, A. y R. Noonan. 2002. Programming Languages Principles and Paradigms. McGraw-Hill. Wilson, L.B. y R.G. Clark. 2001. Comparative Programming Languages. Tercera edicin. Addison-Wesley.

En cada uno de estos libros hay aspectos destacables que pueden convertirlos en candidatos a texto base, tanto por su contenido terico como por su estilo didctico para la asignatura que aqu se presenta. Lamentablemente el problema que se plantea es que slo estn disponibles en ingls, lo que excluye su eleccin.

Materiales complementarios
Existen unos applets, y un generador de animaciones interactivas GANIMAM (http://rw4.cs.unisb.de/projects/ganimal/GANIMAM/intro_e.html) que muestran el funcionamiento de la mquina virtual (a partir de ahora, MV) de Java, como se puede ver en la siguiente figura y que pueden ser ilustrativos para los estudiantes.

SimulacindelaMVdeJava

Orientaciones generales para el estudio


El objetivo de esta seccin es servir de ayuda al estudiante, mediante la presentacin de algunas sugerencias, consejos o estrategias que permitan el aprovechamiento idneo de las distintas herramientas que se ponen a disposicin del alumno. De forma resumida se podra decir que el objetivo principal de la asignatura de Lenguajes de Programacin, es presentar una serie de conceptos avanzados relacionados con el diseo, construccin y manejo de un LP, todo esto se presenta desde una perspectiva global sin centrarnos en un lenguaje o paradigma especfico, de esta forma se pretende hacer un repaso global sobre los distintos enfoques actuales en la construccin de LP. Otro de los objetivos de LP es la realizacin de un anlisis pormenorizado de los distintos paradigmas de programacin ms importantes, para as dotar al alumno de las herramientas y conocimientos necesarios que le permitan seleccionar de entre los paradigmas existentes, el ms adecuado para la resolucin de un problema concreto. El temario de LP se divide en tres unidades didcticas, la unidad 1 y 3 que describen, respectivamente, los aspectos sintcticos y semnticos ms destacados en la construccin y uso de un LP. La unidad 2 que realiza un repaso exhaustivo sobre los paradigmas funcional, lgico y orientado a objetos, goza de una mayor independencia respecto a las otras unidades didcticas. An as se recomienda que previamente se haya estudiado la unidad 1 ya que permite adquirir cierta soltura con conceptos que facilitarn una mejor comprensin de las caractersticas propias de cada paradigma estudiado. Por tanto se recomienda seguir el orden lgico propuesto, aunque una posible variacin

vlida sera el estudio en el siguiente orden: 1-3-2. Es destacable que el desarrollo de la prctica obligatorio se realizar en el lenguaje Java, que presenta las caractersticas propias del paradigma orientado a objetos. Por tanto una profunda comprensin del captulo 10 del texto base debe servir de ayuda a la hora de resolver la prctica propuesta por el equipo docente. Para finalizar se recomienda vehementemente el uso de los recursos de los cursos virtuales puestos a disposicin del alumno por la UNED. El uso de los foros, con el apoyo del TAR, junto con la utilizacin de las horas de tutoras del personal docente, debe facilitar en gran medida el proceso de aprendizaje de esta asignatura por parte del alumno.

Evaluacin
La evaluacin de la asignatura se llevar a cabo a partir de las siguientes pruebas: Realizacin de una prctica obligatoria. Realizacin de un examen terico/prctico.

El examen constar de cinco preguntas, cada una de ellas con un valor de dos puntos. Las preguntas intentan valorar los conocimientos tericos y prcticos que el estudiante ha adquirido.

Prctica obligatoria
Se realizar una prctica de carcter obligatorio, que sirva para ilustrar algunos de los conceptos ms relevantes de la asignatura. Se realizarn en lenguaje Java. En la prctica se debe resolver un problema de forma completa hasta su implementacin en Java. La prctica que se propone consiste en resolver un problema con mecanismos de programacin orientada a objetos. Para la realizacin de la prctica se proporciona al alumno un plan de trabajo y, dependiendo del programa a realizar, se le da parte del diseo, alguna librera programada o el algoritmo de aquellos clculos que son externos a los objetivos de la asignatura (dibujo de un polgono reglar de k lados, relleno de una figura, etc.) pero que son necesarios para la prctica. Las prcticas han de realizarse supervisadas por el tutor del Centro Asociado. Se realizar una nica convocatoria para las prcticas (en junio), de forma que todos los alumnos debern presentar la prctica en esa fecha independientemente de la convocatoria en la que vayan a presentarse al examen.

Criterios de Calificacin
Para que el examen de un alumno sea calificado deber haber asistido a las sesiones presenciales de prcticas en su centro asociado y haber entregado y aprobado la prctica obligatoria en el plazo establecido.

Criterios de Evaluacin
Para que un alumno pueda aprobar la asignatura deber haber obtenido una calificacin igual o superior a un cinco en el examen. No se considera la nota de la prctica en la nota final de la asignatura.

Unidad Didctica I. Introduccin a los Lenguajes de Programacin, sintaxis y semntica

Prefacio
La primera unidad didctica hace un repaso sobre los conceptos fundamentales dentro de los lenguajes de programacin. Se parte introduciendo los conceptos bsicos generales que subyacen a la construccin de un LP. A continuacin se enumeran detalladamente los criterios tanto de diseo como externos que han provocado el xito o fracaso de algunos LP, adems se describe la evolucin y cambio de estos criterios a lo largo del tiempo y las necesidades o evoluciones en materias de computacin que los provocaron. Finalmente se hace un repaso en profundidad de conceptos y herramientas bsicos que intervienen en el procesado sintctico y semntico de un LP, como son las gramticas BNF, rboles de sintaxis, tablas de smbolos, ligaduras, entornos, etc.

Organizacin
Tema 1. Introduccin Tema 2. Principios de diseo de los lenguajes Tema 3. Sintaxis Tema 4. Semntica bsica

Tema 1. Introduccin
Guin-esquema
1.1 Qu es un lenguaje de programacin? 1.2 Abstracciones en los lenguajes de programacin. 1.3 Paradigmas de computacin. 1.4 Definicin de lenguaje. 1.5 Traduccin del lenguaje. 1.6 Diseo del lenguaje. 1.7 Historia de los lenguajes de programacin.

Introduccin
Es un tema en el se presentan y definen conceptos que se vern con ms profundidad en temas posteriores. La mayora de los conceptos no son nuevos para los alumnos, ya que han sido presentados en otras asignaturas. Sin embargo, conviene hacer una recapitulacin y volver a recordarlos de cara a su comprensin y utilizacin adecuada a lo largo del curso.

Objetivos especficos
Situar y motivar al estudiante respecto al estudio de los LP. Repasar y aclarar conceptos bsicos relacionados con los lenguajes de programacin y los procesadores de lenguajes.

Lecturas recomendadas
Captulos 1 y 2 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 1 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Tema 2. Principios de diseo de los lenguajes


Guin-esquema
2.1 Historia y criterios de diseo. 2.2 Eficiencia. 2.3 Regularidad. 2.4 Principios adicionales sobre diseo de los lenguajes. 2.5 C++: Un estudio de caso de los diseos de los lenguajes

Introduccin
Este tema es presenta un panorama general de los principios de diseo de los lenguajes de programacin.

Objetivos especficos
Presentar los principios de diseo de los lenguajes, tanto los fundamentales como otros adicionales. Mejorar la comprensin de los principios de diseo aplicndolos al lenguaje C++.

Lecturas recomendadas
Captulo 3 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 3 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Tema 3. Sintaxis

Guin-esquema
3.1. Estructura lxica de los lenguajes de programacin. 3.2. Gramticas libres de contexto y BNF. 3.3. rboles de anlisis sintctico y rboles de sintaxis abstracta. 3.4. Ambigedad, asociatividad y precedencia. 3.5. EBNF y diagramas sintcticos. 3.6. Tcnicas y herramientas de anlisis sintctico. 3.7. Lxico comparado con la sintaxis y con la semntica.

Introduccin
Este tema se ocupa con cierto detalle de la sintaxis, incluyendo el uso de BNF, EBNF y los diagramas sintcticos. De manera breve se tratan las definiciones recursivas (como BNF) como ecuaciones para resolverse. Tambin se trata el anlisis gramatical recursivo descendente y el uso de las herramientas de anlisis gramatical.

Objetivos especficos
Introducir al alumno a las distintas herramientas conceptuales de construccin de gramticas, como el uso de BNF, EBNF, rboles de sintaxis, etc. Comprender como afecta la ambigedad a una gramtica y sus posibles soluciones. Introduccin a algunas de las herramientas o algoritmos que permiten realizar el anlisis sintctico de un lenguaje.

Lecturas recomendadas
Captulo 4 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 4 del texto base de la asignatura. Bibliografa Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Tema 4. Semntica bsica


Guin-esquema

4.1 Atributos, ligaduras y funciones semnticas. 4.2 Declaraciones, bloques y alcance. 4.3 La tabla de smbolos. 4.4 Resolucin y sobrecarga de nombres. 4.5 Asignacin, tiempo de vida y el entorno. 4.6 Variables y constantes. 4.7 Alias, referencias pendientes y basura.

Introduccin
Este tema cubre los aspectos semnticos centrales de los lenguajes de programacin: declaracin, asignacin, evaluacin; la tabla de smbolos y ambientes de ejecucin como funciones semnticas.

Objetivos especficos
Comprensin de algunos conceptos claves en el anlisis semntico, como son las ligaduras, entornos de ejecucin, tabla de smbolos, etc. Comprender los distintos niveles de sobrecarga en un programa, y su tratamiento en tiempo de compilacin y/o ejecucin. Comprender el concepto de referencias y alias y los distintos estados de estas en tiempo de compilacin y/o ejecucin, como pueden ser referencias pendientes, basura, etc.

Lecturas recomendadas
Captulo 5 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 5 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Unidad Didctica II. Paradigmas y lenguajes

Prefacio
En esta segunda unidad didctica se trata de mostrar a los alumnos las caractersticas ms importantes de los paradigmas de programacin de mayor xito en la actualidad. Los distintos paradigmas a tratar sern el paradigma funcional, el paradigma lgico y paradigma orientado a objetos, con un especial nfasis en este ltimo debido a la relevancia que ha tomado para la industria del software actualmente. Es importante que el alumno sea capaz de entender y expresar con claridad las particularidades de cada uno de los distintos enfoques para sobre todo ser capaz de evaluar el grado de adecuacin de un paradigma a un problema concreto.

Organizacin
Tema 5. Programacin orientada a objetos. Tema 6. Programacin funcional. Tema 7. Programacin lgica.

Tema 5. Programacin orientada a objetos

Guin-esquema
5.1 Reutilizacin e independencia del software. 5.2 Java: objetos, clases y mtodos. 5.3 Herencia. 5.4 Ligadura dinmica. 5.5 C++. 5.6 Smalltalk. 5.7 Cuestiones de diseo en lenguajes orientados a objetos. 5.8 Cuestiones de implementacin en lenguajes orientados a objetos.

Introduccin
En este tema se presenta el paradigma orientado a objetos y los principales conceptos relacionados con l. Se utilizar Java para como lenguaje ejemplo principal. Tambin se estudian otros dos lenguajes de programacin orientados a objetos: C++ y Smalltalk.

Objetivos especficos
Presentar el paradigma orientado a objetos y los conceptos asociados. Instanciar los conceptos de la programacin orientada a objetos en lenguajes concretos como Java, C++ y Smalltalk, analizando sus diferencias.

Lecturas recomendadas
Captulo 10 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 10 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Tema 6. Programacin funcional


Guin-esquema
6.1 Programas como funciones. 6.2 Programacin funcional en un lenguaje imperativo. 6.3 Scheme: Un dialecto de LISP. 6.4 ML: programacin funcional con tipificado esttico. 6.5 Evaluacin retrasada. 6.6 Haskell: Un lenguaje perezoso completamente Curry con sobrecarga. 6.7 Las matemticas en la Programacin funcional I: Funciones recursivas. 6.8 Las matemticas en la Programacin funcional II: Clculo lambda.

Introduccin
Este tema presenta los principios de la programacin funcional. Se repasa el concepto de funcin y la forma en que pueden considerarse los programas como funciones. Se da una breve introduccin a las tcnicas funcionales utilizando C y, a continuacin, se presentan tres lenguajes funcionales modernos: Scheme, ML y Haskell, analizando algunas de sus propiedades. Tambin se presenta el modelo matemtico subyacente en los lenguajes funcionales.

Objetivos especficos
Presentar los principios de la programacin funcional. Analizar las propiedades de tres lenguajes representativos de la programacin funcional. Conocer el modelo matemtico que subyace a la programacin funcional.

Lecturas recomendadas
Captulo 11 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 11 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica.

KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Tema 7. Programacin lgica.

Guin-esquema
7.1. Lgica y programas lgicos. 7.2. Clusulas de Horn. 7.3. Resolucin y unificacin. 7.4. El lenguaje Prolog. 7.5. Problemas que se presentan con la programacin lgica. 7.6. Extensin de la programacin lgica: programacin lgica con restricciones y sistemas basados en ecuaciones.

Introduccin
Este tema comienza con una breve introduccin a la lgica matemtica y a la forma en que puede utilizarse la lgica como un lenguaje de programacin. Despus, describe el lenguaje Prolog y las tcnicas para escribir programas en este lenguaje. Tambin se presentan algunos de los puntos dbiles de este lenguaje. El tema finaliza con la presentacin de la programacin lgica con restricciones y los sistemas basados en ecuaciones.

Objetivos especficos
Presentar los principios de la programacin lgica, destacando la lgica de primer orden y la resolucin/unificacin en el modelo de clusulas de Horn. Analizar las propiedades del lenguaje Prolog como principal ejemplo de lenguaje de programacin lgico Entender dos posibles casos de extensiones aplicables al modelo lgico que subyace en Prolog: Lgica con restricciones y Sistemas basados en ecuaciones.

Lecturas recomendadas
Captulo 12 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 12 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Unidad Didctica III. Mecanismos de los lenguajes de programacin

Prefacio
En la ltima unidad didctica que incluye este curso se describen detalladamente los mecanismos genricos de los LP, as como las primitivas que los implementan en los distintos lenguajes tratados. Se pretende trazar una lnea que separe conceptualmente los mecanismos que operan sobre los datos, y los mecanismos que describen las operaciones que se pueden realizar sobre estos mismos datos, es decir distinguir entre el control de secuencia y el control de datos en un programa. Respecto al control de secuencia se har un repaso por operaciones de control de flujo, flujos condicionales, ciclos, excepciones, procedimientos, etc. En relacin con los tipos de datos, se describirn los fundamentos que subyacen al control de tipos en un LP, como es la verificacin de tipos, conversin, polimorfismo, y su posterior evolucin desde los tipos simples a los tipos abstractos de datos pasando por los tipos complejos, estructuras, etc.

Organizacin
Tema 8. Tipos de datos. Tema 9. Expresiones y enunciados. Tema 10. Procedimientos y ambientes. Tema 11. Tipos abstractos de datos y mdulos.

Tema 8. Tipos de datos


Guin-esquema
8.1 Tipos de datos e informacin de tipos. 8.2 Tipos simples. 8.3 Constructores de tipos. 8.4 Nomenclatura de tipos en lenguajes de ejemplo. 8.5 Equivalencia de tipos. 8.6 Verificacin de tipos. 8.7 Conversin de tipos. 8.8 Conversin de tipos. 8.9 Verificacin de tipos polimrficos.

8.10 Polimorfismo explcito.

Introduccin
Este tema comienza describiendo los tipos de datos y los principales tipos y constructores de tipos disponibles en la mayora de los lenguajes. Despus de analizar estos principios bsicos, se describen los mecanismos de verificacin de tipos estticos e inferencia de tipos. Se analizan algunos de los mtodos actuales para conseguir flexibilidad en un sistema de tipos, promoviendo simultneamente la correccin y la seguridad.

Objetivos especficos
Familiarizar al alumno con una descripcin formal del conjunto de datos (simples y complejos) que incluya un LP. Comprender en profundidad los distintos procesos que forman parte de la tarea de verificacin de tipos en su forma esttica o dinmica.

Lecturas recomendadas
Captulo 6 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 6 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Tema 9. Expresiones y enunciados.

Guin-esquema
9.1 Expresiones. 9.2 Enunciados y guardias condicionales. 9.3 Ciclos y variaciones sobre WHILE. 9.4 la controversia GOTO.

9.5 Manejo de excepciones.

Introduccin
En este tema primero se analizan las expresiones y la diversidad de problemas de control que pueden surgir durante su evaluacin. Despus se tratan los mecanismos de control estructurado y posteriormente los GOTO. Posteriormente se analiza el manejo de excepciones, un mecanismo de control preventivo, que hace que se perturbe la estructura de control explcito de un programa.

Objetivos especficos
Entender la parte de un programa que se considera de control, las primitivas que lo implementan, y sus caractersticas especficas en distintos paradigmas. Comprender como funciona la evaluacin de expresiones y como se ve afectada por el orden. Familiarizar al alumno con otro tipo de expresiones de control como las excepciones o el GOTO como claro ejemplo de una estructura en desuso.

Lecturas recomendadas
Captulo 7 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 7 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Tema 10. Procedimientos y ambientes


Guin-esquema
10.1 Definicin y activacin de los procedimientos. 10.2 Semntica de los procedimientos. 10.3 Mecanismos de paso de parmetros. 10.4 Ambientes, activacin y asignacin de los procedimientos. 10.5 Administracin de la memoria dinmica. 10.6 Manejo de excepciones y de ambientes.

Introduccin
Este tema comienza con un repaso de las diversas formas sintcticas de definir y llamar procedimientos y funciones. Sigue con un anlisis de las propiedades semnticas de los procedimientos, y la razn por la cual representan un concepto significativamente ms complejo de una estructura de bloque de la que se estudi en el tema anterior. Despus se estudian las principales tcnicas de paso de parmetros que llevan a un comportamiento semntico distinto, y se esboza la estructura de los registros de activacin y de las tres variedades bsicas de ambientes en tiempo de ejecucin, incluyendo los mecanismos para implementar el manejo de excepciones. El tema finaliza proporcionando un panorama general de los mtodos para mantener ambientes dinmicamente asignados con recoleccin de basura.

Objetivos especficos
Comprensin de la semntica de los procedimientos, tanto en compilacin como en ejecucin. Funcionamiento del paso de parmetros en procedimientos, paso por valor o referencia y consecuencias, verificacin de tipos de parmetros. Comprender el proceso de creacin un ambiente de ejecucin para un procedimiento, los distintos ambientes de ejecucin posibles y la como se gestin la memoria en dicho ambientes.

Lecturas recomendadas
Captulo 8 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 8 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Tema 11. Tipos abstractos de datos y mdulos.

Guin-esquema
11.1. Especificacin algebraica de los tipos de datos abstractos. 11.2. Mecanismos de tipos de datos abstractos y mdulos. 11.3. Compilacin individual en C, espacios de nombres de C++ y paquetes Java. 11.4. Paquetes de Ada. 11.5. Mdulos en ML. 11.6. Mdulos en lenguajes anteriores. 11.7. Problemas que se presentan con los mecanismos de tipos de datos abstractos. 11.8 Las matemticas de los tipos de datos abstractos.

Introduccin
En primer lugar en este tema se describe un mtodo para especificar los tipos de datos abstractos y se presentan algunos mecanismos de tipos de datos abstractos en los lenguajes de programacin. Posteriormente se plantean algunos aspectos de los mdulos y la compilacin individual, relacionndolos con los tipos de datos abstractos, con ejemplos tomados de C, C++ y Java. Despus se presentan ejemplos en Ada y ML. El tema finaliza examinando algunas limitaciones de estos mecanismos y las matemticas de los tipos de datos abstractos.

Objetivos especficos
Entender las caractersticas propias de un TAD, como pueden ser la reutilizacin, los conceptos de encapsulacin y ocultacin, etc., y las ventajas que aportan en el desarrollo de programas. Ser capaz de describir las operaciones de un TAD, mediante especificaciones algebraicas formales.

Lecturas recomendadas
Captulo 9 del texto base de la asignatura.

Ejercicios de autoevaluacin
Ejercicios resueltos del Captulo 9 del texto base de la asignatura.

Bibliografa
Lenguajes de programacin (Segunda edicin) Principios y prctica. KENNETH C. LOUDEN. Ed. Thomson, 2004. ISBN: 970-686-284-6

Вам также может понравиться