103 lines
3.9 KiB
Markdown
103 lines
3.9 KiB
Markdown
# 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:
|
|
|
|
```markdown
|
|
### 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.
|
|
|
|
```markdown
|
|
### Perhatikan program berikut:
|
|
```c
|
|
int x = 2;
|
|
printf("%d", x * 3);
|
|
```
|
|
Berapakah keluaran program di atas?
|
|
- [] 5
|
|
- [] 8
|
|
- [x] 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
|
|
```
|
|
|
|
```markdown
|
|
### Berapakah nilai dari $\int_0^1 2x \, dx$?
|
|
- [x] 1
|
|
- [] 2
|
|
- [] 0.5
|
|
```
|
|
|
|
### 3. Flashcard
|
|
|
|
Heading diikuti langsung jawaban (tanpa daftar opsi):
|
|
|
|
```markdown
|
|
### 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`, ...; 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`).
|