| Responsable: | Fernando Orejas Valdés (orejas |
| Otros: | Ana Cristina Zoltan Torres (zoltan Ana Edelmira Pasarella Sanchez (edelmira Nicolas Eduardo Mylonakis Pascual (nicos |
| Créditos | Dept. | Tipo | Requisitos |
|---|---|---|---|
| 7.5 (6.0 ECTS) | LSI |
|
P1
- Prerequisito para la EI , ETIG PRAP - Prerequisito para la EI , ETIG |
| Responsable: | Fernando Orejas Valdés (orejas |
| Otros: | Ana Cristina Zoltan Torres (zoltan Ana Edelmira Pasarella Sanchez (edelmira Nicolas Eduardo Mylonakis Pascual (nicos |
Por una parte, se pretende que el estudiante conozca mejor cómo es un lenguaje de programación, en particular un lenguaje orientado a objetos. Con este objetivo se estudiarán aspectos como la estructura de tipos, el control de datos, la gestión de memoria y los mecanismos de abstracción de un lenguaje de estas características. Por otra parte, se pretende que el estudiante conozca nuevas técnicas de programación. En concreto, el uso de la memoria dinámica y las estructuras de datos enlazados, que están en la base de muchas aplicaciones.
Horas estimadas de:
| T | P | L | Alt | L Ext. | Est | O. Ext. |
| Teoria | Problemas | Laboratorio | Otras actividades | Laboratorio externo | Estudio | Otras horas fuera del horario fijado |
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 4,0 | 2,0 | 2,0 | 0 | 12,0 | 6,0 | 0 | 26,0 | |||
|
Pilas:
Especificación. Aplicaciones. Implementación con tabla estática. Implementación con tabla dinámica. Implementación con nodos encadenados. Colas: Especificación. Aplicaciones. Implementación con tabla circular. Implementación con nodos encadenados. Listas: Especificación. Aplicaciones. Implementación con nodos encadenados. Variaciones.
|
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 4,0 | 2,0 | 2,0 | 0 | 8,0 | 6,0 | 0 | 22,0 | |||
|
Árboles generales, binarios y m-arios:
Especificación de árboles generales. Especificación de árboles m-arios. Especificación de árboles binarios. Ejemplos: árboles de expresión. Implementación enlazada de árboles binarios. Implementación enlazada de árboles m-arios. Isomorfismo entre árboles generales y árboles binarios. Implementación de árboles generales utilizando punteros al primer hijo y al siguiente hermano. Esquemas de recorrido de árboles: Recorridos en preorden, postorden, inordren y por niveles. Aplicación: Evaluación de expresiones, derivación formal de expresiones.
|
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 2,0 | 0 | 0 | 0 | 0 | 2,0 | 0 | 4,0 | |||
|
Criterios de diseño de un lenguaje de programación.
Implementación de un lenguaje de programación. Máquinas abstractas. |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 6,0 | 2,0 | 0 | 0 | 0 | 0 | 0 | 8,0 | |||
|
Concepto de tipo.
Tipos de datos y características de un lenguaje de programación. Polimorfismo y sobrecarga. Definición de un sistema de tipo mediante reglas de inferencia. Comprobación de tipo. |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 5,0 | 2,0 | 0 | 0 | 7,0 | 0 | 0 | 14,0 | |||
|
Punteros. new y delete.
Destructor, constructor por copia y operador de asignación. Asignación dinámica de memoria. Algoritmos de "garbage collection" |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 3,0 | 2,0 | 0 | 0 | 0 | 5,0 | 0 | 10,0 | |||
|
Nombres y entidades.
Visibilidad y vida de una entidad. Ámbitos estáticos y dinámicos. Acceso a entidades: cadena estática y dinámica. Paso de parámetros. |
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 6,0 | 2,0 | 2,0 | 0 | 6,0 | 8,0 | 0 | 24,0 | |||
|
Especificación de tablas y diccionarios.
Implementación con tablas hash: hash abierto, cerrado y otras variaciones. Funciones de hash.
|
||||||||||
|
T | P | L | Alt | L Ext. | Est | O. Ext. | Total | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 3,0 | 1,0 | 0 | 0 | 0 | 4,0 | 0 | 8,0 | |||
|
Herencia y subtipos.
Herencia como herramienta de diseño. Herencia y modificabilidad de los programas. |
||||||||||
| Total por tipo | T | P | L | Alt | L Ext. | Est | O. Ext. | Total |
| 40,0 | 16,0 | 6,0 | 0 | 33,0 | 41,0 | 0 | 136,0 | |
| Horas adicionales dedicadas a la evaluación | 6,0 | |||||||
| Total horas de trabajo para el estudiante | 142,0 | |||||||
Se pretende exponer el temario de forma muy práctica, a través de la presentación de muchos ejemplos.
Las clases se dividen en tres tipos: sesiones de teoría, sesiones de problemas y sesiones de laboratorio. En particular, a lo largo del curso se harán 4 horas semanales de teoría y problemas. Con respecto al laboratorio, sólo se harán 2 o 3 sesiones a lo largo del curso. El resto del tiempo de laboratorio se dedica al trabajo individual de los estudiantes.
Se realizarán dos exámenes: uno de los aspectos más teóricos de la asignatura, con cuestiones cortas (nota NT) y otro de problemas de diseño de estructuras de datos (nota NP).
La nota de laboratorio (nota NL) viene dada por dos ejercicios de programación individuales que cuentan igual. El primer ejercicio, sobre estructuras lineales, se presentará hacia la sexta semana de clases. El segundo ejercicio, sobre tablas de hash, se presentará la última semana de clases.
La nota final (nota N) es N = 0.4*NT + 0.4*NP + 0.2*NL
PREREQUISITOS: Prácticas de Programación