Menu
Coddy logo textTech

Listede Bulma: indexOf

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 6 / 65.

Bir listede belirli bir öğenin nerede bulunduğunu bulmanız gerektiğinde, Dart indexOf() metodunu sunar. Bu metod listeyi tarar ve aradığınız öğenin ilk geçtiği yerin indeks konumunu döndürür.

indexOf() metodu, bulmak istediğiniz öğeyi parametre olarak alır ve bir tam sayı döndürür. Eğer öğe listede mevcutsa, (0'dan başlayan) dizin konumunu döndürür. Eğer öğe bulunamazsa, -1 döndürür.

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

int appleIndex = fruits.indexOf('apple');    // 0
int bananaIndex = fruits.indexOf('banana');  // 1 (ilk oluşum)
int grapeIndex = fruits.indexOf('grape');    // -1 (bulunamadı)

Bu yöntem, belirli konumlarda ekleme veya kaldırma gibi işlemleri gerçekleştirmeden önce bir öğenin konumunu bilmeniz gerektiğinde özellikle yararlıdır. indexOf() yönteminin yalnızca ilk eşleşmeyi bulduğunu unutmayın; bu nedenle bir öğe birden fazla kez görünüyorsa, ilk geçtiği yerin dizinini alırsınız.

challenge icon

Görev

Kolay

Raflardaki belirli kitapların konumunu bularak bir kütüphane kitabı arama sistemini yöneten bir program oluştur. Programın şunları yapmalıdır:

  1. Kütüphane bölümü adını temsil eden bir dize girdisi oku
  2. Raftaki kitap başlıklarını temsil eden birden çok dize girdisi oku (boş bir dize alındığında girdi sona erecektir)
  3. Aranacak kitap başlığını temsil eden bir dize girdisi oku
  4. İstenen kitabın konumunu bulmak için indexOf() yöntemini kullan
  5. Arama sonuçlarını aşağıda gösterilen tam biçimde yazdır

Örneğin, kütüphane bölümü "Science Fiction", kitaplar "Dune", "Foundation", "Neuromancer", "Foundation", "Ender's Game" ve aranan kitap "Foundation" ise programın çıktısı şöyle olmalıdır:

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

Kütüphane bölümü "Mystery", kitaplar "Sherlock Holmes", "Agatha Christie", "The Maltese Falcon" ve aranan kitap "Gone Girl" ise programın çıktısı şöyle olmalıdır:

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

Programın kitabı aramak için indexOf() yöntemini kullanması gerekir. Kitap bulunduğunda (position >= 0), "Book located successfully" ifadesini görüntüle. Kitap bulunamadığında (position = -1), "Book not available" ifadesini görüntüle. Kitap birden çok kez görünürse indexOf() yönteminin ilk oluşumun konumunu döndürdüğünü unutma.

Kendin dene

import 'dart:io';

void main() {
  // Kütüphane bölüm adını oku
  String? section = stdin.readLineSync();
  
  // Boş dize gelene kadar kitap başlıklarını oku
  List<String> books = [];
  String? book;
  while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
    books.add(book);
  }
  
  // Aranacak kitabı oku
  String? searchBook = stdin.readLineSync();
  
  // TODO: Kodunuzu aşağıya yazın
  // Kitabın konumunu bulmak için indexOf() metodunu kullanın
  
  // Sonuçları istenen formatta yazdırın
  print('Library Section: $section');
  print('Books on shelf: $books');
  print('Searching for: $searchBook');
  // Arama sonuçlarınıza göre konumu ve durumu yazdırın
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Dart derleyicisi