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.

Ejercicios: Creación de Librerías de Funciones

Diseño, encapsulamiento e implementación de módulos reutilizables en C

Universidad Nacional de Río Negro

Acerca de

La creación de librerías de funciones (módulos reutilizables) permite estructurar programas de forma limpia, probable y mantenible.

Para resolver los siguientes ejercicios se recomienda utilizar como base la Plantilla para Librerías de la Cátedra (UNRN), organizando el proyecto con la siguiente estructura modular:

Asimismo, mediante el script ./manage.sh (rename, add-module, build, test) podés administrar la librería y posteriormente integrarla en proyectos más grandes o TPs usando ./tp.sh add-lib <nombre_libreria> <url_git>.

En este bloque de ejercicios vas a diseñar módulos temáticos independientes, definiendo interfaces claras y contratos robustos (precondiciones, postcondiciones y códigos de estado).

Capítulos de Apunte Correspondientes


1. Librerías Matemáticas y Numéricas

Ejercicio 7.1 - Librería de Operaciones Geométricas 2D ⭐⭐☆☆☆

Diseñá e implementá la librería geometria2d.h y geometria2d.c para cálculos en el plano 2D:


Ejercicio 7.2 - Librería de Conversión de Unidades ⭐⭐☆☆☆

Creá el módulo conversiones.h y conversiones.c para realizar transformaciones de unidades:


Ejercicio 7.3 - Librería de Estadística Básica ⭐⭐⭐☆☆

Diseñá estadistica.h y estadistica.c operando sobre arreglos de double:


Ejercicio 7.4 - Librería de Números Primos y Factorización ⭐⭐⭐☆☆

Implementá la librería primos.h y primos.c:


Ejercicio 7.5 - Librería de Trigonometría Compleja ⭐⭐⭐☆☆

Diseñá trigonometria.h y trigonometria.c:


2. Librerías de Manipulación de Texto y Cadenas

Ejercicio 7.6 - Biblioteca de Strings seguros ⭐⭐⭐⭐⭐

Reimplementá funciones estándar de <string.h> en la librería seguras.h y seguras.c:

Orientación:


Ejercicio 7.7 - Librería de Transformación de Cadenas Seguras ⭐⭐⭐☆☆

Diseñá str_transform.h y str_transform.c:


Ejercicio 7.8 - Librería de Búsqueda y Conteo en Texto ⭐⭐⭐☆☆

Implementá la librería text_search.h y text_search.c:


Ejercicio 7.9 - Librería de Formateo y Padding de Texto ⭐⭐⭐☆☆

Diseñá str_format.h y str_format.c:


Ejercicio 7.10 - Librería de Sanitización e Inspección de Entradas ⭐⭐⭐☆☆

Creá sanitizer.h y sanitizer.c:


3. Librerías de Manejo de Arreglos y Matrices

Ejercicio 7.11 - Librería de Vectores de Enteros ⭐⭐⭐☆☆

Diseñá la librería vec_int.h y vec_int.c para operar sobre arreglos estáticos de enteros:


Ejercicio 7.12 - Librería de Ordenamiento y Búsqueda ⭐⭐⭐⭐☆

Creá sort_search.h y sort_search.c:


Ejercicio 7.13 - Librería de Operaciones sobre Matrices 2D ⭐⭐⭐⭐☆

Diseñá matriz2d.h y matriz2d.c para matrices con dimensiones fijas o pasadas linealmente:


Ejercicio 7.14 - Librería de Manipulación de Conjuntos sobre Arreglos ⭐⭐⭐⭐☆

Implementá conjunto_arr.h y conjunto_arr.c:


Ejercicio 7.15 - Librería de Filtro y Reducción (Map / Filter / Reduce) ⭐⭐⭐⭐☆

Creá array_utils.h y array_utils.c aplicando punteros a funciones:


4. Librerías de Utilidades del Sistema y E/S

Ejercicio 7.16 - Librería de Validación de Entradas de Usuario ⭐⭐☆☆☆

Diseñá input_val.h y input_val.c para simplificar la lectura segura desde stdin:


Ejercicio 7.17 - Librería de Fechas y Calendario ⭐⭐⭐☆☆

Creá fechas.h y fechas.c:


Ejercicio 7.18 - Librería de Consola y Formato de Salida ⭐⭐☆☆☆

Diseñá console_ui.h y console_ui.c:


Ejercicio 7.19 - Librería de Medición de Tiempos de Ejecución ⭐⭐⭐☆☆

Implementá cronometro.h y cronometro.c:


Ejercicio 7.20 - Librería de Generación Numérica Pseudoaleatoria ⭐⭐⭐☆☆

Creá azar.h y azar.c:


5. Librerías de Simulación y Dominios Específicos

Ejercicio 7.21 - Librería de Física: Cinemática ⭐⭐☆☆☆

Diseñá fisica_cinematica.h y fisica_cinematica.c:


Ejercicio 7.22 - Librería de Finanzas Básicas ⭐⭐☆☆☆

Creá finanzas.h y finanzas.c:


Ejercicio 7.23 - Librería de Geometría 3D ⭐⭐⭐☆☆

Diseñá geometria3d.h y geometria3d.c:


Ejercicio 7.24 - Librería de Conversión de Bases Numéricas ⭐⭐⭐☆☆

Implementá bases.h y bases.c:


Ejercicio 7.25 - Librería de Criptografía Clásica ⭐⭐⭐☆☆

Diseñá cripto_simple.h y cripto_simple.c:


6. Librerías Avanzadas y Estructuración Compleja

Ejercicio 7.26 - Librería de Manejo de Colores y Espacios RGB/HSL ⭐⭐⭐☆☆

Creá color_utils.h y color_utils.c:


Ejercicio 7.27 - Librería de Evaluación de Expresiones lógicas ⭐⭐⭐⭐☆

Diseñá eval_logica.h y eval_logica.c:


Ejercicio 7.28 - Librería de Gestión de Bitmask y Flags ⭐⭐⭐⭐☆

Implementá bitmask.h y bitmask.c:


Ejercicio 7.29 - Librería de Manejo de Registro de Logs ⭐⭐⭐⭐☆

Diseñá logger.h y logger.c:


Ejercicio 7.30 - Librería de Verificación de Integridad (Checksum) ⭐⭐⭐⭐⭐

Creá checksum.h y checksum.c:


Notas Finales