Responsable: | (-) |
Otros: | (-) |
Créditos | Dept. | Tipo | Requisitos |
---|---|---|---|
7.5 (6.0 ECTS) | CS |
|
P1
- Prerequisito para la EI , ETIG PRAP - Prerequisito para la EI , ETIG |
Responsable: | (-) |
Otros: | (-) |
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, se estudia el uso de la memoria dinámica y las estructuras de datos enlazadas, 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 expone 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 autónomo de los estudiantes.
A mitad de cuatrimestre se hará un examen parcial, de tipo práctico, sobre los temas de estructuras lineales y gestión de memoria (nota NP).
El examen final (nota NF) cubrirá toda la asignatura. Este examen tiene un carácter más conceptual, pero vuelve a evaluar los temas ya evaluados en el parcial.
La nota de laboratorio (nota NL) viene dada por dos ejercicios de programación con el mismo peso. Los ejercicios se resuelven en grupos de dos estudiantes. El primer ejercicio, sobre estructuras lineales, se propone hacia la tercera o cuarta semana de clase. El segundo ejercicio, sobre tablas hash, se propone unas tres semanas antes del fin de las clases. En ambos casos hay unas cuatro semanas para resolverlos.
La nota total de la asignatura se calcula con la fórmula:
NT = max(0,2*NP + 0,6*NF, 0,8*NF) + 0,2*NL
PREREQUISITOS: Prácticas de Programación