Lenguajes de Alto Nivel y Compiladores

Cuarto Curso, Ingeniería de Telecomunicación

  Curso 2008-2009

ETSIIT, Universidad de Cantabria

1. Profesores
2. Programa
3. Apuntes
4. Librería Win_IO
5. Prácticas
6. Exámenes anteriores

1. Profesores

2. Programa

Parte I: Programación en Ada

1. Introducción a los computadores y su programación.

Arquitectura básica de un computador.El software del sistema. Lenguajes de alto nivel. El proceso de compilación.

2. Elementos básicos del lenguaje

Introducción. Estructura de un programa. Variables, constantes y tipos simples. Expresiones. Instrucciones de control. Tipos de datos. Subprogramas y paso de parámetros. Reglas de visibilidad. Entrada/salida simple.

3. Modularidad y programación orientada a objetos

Paquetes. Compilación separada. Concepto de clase y objeto. Abstracción de datos mediante tipos privados. Reglas de visibilidad. Tipos de paquetes.

4. Estructuras de datos dinámicas

Relaciones entre datos. Punteros. Estructuras de datos dinámicas. Punteros a objetos estáticos.

5. Tratamiento de errores

Excepciones. Excepciones predefinidas. Declaración de excepciones propias. Elevar y tratar excepciones. Manejadores. Funcionamiento de las excepciones. Formas más habituales de tratar excepciones. El paquete Ada.Exceptions.

6. Abstracción de tipos mediante unidades genéricas

Abstracción de tipos. Paquetes genéricos. Subprogramas genéricos. Tipos como parámetros genéricos. Subprogramas como parámetros genéricos. Punteros a subprogramas.

7. Entrada/salida con ficheros

Ficheros. Entrada/salida de texto. Entrada/salida secuencial. Entrada/salida directa. Entrada/salida de streams.

8. Herencia y polimorfismo

Tipos etiquetados. Herencia. Polimorfismo. Interfaces. Programación incremental.

9. Programación concurrente y de tiempo real

Concurrencia. Sincronización de espera. Sincronización de datos. Programación de tiempo real. Representación del hardware. Interrupciones. Gestión del tiempo. Prioridades.

Parte II. Estructuras de Datos y Algoritmos

1. Introducción al análisis y diseño de algoritmos.

Introducción. Diseño de un programa. Concepto de algoritmo. Descripción de algoritmos: el pseudolenguaje y diagramas de flujo. Tiempo de ejecución. La notación O(n). Ejemplos de análisis.

2. Tipos abstractos de datos.

Conceptos básicos. Conjuntos. Listas. Stacks. Colas. Mapeados. Árboles. Árboles binarios.

3. Métodos de ordenación.

El modelo de ordenación interna. Esquemas simples de ordenación. Ordenación rápida. Ordenación por cajas. Ordenación por base.

Parte III. Introducción a la Tecnología de Compiladores

1. Introducción a la tecnología de compiladores

Compiladores. Las fases de un compilador. Análisis del programa fuente. Código intermedio. Optimización. Generación de código. Herramientas para construcción de compiladores. Análisis Léxico. Expresiones regulares. La herramienta lex. Análisis Sintáctico. La herramienta yacc.

Seminarios

1. Introducción al sistema operativo UNIX
2. Utilización del laboratorio de lenguajes
3. Comparación entre Ada, C/C++, y Java

3. Apuntes

Para ver los apuntes en formato pdf pinchar sobre el enlace correspondiente. Los enlaces irán apareciendo con el avance de la asignatura:
Programa

Parte I

1. Introducción a los computadores y su programación
2. Elementos básicos del lenguaje
3. Modularidad y programación orientada a objetos
4. Estructuras de datos dinámicas
5. Tratamiento de errores
6. Abstracción de tipos mediante unidades genéricas
7. Entrada/salida con ficheros
8. Herencia y polimorfismo
9. Programación concurrente y de tiempo real

Parte II

1. Introducción al análisis y diseño de algoritmos
2. Tipos abstractos de datos
3. Métodos de ordenación

Parte III

1. Introducción a la tecnología de compiladores

Seminarios

1. Introducción al sistema operativo UNIX
2. Utilización del laboratorio de lenguajes
3. Comparación entre Ada, C/C++, y Java 

Ejemplos y ADTS

En los enlaces que aparecen a continuación se puede descargar el código fuente de todos los tipos de datos abstractos vistos en clase. Usar el botón derecho sobre el enlace y elegir "Save link as", o "Guardar enlace como".

4. Librería Win_IO

Win_IO es un conjunto de paquetes de uso muy sencillo para hacer entrada/salida gráfica desde programas Ada. Está pensado para estudiantes o usuarios de Ada que no quieran invertir su tiempo en aprender una interfaz gráfica complicada, pero que están cansados de la entrada/salida de texto tan pasada de moda.

Win_IO es software libre y se puede encontrar en: http://www.ctr.unican.es/win_io/

5. Prácticas

Enunciados de las prácticas. El material complementario se puede copiar y pegar al editor de textos: Librerías proporcionadas: Manual de referencia del lenguaje Ada 95:

6. Exámenes anteriores

Una vez que ya se tiene experiencia con Ada, es conveniente hacer ejercicios, para los que se os propone intentar resolver los ejercicios de exámenes anteriores.

Curso 2001-2002

Curso 2002-2003

Curso 2003-2004

Curso 2004-2005

Curso 2005-2006

Curso 2006-2007

Curso 2007-2008