Índice temático del apunte¶
Fundamentos de Computación y Algoritmos: Fundamentos de algoritmos, diagramas de flujo y representación de datos.
Introducción a la programación en C: Introducción práctica al lenguaje C, variables, tipos primarios y el concepto de estado.
Control de Flujo Gradual: Decisiones condicionales, estructuras de repetición (lazos) y control seguro de flujos.
Funciones y descomposición funcional: Modularización, firmas de funciones, ámbitos y persistencia de almacenamiento con
static.Compilación: Fases del proceso de compilación, cabeceras
.h, modularidad mediante Makefiles y argumentos demain.Secuencias: Arreglos y Cadenas: Arreglos unidimensionales estáticos y gestión robusta de cadenas de caracteres (
strings).Matrices: Arreglos multidimensionales y optimización de localidad espacial en la memoria caché.
Definición de Tipos y Alias: Alias de tipos con
typedefy modelado lógico con enumerativos (enum).Punteros: Concepto físico de punteros, indirección y paso por referencia simulado.
Estructuras y Tipos Compuestos: Tipos de datos compuestos (
structyunion), junto con su alineación en memoria (padding).Archivos de Texto: Persistencia mediante streams de caracteres, manipulación y direccionamiento de archivos de texto.
Recursividad y Divide y Vencerás en C: Pensamiento recursivo, trazabilidad en el stack de llamadas e inducción matemática.
Modelo de Memoria y Pila: Anatomía de la memoria física de un proceso, jerarquías y comparación cuantitativa de Stack y Heap.
Memoria Dinámica: Alocación dinámica de recursos con
malloc,reallocyfree, junto con el análisis de fugas.Aritmética de Punteros Avanzada y Matrices Dinámicas: Aritmética de direcciones física y conversión explícitamente de tipos de punteros (
casting).Genericidad y Callbacks (Punteros a Funciones): Punteros a funciones y diseño de algoritmos paramétricos mediante funciones de callback.
Punteros Opacos y Encapsulamiento en C: Encapsulamiento lógico riguroso mediante el ocultamiento de tipos incompletos en C.
Tipos de Datos Abstractos, Pilas y Colas: Diseño y contratos de la interfaz del Tipo de Dato Abstracto (TAD) Secuencia (listas enlazadas vs arreglos).
Pilas, Colas y Estructuras Lineales Restringidas: Tipos de Datos Abstractos con restricciones de acceso: Pilas (Stacks), Colas (Queues) y Deques.
Análisis de Complejidad Algorítmica: Análisis de eficiencia algorítmica, notación asintótica Big-O, límites de hardware y la teoría P vs NP.
Código Idiomático en C: Modismos idiomáticos, patrones recurrentes del estándar C e integración de recursos.
Testing y Verificación en C: Metodologías de verificación, diseño de pruebas unitarias automáticas y depuración física.
Diseño por Contratos y Lógica Formal: Diseño por contrato, invariantes de representación de datos y aserciones.