Menu
Coddy logo textTech

חיפוש לפי כותרת

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 30 מתוך 56.

הוסיפו את האפשרות 2. Search By Title. המשתמש מקליד מונח חיפוש, והתוכנית מדפיסה כל ספר שהכותרת שלו מכילה את המונח, ללא תלות ברישיות.

כאן select מהפרק הקודם מוכיח את עצמו — בלוק אחד, בלי לולאה ידנית:

matches = library.select do |book|
  book[:title].downcase.include?(query.downcase)
end
challenge icon

אתגר

קל

הרחיבו את לולאת התפריט. כאשר הבחירה היא "2":

  1. השתמשו ב-print כדי להציג את ההנחיה Search title: וקראו את השאילתה
  2. השתמשו ב-select כדי למצוא ספרים שהכותרת שלהם כוללת את השאילתה (ללא תלות באותיות רישיות או קטנות)
  3. אם אין התאמות, הדפיסו No matches.
  4. אחרת, הדפיסו שורה אחת לכל התאמה בפורמט הזה: <title> by <author>

השאירו את ההתנהגויות של 1 (הוספת ספר) ושל 5 (יציאה) מהשיעורים הקודמים.

עבור הקלטים 1, The Hobbit, Tolkien, Fantasy, 2, hobbit, ואז 5, בלוק הפלט התואם נראה כך:

Choose an option: Search title: The Hobbit by Tolkien

נסו בעצמכם

library = []

loop do
  puts "--- Library Manager ---"
  puts "1. Add Book"
  puts "2. Search By Title"
  puts "3. Filter By Genre"
  puts "4. Mark As Read"
  puts "5. Exit"
  print "Choose an option: "
  choice = gets.chomp
  if choice == "5"
    puts "Goodbye!"
    break
  elsif choice == "1"
    print "Title: "
    title = gets.chomp
    print "Author: "
    author = gets.chomp
    print "Genre: "
    genre = gets.chomp
    library.push({ title: title, author: author, genre: genre, read: false })
    puts "Book added!"
  end
  # TODO: לטפל ב־choice == "2", לבקש שאילתת חיפוש, לבחור ספרים תואמים,
  # להדפיס "No matches." או שורה אחת לכל התאמה: "<title> by <author>"
end
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין