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!Hoja de referencia
Cada libro es un hash almacenado en un arreglo library:
library = []
book = {
title: "The Great Gatsby",
author: "F. Scott Fitzgerald",
genre: "Fiction",
read: false
}Utiliza loop do con break para construir un programa basado en menús. Utiliza print (no puts) para mantener el cursor en la misma línea que el prompt:
loop do
puts "--- Library Manager ---"
puts "1. Add Book"
puts "5. Exit"
print "Choose an option: "
choice = gets.chomp
if choice == "5"
puts "Goodbye!"
break
end
endPrué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