CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm parçaları birleştirerek çalışan quiz'i yazarsın.

Özet - Quiz uygulaması

Bu projede bir quiz uygulamasının tüm parçalarını birleştirdin: Soru modeli, soru havuzu, cevap kontrolü ve skor hesaplama. Her parça kendi sorumluluğunu taşır ve birlikte çalışan bir uygulama oluşturur. Model veriyi, havuz kaynağı, kontrol mantığı, skor sonucu temsil eder.

interface Soru { metin: string; dogruIndex: number; }
function cevapKontrol(d: number, c: number): boolean {
  return d === c;
}

Final montaj

Son montajda tüm parçalar tek bir akışta birleşir: soru havuzu alınır, her soru için cevap kontrolü yapılır, sonuçlar boolean[] dizisinde toplanır ve skorHesapla ile toplam bulunur. map metodu her soruyu bir boolean sonuç haline getirir.

const sonuclar = sorular.map(
  (s, i) => cevapKontrol(s.dogruIndex, cevaplar[i])
);

Uygulama Çalışan quiz

Soru interface'i tanımla: metin: string, dogruIndex: number. cevapKontrol fonksiyonu (dogruIndex: number, cevap: number): boolean olsun ve dogruIndex === cevap dönsün. skorHesapla fonksiyonu (sonuclar: boolean[]): number olsun, for...of ile true'ları saysın. sorular dizisi iki Soru içersin: { metin: "a", dogruIndex: 0 } ve { metin: "b", dogruIndex: 1 }. cevaplar dizisi [0, 0] olsun. sorular.map ile her soru için cevapKontrol çağırıp sonuclar dizisini oluştur ve skorHesapla(sonuclar) sonucunu console.log ile yazdır.

Başlangıç kodu

index.ts
// Soru interface tanımla
// cevapKontrol ve skorHesapla fonksiyonları yaz
// sorular ve cevaplar dizileri oluştur
// map ile sonuçları topla, skoru yazdır

Örnek çözüm

index.ts
interface Soru {
  metin: string;
  dogruIndex: number;
}
function cevapKontrol(dogruIndex: number, cevap: number): boolean {
  return dogruIndex === cevap;
}
function skorHesapla(sonuclar: boolean[]): number {
  let skor = 0;
  for (const s of sonuclar) {
    if (s) skor++;
  }
  return skor;
}
const sorular: Soru[] = [
  { metin: "a", dogruIndex: 0 },
  { metin: "b", dogruIndex: 1 }
];
const cevaplar: number[] = [0, 0];
const sonuclar = sorular.map((s, i) => cevapKontrol(s.dogruIndex, cevaplar[i]));
console.log(skorHesapla(sonuclar));

Beklenen çıktı

1

Soru ve cevaplar

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

1 Quiz uygulamasında birleştirme sırası aşağıdakilerden hangisidir?

  • Skor, kontrol, havuz, model
  • Model, kontrol, havuz, skor Doğru cevap
  • Havuz, model, skor, kontrol
  • Kontrol, skor, model, havuz

Açıklama: Doğru sıra: önce model tanımlanır, sonra cevap kontrolü yazılır, soru havuzu eklenir ve en son skor hesaplanır.

2 map ile indeks erişimi

Soru
const sonuclar = sorular.map((s, i) => cevapKontrol(s.dogruIndex, cevaplar[____]));
Cevap
const sonuclar = sorular.map((s, i) => cevapKontrol(s.dogruIndex, cevaplar[i]));

Açıklama: map callback'inde i parametresi sıradaki indeksi verir; cevaplar dizisinden o indeksli cevabı almak için i kullanılır.

3 Birleştirme parçaları

Kavram Anlamı
Soru interface Veri modeli
sorular dizisi Soru havuzu
cevapKontrol Doğrulama fonksiyonu
skorHesapla Skor hesabı

Orta seviye bölümündeki tüm dersler