Descripción general del proyecto
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 28 de 56.
Vas a construir un pequeño gestor de biblioteca: un programa basado en menús que realiza un seguimiento de los libros y permite al usuario añadir, buscar, filtrar y marcarlos como leídos.
Cada libro es un hash con estas claves:
{
title: "The Great Gatsby",
author: "F. Scott Fitzgerald",
genre: "Fiction",
read: false
}Los mantendrás todos en un array llamado library y manejarás todo desde un loop do que imprime un menú y lee una opción. Cada lección añade una opción al menú:
- 1. Añadir un libro
- 2. Buscar por título
- 3. Filtrar por género
- 4. Marcar un libro como leído
- 5. Salir
Esta primera lección configura la biblioteca vacía, el bucle del menú y la opción de salida. Las otras opciones comenzarán como ramas vacías que completarás más adelante.
Desafío
PrincipianteInicializa un array library vacío, luego inicia un loop do que:
- Imprime el menú (formato exacto a continuación)
- Lee la elección del usuario con
gets.chomp - Si la elección es
"5", imprimeGoodbye!y sale del bucle
El menú debe verse exactamente así:
--- Library Manager ---
1. Add Book
2. Search By Title
3. Filter By Genre
4. Mark As Read
5. Exit
Choose an option: Usa print para el mensaje Choose an option: para que el cursor permanezca en la misma línea.
Para la entrada 5, la salida es:
--- Library Manager ---
1. Add Book
2. Search By Title
3. Filter By Genre
4. Mark As Read
5. Exit
Choose an option: Goodbye!Pruébalo tú mismo
# TODO: inicializar un arreglo library vacío
# TODO: bucle do, imprimir el menú, leer la opción, salir con "5"
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Strings en profundidad
Visión general de los métodos de StringInterpolación de StringsIterar sobre StringsSplit y JoinRepaso - String Weaver4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end vs llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasResumen - Iterador personalizado7Hashes Parte 2
Hash.new con valores por defectoIteración de HashesHashes anidadosFusión y transformaciónResumen - Contador de frecuencia10Proyecto - Registros de Estudiantes
Descripción general del proyectoAgregar estudiante5Potencia de Enumerable
Select y RejectEncadenando MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byResumen - Data Pipeline3Arreglos 2D
Conceptos básicos de arreglos 2DAcceso a elementos 2DIteración sobre arreglos 2DPatrones comunes en 2DResumen - Operaciones con matrices6Proyecto - Gestor de biblioteca
Descripción general del proyectoAñadir libro