CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm parçaları birleştirerek çalışan kütüphaneyi yazarsın.

Tüm parçaları birleştir

Kütüphane projesi dört ana fonksiyondan oluşur: addBook (ekle), searchByTitle (ara), borrowBook (ödünç al), returnBook (iade et). Bir oturumda önce kitap eklersin, sonra ödünç alır, en son iade edersin.

function addBook(lib: Library, book: Book): void { /* ... */ }
function searchByTitle(lib: Library, title: string): Book[] { /* ... */ }
function borrowBook(lib: Library, bookId: string): boolean { /* ... */ }
function returnBook(lib: Library, bookId: string): boolean { /* ... */ }

Çalışan örnek

İki kitap ekleyip birini ödünç alalım, sonra iade edelim ve son olarak başlıkla arama yapalım. Ödünç alma ve iade, available alanını değiştirir.

const lib: Library = { books: [] };
addBook(lib, { id: "b1", title: "TypeScript", author: "Ada", available: true });
addBook(lib, { id: "b2", title: "Python", author: "Bob", available: true });
borrowBook(lib, "b1");
returnBook(lib, "b1");
const results = searchByTitle(lib, "Script");
console.log(results.length);

Uygulama Çalışan kütüphaneyi yaz

Book, Member, Library arayüzlerini tanımla. addBook, searchByTitle, borrowBook, returnBook fonksiyonlarını yaz. İki kitap ekle ("TypeScript", "Python"), birini ("b1") ödünç al ve iade et, "Script" ile ara ve eşleşen sayısını yazdır.

Başlangıç kodu

index.ts
// Book, Member, Library arayüzlerini tanımla
// addBook, searchByTitle, borrowBook, returnBook fonksiyonlarını yaz
// iki kitap ekle (TypeScript ve Python)
// birini ödünç al, iade et
// "Script" ile ara ve eşleşen sayısını yazdır

Örnek çözüm

index.ts
interface Book { id: string; title: string; author: string; available: boolean; }
interface Member { id: string; name: string; }
interface Library { books: Book[]; }

function addBook(lib: Library, book: Book): void {
  lib.books.push(book);
}

function searchByTitle(lib: Library, title: string): Book[] {
  return lib.books.filter(b => b.title.includes(title));
}

function borrowBook(lib: Library, bookId: string): boolean {
  const book = lib.books.find(b => b.id === bookId);
  if (book && book.available) {
    book.available = false;
    return true;
  }
  return false;
}

function returnBook(lib: Library, bookId: string): boolean {
  const book = lib.books.find(b => b.id === bookId);
  if (book && !book.available) {
    book.available = true;
    return true;
  }
  return false;
}

const lib: Library = { books: [] };
addBook(lib, { id: "b1", title: "TypeScript", author: "Ada", available: true });
addBook(lib, { id: "b2", title: "Python", author: "Bob", available: true });
borrowBook(lib, "b1");
returnBook(lib, "b1");
const results = searchByTitle(lib, "Script");
console.log(results.length);

Beklenen çıktı

1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir kütüphane oturumunun mantıklı akışı hangisidir?

  • Ekle → ödünç al → iade et Doğru cevap
  • İade et → ekle → ödünç al
  • Ödünç al → iade et → ekle
  • Ekle → iade et → ödünç al

Açıklama: Önce kitap eklersin, sonra ödünç alırsın, en son iade edersin. Bu sıra mantıklı bir kütüphane oturumudur.

2 İade çağrısını tamamla

Soru
const result = ____(lib, "b1");
Cevap
const result = returnBook(lib, "b1");

Açıklama: Kitabı iade etmek için returnBook çağrılır. borrowBook ödünç alır, addBook yeni kitap ekler, searchByTitle sadece arar.

3 Birleştirme akışı

Kavram Anlamı
addBook İlk adım: ekle
borrowBook İkinci adım: ödünç al
returnBook Üçüncü adım: iade et
searchByTitle Arama aracı

Başlangıç bölümündeki tüm dersler