Bloque 4: Ruta de aprendizaje avanzada
Guía de dependencias y orden de estudio de los temas avanzados
Prerrequisitos: haber completado los bloques 1 a 3: funciones, punteros, memoria dinámica, archivos de texto, TAD, contratos y complejidad. Se trabaja con GCC 11+ en Linux/WSL2 y los flags
-Wall -Wextra -std=c11 -pedantic.Objetivos: 1. Elegir una ruta de estudio del bloque según sus dependencias. 2. Verificar que se domina un prerrequisito antes de avanzar.
Comprobación de salida: seleccioná un módulo final y enumerá los conceptos previos que necesitás para abordarlo.
Este bloque no es una colección de temas independientes: propone una ruta para pasar de escribir programas correctos a diseñar componentes de C reutilizables, eficientes y capaces de interactuar con el sistema operativo.
Cómo recorrer el bloque¶
Representación y persistencia. Empezá por archivos binarios y operaciones bitwise. Necesitás dominar
FILE *,fread/fwrite, arreglos y conversiones de tipos. El resultado es poder describir datos como bytes sin perder de vista su formato.Aplicación integrada. Continuá con bitmaps: integra archivos binarios, structs, padding y operaciones de bits en un formato real. Antes de avanzar, deberías poder abrir, validar y escribir un archivo BMP.
Control del flujo complejo. Estudiá recursividad avanzada si ya podés seguir un stack frame y analizar casos base. El objetivo es justificar terminación, costo y uso de memoria de backtracking.
Diseño de componentes. Luego abordá C idiomático, diseño de APIs e ingeniería de APIs. Requieren contratos, TAD y compilación modular; culminan en una biblioteca con una interfaz estable y una implementación intercambiable.
Extensiones de sistemas. Hilos requiere dominio de punteros, estado compartido y APIs; sockets añade archivos, manejo de errores y el modelo cliente-servidor. Estudialos al final: ambos hacen visibles errores de diseño que en programas secuenciales pueden pasar inadvertidos.
Mapa de dependencias¶
| Módulo | Depende de | Evidencia de dominio |
|---|---|---|
| Binarios y bits | memoria, structs, archivos | serializar datos sin asumir tamaños ni endianness |
| Bitmaps | binarios y bits | transformar un BMP preservando su cabecera |
| Recursividad avanzada | recursión, stack, complejidad | explicar caso base, llamada recursiva y costo |
| APIs | TAD, contratos, Makefiles | separar .h público de .c privado |
| Hilos y sockets | APIs, errores, recursos | liberar recursos en todos los caminos de ejecución |