elemes/docs/07-quiz-authoring.md

3.9 KiB

07. Quiz Authoring (Format Soal Kuis)

Kuis ditulis sebagai Markdown di dalam marker ---QUIZ_FLASHCARD--- sampai ---END_QUIZ_FLASHCARD---. Setiap blok diawali ### (heading level 3). Opsi pilihan ganda ditulis sebagai list item dengan tanda kurung: - [x] = jawaban benar, - [] = salah. Wajib tepat satu [x] per soal — parser menolak soal tanpa jawaban benar atau dengan lebih dari satu.

---QUIZ_FLASHCARD---
### Pertanyaan pertama?
- [] Opsi A
- [x] Opsi B (benar)

### Pertanyaan kedua?
...
---END_QUIZ_FLASHCARD---

Dua tipe soal

1. Pilihan Ganda (MCQ) — format flat (kompatibel)

Heading langsung diikuti daftar opsi:

### Apa output dari `printf("%d", 5 + 5);`?
- [] 55
- [x] 10
- [] 5 + 5
- [] Error
> Penjelasan: Operasi `5 + 5` dihitung terlebih dahulu menjadi `10`.

2. Pilihan Ganda (MCQ) — format kaya (baru)

Blok Markdown apa pun boleh mendahului daftar opsi: paragraf, code fence, tabel, math ($...$ / $$...$$), bahkan embed (Canva/YouTube/Figma). Seluruh blok tersebut dirender sebagai lembar soal di area materi; opsi muncul di lembar jawaban (tab kuis). Kode tidak boleh berisi baris yang diawali - [ (akan terbaca sebagai opsi) — gunakan code fence.

### Perhatikan program berikut:
```c
int x = 2;
printf("%d", x * 3);

Berapakah keluaran program di atas?

  • [] 5
  • [] 8
  • 6
  • [] Error

Pembahasan: x * 3 menghasilkan 6.


```markdown
### Berdasarkan tabel berikut, tipe data mana yang tepat untuk menyimpan `3.14`?
| Tipe   | Ukuran | Rentang        |
|--------|--------|----------------|
| int    | 4 byte | -2^31 s/d 2^31-1 |
| double | 8 byte | ~1e-308 s/d ~1e308 |
- [x] double
- [] int
### Berapakah nilai dari $\int_0^1 2x \, dx$?
- [x] 1
- [] 2
- [] 0.5

3. Flashcard

Heading diikuti langsung jawaban (tanpa daftar opsi):

### Apa fungsi dari `return 0;` di dalam fungsi `main()`?
Menandakan bahwa program telah selesai berjalan dengan sukses tanpa ada error.

Selama mengerjakan, murid hanya melihat sisi depan (heading). Sisi belakang ditampilkan di pembahasan setelah kuis selesai.

Gambar soal

Cara Contoh Hasil
Directive image: (baris apa pun di blok soal) image: https://.../c.png atau image: gambar.png (relatif → /assets/) Field image soal; baris directive dibuang dari prompt
Markdown image di body, sebelum opsi (format kaya) ![C Logo](https://.../c.svg) Field image soal; markup dihapus dari prompt agar tidak ganda
Markdown image di dalam opsi - [x] ![C Logo](https://.../c.svg) Gambar dirender sebagai bagian teks opsi

Gambar di heading (### ... ![alt](url)) juga diekstrak ke field image selama URL-nya http(s) atau /assets/.

Penjelasan / pembahasan

Blockquote > di bagian akhir soal (setelah opsi) menjadi field explanation dan hanya ditampilkan di pembahasan setelah kuis selesai — murid tidak melihatnya saat mengerjakan.

Perilaku (wajib dipahami)

  • ID stabil: soal diberi id q-0, q-1, ...; opsi q-0-o-0, ... sesuai urutan penulisan di file. ID tidak pernah berubah karena urutan tampil diacak.
  • Randomisasi: saat murid menekan "Mulai Kuis", urutan soal dan urutan opsi diacak sekali, lalu dibekukan sampai kuis selesai. Pindah soal / kembali tidak mengacak ulang.
  • Skor: benar/total-MCQ (flashcard tidak masuk penyebut). Soal MCQ yang tidak dijawab saat keluar = salah. Ambang lulus 75%.
  • Submit: tombol "Selesai Kuis" aktif hanya jika semua soal dijawab/ditandai. Keluar, pindah halaman, atau reload = submit final (penalti).
  • Satu kesempatan: token ---QUIZ_TOKEN--- menandai kuis sekali jalan; hanya guru yang bisa reset.
  • Feedback: benar/salah + pembahasan hanya muncul di ringkasan setelah kuis tersimpan. Tidak ada indikator benar/salah selama mengerjakan (jawaban boleh diganti).

Contoh lengkap

Lihat content/dasar/quiz_test.md (atau examples/content/dasar/quiz_test.md).