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 * 3menghasilkan6.
```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) |  |
Field image soal; markup dihapus dari prompt agar tidak ganda |
| Markdown image di dalam opsi | - [x]  |
Gambar dirender sebagai bagian teks opsi |
Gambar di heading (### ... ) 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, ...; opsiq-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).