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.

Índice del Apunte

Índice estructurado del material didáctico por bloques conceptuales

Universidad Nacional de Río Negro

Índice Temático del Apunte

Prerrequisitos: Una computadora con Windows o GNU/Linux y disposición para compilar ejemplos en Linux/WSL2.

Objetivos: 1. Ubicar el capítulo previo necesario para un tema nuevo. 2. Planificar una ruta de estudio por bloques y dependencias.

Comprobación de salida: elegí un tema del Bloque 4 e identificá los capítulos que debés dominar antes de estudiarlo.

El material de estudio de la cátedra está organizado físicamente en cuatro bloques didácticos secuenciales. Esta estructura proporciona un andamiaje progresivo para el desarrollo de tus habilidades de programación.

El entorno

Para Windows y Linux, la cátedra ha creado un conjunto de scripts que se encargan de la creación del espacio de trabajo, que además, está separado de la configuración de lo que esté en la cátedra. INGCOM-UNRN-P1/entorno

Este se encarga de descargar todas las herramientas necesarias para trabajar, compilar, editar y ejecutar el código que desarrollaras.

Podés verificar la instalación con:

gcc --version
make --version

Los ejemplos se compilan, salvo indicación contraria, con:

gcc -Wall -Wextra -std=c11 -pedantic archivo.c -o programa

Metodología de estudio

En cada capítulo seguí este ciclo: leé el objetivo, ejecutá el ejemplo mínimo, modificá una sola condición para observar su efecto y recién entonces resolvé los ejercicios. Conservá los warnings del compilador: son parte de la retroalimentación, no texto para ignorar. Si un capítulo depende de otro, volvé al concepto previo antes de memorizar una solución.

Matriz de dependencias conceptuales

Para estudiarAntes domináResultado esperado
Bloque 1lógica elemental y uso de terminalprogramas C pequeños compilables
Bloque 2variables, control y funcionesexplicar direcciones, vida útil y recursos
Bloque 3punteros, memoria dinámica y testing básicodiseñar y probar TADs
Bloque 4bloques 1–3, contratos y compilación modularintegrar APIs y recursos de sistema

Bloque 1: Fundamentos del Control de Flujo y Modularización

Este bloque introduce la sintaxis básica de C, la gestión del estado, las bifurcaciones y los lazos, la descomposición modular, la compilación automatizada de proyectos y las bases lógicas de la verificación de software.


Bloque 2: Memoria

Este bloque avanza desde la ubicación y representación de un valor hasta la administración explícita de recursos. No es una lista de técnicas intercambiables: cada etapa activa un conocimiento necesario para la siguiente.

Las ampliaciones de allocator, stack frames en ensamblador, hardware de memoria, memcpy/aliasing, AoS/SoA y punto flotante están integradas como secciones opcionales dentro de cada capítulo principal (marcadas como “Lectura avanzada” o “Alcance”) y no son prerrequisitos del recorrido anterior.


Bloque 3: Algoritmos y Estructuras de Datos

Uso de matrices multidimensionales, Tipos de Datos Abstractos (TADs), estructuras lineales con contratos informales y formales, análisis asintótico de complejidad e introducción a la recursividad.

Las transferencias desde el Bloque 2 se concentran en tres puentes opcionales:

El análisis de stack frames en ensamblador x86-64 vive en el Bloque 2 (bloque_2_memoria/1_modelo_memoria.md, sección “Anatomía de un Stack Frame”).


Bloque 4: Temas Avanzados

Tópicos de optimización a bajo nivel, encapsulamiento, manipulación de bits, recursividad avanzada y diseño arquitectónico de APIs robustas en C.