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
+1 -1
View File
@@ -1,3 +1,3 @@
{ {
"fingerprint": "60c5eae54c7e739d5e839304b313804bc547b807" "fingerprint": "20b915f104d898a7f082379179a80d6d5c528afa"
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

+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`), > Capítulo avanzado. Se apoya en tipos primitivos (`02`), operadores (`03`), arreglos (`06`),
> punteros (`07`) y `struct` (`08`). > 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: 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 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): 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>` **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>` **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>` **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) **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>` **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` **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. 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 **Depende de dónde.** Guardar **muchos** valores en tipos chicos sí ahorra memoria; una variable
suelta, no. 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`). - 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`. - 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; > 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, > 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) > nunca el algoritmo) para que compares lo que imprimís. Compilá con un estándar moderno (C11 o C23)
> y avisos activos (`-Wall -Wextra`). > 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>` **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 **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 **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>` **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 **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é 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, tamaño**. `size_t` para tamaños, `uintN_t`/`intN_t` para ancho exacto, `bool` para verdades,
BIN
View File
Binary file not shown.
Binary file not shown.