Menu
Coddy logo textTech

חיפוש ברשימה: indexOf

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 6 מתוך 65.

כשצריך למצוא היכן נמצא איבר מסוים ברשימה, Dart מספקת את המתודה indexOf(). המתודה מחפשת ברשימה ומחזירה את מיקום האינדקס של ההופעה הראשונה של האיבר שמחפשים.

המתודה indexOf() מקבלת את האיבר שברצונך למצוא כפרמטר ומחזירה מספר שלם. אם האיבר נמצא ברשימה, היא מחזירה את מיקום האינדקס (החל מ־0). אם האיבר לא נמצא, היא מחזירה -1.

List<String> fruits = ['apple', 'banana', 'orange', 'banana'];

int appleIndex = fruits.indexOf('apple');    // 0
int bananaIndex = fruits.indexOf('banana');  // 1 (ההופעה הראשונה)
int grapeIndex = fruits.indexOf('grape');    // -1 (לא נמצא)

שיטה זו שימושית במיוחד כשצריך לדעת את המיקום של פריט לפני ביצוע פעולות כמו הוספה או הסרה במיקומים ספציפיים. זכור ש־indexOf() מוצאת רק את ההתאמה הראשונה, כך שאם רכיב מופיע כמה פעמים, תקבל את האינדקס של ההופעה הראשונה שלו.

challenge icon

אתגר

קל

צרו תוכנית שמנהלת מערכת לחיפוש ספרים בספרייה באמצעות איתור מיקומם של ספרים מסוימים על המדפים. התוכנית שלכם צריכה:

  1. לקרוא קלט מסוג מחרוזת שמייצג את שם היחידה בספרייה
  2. לקרוא כמה קלטים מסוג מחרוזת שמייצגים את כותרות הספרים שעל המדף (הקלט יסתיים כשתתקבל מחרוזת ריקה)
  3. לקרוא קלט מסוג מחרוזת שמייצג את כותרת הספר שאותו מחפשים
  4. להשתמש בשיטה indexOf() כדי למצוא את המיקום של הספר המבוקש
  5. להדפיס את תוצאות החיפוש בדיוק בפורמט שמוצג למטה

לדוגמה, אם היחידה בספרייה היא "Science Fiction", הספרים הם "Dune", "Foundation", "Neuromancer", "Foundation", "Ender's Game", והספר שמחפשים הוא "Foundation", התוכנית שלכם צריכה להציג:

Library Section: Science Fiction
Books on shelf: [Dune, Foundation, Neuromancer, Foundation, Ender's Game]
Searching for: Foundation
Book found at position: 1
Status: Book located successfully

אם היחידה בספרייה היא "Mystery", הספרים הם "Sherlock Holmes", "Agatha Christie", "The Maltese Falcon", והספר שמחפשים הוא "Gone Girl", התוכנית שלכם צריכה להציג:

Library Section: Mystery
Books on shelf: [Sherlock Holmes, Agatha Christie, The Maltese Falcon]
Searching for: Gone Girl
Book found at position: -1
Status: Book not available

על התוכנית שלכם להשתמש בשיטה indexOf() כדי לחפש את הספר. כשהספר נמצא (position >= 0), הציגו "Book located successfully". כשהספר לא נמצא (position = -1), הציגו "Book not available". זכרו ש-indexOf() מחזירה את המיקום של ההופעה הראשונה אם הספר מופיע כמה פעמים.

נסו בעצמכם

import 'dart:io';

void main() {
  // קראו את שם המדור בספרייה
  String? section = stdin.readLineSync();
  
  // קראו שמות ספרים עד למחרוזת ריקה
  List<String> books = [];
  String? book;
  while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
    books.add(book);
  }
  
  // קראו את שם הספר שיש לחפש
  String? searchBook = stdin.readLineSync();
  
  // TODO: כתבו את הקוד שלכם למטה
  // השתמשו במתודה indexOf() כדי למצוא את מיקום הספר
  
  // הדפיסו את התוצאות בפורמט הנדרש
  print('Library Section: $section');
  print('Books on shelf: $books');
  print('Searching for: $searchBook');
  // הדפיסו את המיקום והסטטוס בהתאם לתוצאות החיפוש
}
quiz iconבחנו את עצמכם

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

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

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