Indice Programación Curso 2009-2010 Syllabus
2009-2010
Listado siguiente

Programación I

Parte I Generalidades.
Computadoras y Lenguajes de Programación.
Parte II Metodologías de Programación
Parte III Tipos de Datos Primitivos y Operadores
Parte IV Estructuras de Control
Parte V Tipos de Datos Estructurados Homogéneos.
Mecanismos de iteración
Parte VI Programación Modular
Parte VII   Técnicas Básicas de Compilación

Programación II

Parte I Tipos Estructurados No Homogéneos
Parte II Algunos algoritmos básicos
Parte III Entornos Integrados de Desarrollo
Parte IV Reutilización de Código
Parte V Memoria Dinámica
Parte VI Gestión de Archivos
Parte VII   Técnicas Avanzadas de Compilación

Programación I

Parte I.- Generalidades: Computadoras y Lenguajes de Programación

Tema 1.-
Introducción
  1. Concepto de ordenador como autómata.
  2. Concepto de lenguaje máquina: datos e instrucciones.
  3. Concepto de lenguajes de alto y bajo nivel.
  4. Concepto de intérprete y lenguaje interpretado.
  5. Concepto de máquina virtual.
  6. Concepto de compilador y lenguaje compilado.
  7. Concepto de entorno de ejecución (runtime)
  8. Complejidad del problema: necesidad de la Ingeniería del Software.
Tema 1b.-
Estructura Básica de un programa
  1. Programa principal: Hola,Mundo.
  2. Uso del encabezado de main(). Variantes.
  3. Inclusión de archivos. Las bibliotecas estándar.
  4. Programas con más de un archivo: la pareja .h/.c.
  5. Espacio de nombres en programas con más de un archivo.
  6. .o, .h y .a : uso de bibliotecas

Parte II .- Metodologías de Programación

Tema 2.-
Metodologías de programación.
  1. Programación estructurada
    • Metodología descendente
    • Metodología ascendente
  2. Programación Orientada a Objetos
    • Abstracción
    • Encapsulamiento
    • Herencia
    • Polimorfismo

Parte III .- Tipos de Datos Primitivos y Operadores

Tema 3.-
Tipos y Variables
  1. Concepto de tipo de datos.
  2. Concepto de variable: nombre, dirección, longitud, tipo.
  3. Concepto de tipo predefinido.
  4. Concepto de tipo definido por el usuario.
  5. Concepto de tipo de referencia.
  6. Concepto de declaración de variables, y de comprobación estricta de tipos.
  7. Concepto de compatibilidad de tipos.
  8. Concepto de refundición de tipos.
  9. Concepto de ámbito de una variable: local, global.
  10. Concepto de duración de una variable: automática, estática.
  11. Taxonomía de tipos de datos según su composición.
Tema 4
Tipos Numéricos y Alfanuméricos
  1. Tipos de Datos Numéricos.
  2. Tipos de datos enteros. Alcances. El problema del desbordamiento.
  3. Tipos de datos de coma flotante. Alcances y precisiones. El problema del redondeo. Números no representables: NaN.
  4. Caracteres. Codificaciones. El estandar ASCII. El estándar UTF.
  5. Listas de caracteres. Método del marcador de fin de lista.
  6. Operaciones básicas con cadenas (comparación, concatenación, subcadenas, búsqueda, sustitución, llenado).
  7. Otros tipos de datos atómicos. Tipos enumerados (enum).
  8. Aplicación: programas de un solo uso. Línea de órdenes.
Tema 5
Entrada/Salida Elemental
  1. Conceptos básicos de Entrada/Salida (stdin, stdout, stderr).
  2. Operadores de redirección
  3. Leer valores numéricos del teclado (o disco)
  4. Escribir valores numéricos en la terminal (o disco)
  5. Leer valores alfanuméricos del teclado (o disco)
  6. Escribir valores alfanuméricos en la terminal (o disco)
  7. Pasar valores a un programa a través de la línea de órdenes.
  8. Utilizar la biblioteca utiles.c
Tema 6
Operadores
  1. Concepto de operador.
  2. Taxonomía de operadores en función del número de operandos.
  3. Operadores aritméticos.
  4. Operadores de comparación para números.
  5. Comparar lexicográficamente las cadenas de caracteres.
  6. Operadores lógicos.
  7. Operadores de bits.

Parte IV .- Estructuras de Control

Tema 7
Estructuras
de Control
  1. Ejecución secuencial.
  2. Estructuras de control alternativas.
  3. Estructuras de control repetitivas.
  4. Estructuras de control selectivas.
  5. Algoritmo de búsqueda secuencial. (Teórico, ver Semana 46)
  6. Algoritmo de búsqueda binaria.
  7. Algoritmo de ordenación por burbuja.
  8. No se debe reinventar la rueda. qsort(), mergesort(), heapsort().

Parte V .- Tipos de Datos Estructurados Homogéneos

Tema 8
Tipos Estructurados Homogéneos
  1. Diferencia entre los tipos de datos Homogéneos e Inhomogéneos.
  2. Forma de definir tipos matriciales.
  3. Forma de declarar variables de tipo vector, tabla y matriz n-dimensional.
  4. Forma de efectuar una asignación inicial de valores.
  5. El nombre de una lista es la dirección del primer elemento de esa lista.
  6. Concepto de Iterador y ejemplos.
  7. Forma de recorrer una lista (tabla, etc) mediante índices.
  8. Significado de un número de índices menor que la dimensión de la matriz y ejemplos.
  9. Diferencia entre asignación de punteros y copia de matrices.
  10. Forma de copiar dos matrices cualesquiera.
  11. Forma de calcular los requisitos de memoria de cualquier lista (tabla, etc.)
Tema 9
Punteros
  1. Concepto de tipo de datos de puntero (basado en direcciones).
  2. Definición de tipos de punteros que apuntan a variables individuales.
  3. Declaración de variables de tipos de puntero que apuntan a variables individuales. Asignación de valor (uso sin índice). Utilización con un índice .
  4. Definición de tipos de punteros que apuntan a variables que son vectores (filas).
  5. Declaración de variables de tipos de punteros que apuntan a variables que son vectores. Asignación de valores. Utilización con 0, 1 o 2 índices.
  6. Definición de tipos de puntero que apuntan a matrices de (n-1) dimensiones o índices.
  7. Declaración de variables de tipos de punteros que apuntan a matrices de (n-1) dimensiones o índices. Asignación de valores. Utilización con 0, 1, 2, ... n índices.
  8. Definiciones de tipos de punteros que apuntan a estructuras.
  9. Declaración de variables de tipos de punteros que apuntan a estructuras. Acceso a campos. Asignación de valores a punteros de estructuras. Asignación de estructuras mediante punteros.
  10. Aritmética de punteros. Dirección base. Recorrido de matrices con un puntero: aritmética de direcciones.
  11. Definición de punteros de funciones. Utilización de punteros de funciones. Aplicación para reutilizar código. Aplicación al concepto de clase.

Parte VI .- Programación modular

Tema 10
Subprogramas
  1. Depuración
  2. Conceptos básicos de los subprogramas.
  3. Sintaxis de un subprograma: encabezado, cuerpo.
  4. Concepto de espacio de nombres local y espacio de nombres global.
  5. Mecanismo de activación de funciones: los valores de los parámetros reales se copian en los parámetros formales.
  6. Mecanismo de paso por valor y paso por referencia (parámetros e indicación).
  7. Metodología de diseño descendente (Top-down).
  8. Metodología de diseño ascendente (Bottom-up)
  9. Llamadas recurrentes ("recursive") a subprogramas.

Parte VII .- Ténicas Básicas de Compilación

Tema 11
IDE y Arquitectura de programa
  1. Uso de Proyectos (IDE)
  2. Creación de makefiles elementales
  3. Depuración









Programación II

Parte I .- Tipos Estructurados Inhomogéneos

Tema I
Tipos Estructurados Inhomogéneos
  1. Definición de Tipos struct.
  2. Declaración de variables de tipo struct. Acceso a campos. Asignación de variables de tipo struct.
  3. Matrices de tipo base struct. Declaración, recorrido, acceso a campos.
  4. Matrices cuyo tipo base es un puntero de struct. Declaración, recorrido, acceso a campos.
  5. Uniones. Campos de bits.
  6. Cálculo de los requisitos de memoria

Parte II .- Algunos Algoritmos Básicos

Tema II
Algunos Algoritmos Básicos
  1. Depuración
  2. Comprender el concepto de Algoritmo.
  3. Ser capaz de crear y utilizar algoritmos sencillos.
  4. Comprender y utilizar el algoritmo de búsqueda secuencial.
  5. Comprender y utilizar el algoritmo de búsqueda binaria.
  6. Comprender y utilizar el algoritmo de ordenación por búsqueda del máximo.
  7. Comprender y utilizar el algoritmo de ordenación por burbujas.
  8. Comprender el concepto de llamada recurrente a una función.
  9. Comprender y utilizar el algoritmo de cálculo de factorial por métodos recurrentes.

Parte III .- Gestión de Proyectos de Software

Tema III
Entornos Integrados
de Desarrollo
  1. Gestión de proyectos de software
  2. Utilización de IDE
  3. Creación de proyectos con varios ficheros de código fuente
  4. Depuración avanzada: puntos de ruptura, observación de variables
  5. Relación entre IDE y make

Parte IV .- Reutilización de Código

Tema IV
Arquitecturas de programa
  1. Ventajas de la reutilización de código.
  2. Una arquitectura de programa elemental.
  3. Un ejemplo más avanzado de arquitectura de programa.
  4. Una biblioteca sencilla creada por el usuario.
  5. Bibliotecas más avanzadas (ar).

Parte V .- Asignación Dinámica de Memoria

Tema V
Asignación Dinámica
de Memoria
  1. Uso de memoria: asignación y reutilización. Asignación en la pila. Asignación en el cúmulo.
  2. Funciones de asignación de memoria.
  3. Bloques en memoria. Declaración de punteros. Recorridos de un bloque.
  4. Fugas de memoria. Cómo evitarlas.
  5. Estructuras de datos contiguas y no contiguas. Bloques de registros. Bloques de punteros. Otro enfoque: listas enlazadas.
Tema VI
Estructuras de Datos con recorrido lineal
  1. Concepto de Nodo.
  2. Listas doblemente enlazadas.
  3. Listas simplemente enlazadas.
  4. Listas enlazadas circulares.
  5. Listas enlazadas con nodo ficticio.
  6. Una pila basada en una lista enlazada.
  7. Una cola basada en una lista enlazada.
  8. Una base de datos basada en una lista enlazada.

Parte VI .- Gestión de Archivos

Tema VII
Archivos Binarios
  1. Comprender el concepto de archivo binario.
  2. Comprender las operaciones de lectura/escritura/adición/cierre.
  3. Utilizar un volcado hexadecimal para comprender los archivos binarios.
  4. Comprender el concepto de archivo binario homogéneo e inhomogéneo.
  5. Ser capaz de leer y escribir archivos binarios cuyo contenido sean estructuras de datos lineales con tipos de datos atómicos (matrices numéricas).
  6. Ser capaz de leer y escribir archivos binarios cuyo contenido sean estructuras de datos lineales con tipos de datos estructurados (matrices alfanuméricas y de estructuras).
  7. Ser capaz de leer y escribir archivos binarios cuyo contenido sean estructuras de datos no lineales con tipos de datos estructurados.
  8. Aplicación: escribir un programa que pueda leer y escribir sus propios archivos binarios, y también importar y exportar información.
Tema VIII
Archivos
de Texto
  1. Concepto de archivo de texto. Importación y exportación de datos.
  2. Tipos básicos de organización de archivos de texto: un campo por línea, delimitado, en columnas.
  3. Un volcado hexadecimal para comprender los archivos de texto.
  4. Leer y escribir tablas numéricas en archivos de texto.
  5. Leer y escribir tablas alfanuméricas en archivos de texto.
  6. Leer y escribir tablas mixtas (numéricas y alfanuméricas) en archivos de texto.
  7. Importar y exportar estructuras lineales de datos (matrices de struct).
  8. Importar y exportar estructuras de datos no lineales (listas enlazadas de struct).
  9. Escribir un programa que pueda leer y escribir archivos de texto con los formatos anteriores. Este archivo será un mecanismo de conversión para archivos de texto.

Parte VII .- Técnicas Avanzadas de Compilación

Tema IX
Técnicas Avanzadas
de Compilación
  1. Creación y utilización de bibliotecas
  2. Uso de bibliotecas a partir de la línea de órdenes
  3. Utilización de bibliotecas desde un IDE