Universidad Carlos III de Madrid

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2012 - Enero 2013

Parte I.  Programación en C

Tabla de contenidos

Estructura de un programa en C
1. Un programa en C
2. Bibliografía de apoyo
3. Actividades
3.1. Los elementos de un programa en C
Tipos de datos en C
1. Tipos de datos básicos
1.1. Enteros
1.2. Letras y cadenas
1.3. Números reales
1.4. Tablas
1.5. Tamaño de los tipos de datos básicos
2. Tipos de datos estructurados
3. Uniones
4. Enumeraciones
5. Bibliografía de apoyo
6. Ejercicios
7. Actividades
7.1. Resolución de ejercicios sobre definición de datos en C
7.2. Manejo de caracteres
7.3. Manejo de cadenas (Strings)
7.4. Manejo de tablas (Arrays)
7.5. Manejo de structuras y uniones
7.6. Ordenación por inserción y búsqueda dicotómica
Declaración de variables
1. Ámbito de una variable
1.1. Variables globales
1.2. Variables estáticas
1.3. Ensombrecimiento de variables
2. Definición de sinónimos de tipos con typedef
3. Bibliografía de apoyo
4. Ejercicios
5. Actividades
5.1. Resolución de ejercicios sobre declaración y ámbito de validez de las variables
5.2. Tarifas de llamadas
Las funciones en C
1. Definición de funciones
2. Paso de parámetros a una función
2.1. Tablas como parámetros a una función
3. Prototipos de funciones
4. Funciones estáticas
5. Autoevaluación automática
6. Bibliografía de apoyo
7. Ejercicios
8. Actividades
8.1. Resolución de ejercicios sobre funciones
Los punteros en C
1. Todo dato tiene una dirección en memoria
2. La indirección
3. El tipo de datos puntero a
3.1. Preguntas de autoevaluación
4. Asignación de una dirección a un puntero
4.1. Preguntas de autoevaluación
5. La indirección a través de punteros
5.1. Acceso indirecto a campos de una estructura
5.2. Preguntas de autoevaluación
6. Punteros a punteros
7. Uso de la indirección
7.1. Parámetros por referencia
7.2. Estructuras como parámetros
7.3. Enlaces entre estructuras de datos
7.4. Preguntas de autoevaluación
8. Bibliografía de apoyo
9. Autoevaluación automática
10. Ejercicios sobre punteros
11. Actividades
11.1. Arrays como casos especiales de punteros
11.2. Gestión de celdas en el móvil
11.3. Arrays de punteros
11.4. Uso de punteros en C
Llamadas al sistema para gestión de memoria en C
1. Los tipos de memoria de un programa en C
2. La pila y las variables locales
3. El heap y la memoria dinámica
4. La función sizeof()
5. Llamadas a las funciones de gestión de memoria
6. Tablas y punteros
7. Bibliografía de apoyo
8. Autoevaluación automática
9. 20 problemas de memoria dinámica
10. Anomalías en la gestión de memoria en C
10.1. La trastienda de la gestión de memoria
10.2. La fuga de memoria
10.3. Memoria sin inicializar
10.4. Sobre-escritura de memoria dinámica
10.5. Acceso a memoria con un puntero corrupto
11. Problemas sobre fugas de memoria.
12. Actividades
12.1. Gestión de memoria en C y en Java
12.2. Las funciones para gestionar memoria en C
12.3. Fugas de memoria en C
12.4. Gestión de conjuntos de palabras
Tablas Hash
1. Contexto de uso de una tabla hash
2. Posibles implementaciones
3. Tablas hash
4. Gestión de colisiones mediante listas encadenadas
5. La función de hash
6. El tamaño de la tabla
7. Bibliografía de apoyo
8. Preguntas de autoevaluación
9. Actividades
9.1. Implementación de una tabla hash
9.2. Lista encadenada de enteros
9.3. Árbol de cadenas de texto
9.4. Uso de listas encadenadas
9.5. Creación de una lista encadenada
9.6. Borrar nodos de una lista encadenada
Operaciones de entrada y salida
1. Introducción
2. Funciones E/S carácter a carácter
2.1. La función getc
2.2. La función getchar
2.3. La función putc
2.4. La función putchar
3. Funciones E/S para tipos de datos
3.1. La función gets
3.2. La función puts
3.3. La función scanf
3.4. La función printf
4. Funciones de entrada para leer strings de manera segura
4.1. La función fgets
4.2. La función getline
5. Bibliografía de apoyo
6. Preguntas de autoevaluación
7. Actividades
7.1. La función printf
7.2. Operaciones de entrada salida con caracteres
7.3. Operaciones de entrada/salida y gestión de memoria dinámica
7.4. Operaciones de entrada salida con tipos de datos
7.5. Funciones gets y fgets
7.6. La función getline
Lectura y escritura de ficheros
1. Introducción
1.1. Qué es un fichero
1.2. Qué es un flujo o stream
1.3. E/S mediante buffers
1.4. Comportamiento del modelo E/S
2. Funciones básicas
2.1. Punteros a FILE
2.2. Abriendo un fichero
2.3. Cerrando un fichero
2.4. Abriendo un fichero con un descriptor
3. Lectura y escritura de ficheros
3.1. Lectura/Escritura por bloques
4. Acceso aleatorio a ficheros
5. Manipulación directa de ficheros
6. Preguntas de autoevaluación
7. Bibliografía de apoyo
8. Actividades
8.1. Manejando ficheros en C (5 puntos)
8.2. Recuperando cadenas de un fichero (con fread)
8.3. Guardando cadenas en un fichero (con fwrite)
8.4. Leer un texto de fichero, contar sus caracteres y escribirlos en otro fichero
8.5. Leer un texto de fichero, contar sus líneas y escribir ese número en otro fichero
8.6. Leer una linea por pantalla y escribir en un fichero
8.7. Leer un número desconocido de palabras de un fichero de texto
8.8. Leer un número desconocido de enteros de un fichero
8.9. Leer una linea por pantalla y escribir en un fichero
8.10. Leer una linea por pantalla y escribir en un fichero
8.11. Manejando ficheros en C
8.12. Abrir y cerrar un fichero
8.13. Leer un número conocido de enteros de un fichero
8.14. Obtención del tamaño de un fichero
Modelado de estructura de datos
1. El modelado de datos
1.1. Preguntas de autoevaluación
2. Aplicación de referencia
3. Modelado de la información en una aplicación
3.1. Preguntas de autoevaluación
4. Establecimiento de relaciones entre diferentes tablas de la aplicación
5. Persistencia de la información
5.1. Preguntas de autoevaluación
6. Almacenamiento de información procesada
6.1. Preguntas de autoevaluación
7. Realizaciones de tablas de datos en lenguaje C
7.1. Preguntas de autoevaluación
8. Almacenamiento de datos en ficheros
8.1. Preguntas de autoevaluación
9. Independencia del módulo de datos y reutilización
9.1. Preguntas de autoevaluación
10. Bibliografía de apoyo
11. Actividades
11.1. Aplicación del modelado de datos al proyecto
11.2. Modelado de datos
11.3. Revisión del trabajo previo sobre modelado de datos