Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-10-13 16:51:57 -03:00
parent 42bb8bdf7a
commit f3dfba9a1c
7 changed files with 1300 additions and 19 deletions
+1281
View File
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,4 @@
# Capítulo 13 — Tipos más usados de C
# Capítulo 14 — Tipos más usados de C
> Capítulo avanzado. Se apoya en tipos primitivos (`02`), operadores (`03`), arreglos (`06`),
> punteros (`07`) y `struct` (`08`).
@@ -9,7 +9,7 @@
---
## 13.1 ¿Por qué no alcanza con un `int`?
## 14.1 ¿Por qué no alcanza con un `int`?
Un `int` resuelve muchísimos casos, pero **no responde de forma portable** tres preguntas:
@@ -53,7 +53,7 @@ datos** (valores en bits):
---
## 13.2 El mapa de los tipos
## 14.2 El mapa de los tipos
Casi ningún tipo "con nombre" es palabra del lenguaje: son **typedefs** de una cabecera. Estos son
los que vas a usar todo el tiempo (tamaño típico en un sistema de 64 bits):
@@ -78,7 +78,7 @@ los que vas a usar todo el tiempo (tamaño típico en un sistema de 64 bits):
---
## 13.3 `size_t` — los tamaños
## 14.3 `size_t` — los tamaños
**Cabecera:** `<stddef.h>`
@@ -101,7 +101,7 @@ uses en un `for` inverso (`for (size_t i = n - 1; i >= 0; i--)` es **infinito**)
---
## 13.4 `wchar_t` — caracteres anchos
## 14.4 `wchar_t` — caracteres anchos
**Cabecera:** `<stddef.h>`
@@ -135,7 +135,7 @@ clave no es "agrandar" el tipo, sino **elegir el correcto**. **Se imprimen con `
---
## 13.5 `NULL` — el puntero nulo
## 14.5 `NULL` — el puntero nulo
**Cabecera:** `<stddef.h>`
@@ -148,7 +148,7 @@ conceptual.
---
## 13.6 `bool` — verdadero o falso
## 14.6 `bool` — verdadero o falso
**Cabecera:** `<stdbool.h>` (C99; en C23, palabra clave)
@@ -161,7 +161,7 @@ usarlo:** si necesitás más de dos estados, un `enum` expresa mejor la intenci
---
## 13.7 Enteros de ancho exacto
## 14.7 Enteros de ancho exacto
**Cabecera:** `<stdint.h>`
@@ -205,7 +205,7 @@ printf("%llu\n", (unsigned long long)big);
---
## 13.8 ¿Tengo que dejar de usar `int`?
## 14.8 ¿Tengo que dejar de usar `int`?
**No.** Estos tipos **no reemplazan** a `int`: lo **complementan** para casos puntuales. El `int`
sigue siendo el tipo por defecto para números enteros comunes.
@@ -255,7 +255,7 @@ int c = a + b; /* 200: la suma se calcula en int, y al achicar se desborda */
---
## 13.9 ¿Los tipos chicos ahorran memoria?
## 14.9 ¿Los tipos chicos ahorran memoria?
**Depende de dónde.** Guardar **muchos** valores en tipos chicos sí ahorra memoria; una variable
suelta, no.
@@ -290,7 +290,7 @@ struct Color2 { int r, g, b; }; /* 12 bytes */
---
## 13.10 Errores comunes
## 14.10 Errores comunes
- Comparar un `int` negativo con `sizeof` o `strlen` (el `-1` se vuelve `SIZE_MAX`).
- Guardar un tamaño (`sizeof`, tamaño de un archivo) en un `int`.
@@ -301,14 +301,14 @@ struct Color2 { int r, g, b; }; /* 12 bytes */
---
## 13.11 Ejercicios
## 14.11 Ejercicios
> De **noob** a **pro**, con dificultad creciente. Cada ejercicio declara sus conceptos objetivo;
> resolvelos **usando esos conceptos**. Trae un **escenario de prueba** (entrada/salida esperada,
> nunca el algoritmo) para que compares lo que imprimís. Compilá con un estándar moderno (C11 o C23)
> y avisos activos (`-Wall -Wextra`).
### Ejercicio 13.1 — Radiografía de tipos
### Ejercicio 14.1 — Radiografía de tipos
**Conceptos** · `sizeof`, `size_t`, `printf` (`%zu`), tipos de `<stddef.h>` y `<stdint.h>`
@@ -342,7 +342,7 @@ LP64 (Linux/macOS 64-bit) LLP64 (Windows 64-bit)
---
### Ejercicio 13.2 — Sumar con `size_t`
### Ejercicio 14.2 — Sumar con `size_t`
**Conceptos** · `size_t`, arreglos, `for`, casos borde
@@ -369,7 +369,7 @@ count = 1 ; [-5] -> -5
---
### Ejercicio 13.3 — El índice que se convierte en gigante
### Ejercicio 14.3 — El índice que se convierte en gigante
**Conceptos** · conversiones con/sin signo, `size_t`, comparaciones
@@ -395,7 +395,7 @@ explicación: -1 convertido a size_t = SIZE_MAX (18446744073709551615), y SIZE_M
---
### Ejercicio 13.4 — Texto que no entra en un byte
### Ejercicio 14.4 — Texto que no entra en un byte
**Conceptos** · `wchar_t`, `L""`, `%lc`, `%ls`, `<uchar.h>`
@@ -426,7 +426,7 @@ contraste: guardar 'ñ' en un char y usar %c da basura o un byte suelto.
---
### Ejercicio 13.5 — El entero de ancho exacto (pro)
### Ejercicio 14.5 — El entero de ancho exacto (pro)
**Conceptos** · `<stdint.h>`, tipos de ancho exacto, portabilidad
@@ -457,7 +457,7 @@ total = 123456789012345ULL (uint64_t) -> 123456789012345
---
## 13.12 Cierre
## 14.12 Cierre
Los tipos de C no son un adorno: son la forma de decir **qué querés representar** y **de qué
tamaño**. `size_t` para tamaños, `uintN_t`/`intN_t` para ancho exacto, `bool` para verdades,