Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Bloque 4: Ruta de aprendizaje avanzada

Guía de dependencias y orden de estudio de los temas avanzados

Universidad Nacional de Río Negro

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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óduloDepende deEvidencia de dominio
Binarios y bitsmemoria, structs, archivosserializar datos sin asumir tamaños ni endianness
Bitmapsbinarios y bitstransformar un BMP preservando su cabecera
Recursividad avanzadarecursión, stack, complejidadexplicar caso base, llamada recursiva y costo
APIsTAD, contratos, Makefilesseparar .h público de .c privado
Hilos y socketsAPIs, errores, recursosliberar recursos en todos los caminos de ejecución