Kode TUBES 1: peta folder
Folder ini berisi kode simulasi bus rental mobil (src/bus-sim.c) beserta penjelasannya: sintaks C yang
dipakai, logika di balik tiap bagian, dan alasan kodenya ditulis seperti itu. Bagian statistik dijelaskan
paling dalam, baris demi baris. Kode di setiap berkas disalin persis dari src/bus-sim.c (versi yang sama
dengan yang di-commit), jadi kamu tidak perlu membuka file lain.
Konteks tugas (soal, rute, keputusan tafsir, persiapan demo) ada di
2_Panduan_Lengkap_TUBES_1.md di folder induk. Folder ini fokus ke kodenya.
Urutan baca
| No | Berkas | Isi | Bobot |
|---|---|---|---|
| 1 | 1_Sintaks_C_yang_Dipakai.md | semua sintaks C yang muncul di kode, dengan contoh dari kode ini | dasar, baca dulu |
| 2 | 2_Bagian_Atas_Parameter_Penomoran_Tipe.md | #define, penomoran SIMLIB, struct, enum, variabel global | ringkas |
| 3 | 3_Model_Entitas.md | lokasi, penumpang, bus | sedang |
| 4 | 4_Model_Event.md | kedatangan, naik, turun, bus tiba, aturan 5 menit, berangkat | sedang |
| 5 | 5_Main_Init_dan_Report.md | loop utama dan perakitan | ringkas |
| 6A | 6A_Statistik_dari_Nol.md | arti sampst dan timest dengan angka kecil, tanpa istilah yang belum dijelaskan | baca sebelum 6 dan 7 |
| 6 | 6_Stats_Hook.md | stats_init dan lima hook pencatat | dalam |
| 7 | 7_Stats_Laporan.md | stats_report_line, stats_report_sampst, stats_report | sangat dalam |
| 8 | 8_Stats_Hasil_Pemeriksaan_Latihan.md | hasil nyata, pemeriksaan, jebakan, latihan | dalam |
Kalau waktumu terbatas dan fokusnya statistik: baca 1, lalu 6A, 6, 7, 8. Berkas 3 dan 4 hanya perlu dibaca sebagai konteks untuk memahami kapan hook dipanggil.
Cara memakai penjelasan kode
Setiap potongan kode dijelaskan dengan tiga pertanyaan:
- Sintaks: apa arti tulisan C ini?
- Logika: apa yang terjadi saat program berjalan?
- Kenapa begini: kenapa ditulis seperti ini, bukan cara lain?
Peta besar: siapa memanggil siapa
main (loop event)
├─ event_arrival ──► passenger_create / passenger_file ──► (antrian, list 1-3)
├─ event_bus_arrival ─► try_start_unload ─► bus_alight ─────► stats_bus_count_changed (c)
│ └► try_start_load ───► stats_queue_delay (b)
├─ event_end_unload ──► stats_time_in_system (f)
├─ event_end_load ────► bus_board ──────────► stats_bus_count_changed (c)
├─ event_min_stop_reached ─► try_depart ─► bus_depart ─► stats_bus_stop (d)
│ └► stats_bus_loop (e)
└─ (event akhir simulasi) ─► report ─► stats_report ─► tabel (a)-(f)
Tanda (a) sampai (f) adalah statistik yang diminta soal. Hook adalah fungsi kecil stats_* yang dipanggil model setiap kali ada yang perlu dicatat (artinya “kait” atau “titik sambung”). Statistik (a) tidak punya hook karena SIMLIB
melacak panjang antrian sendiri.