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

NoBerkasIsiBobot
11_Sintaks_C_yang_Dipakai.mdsemua sintaks C yang muncul di kode, dengan contoh dari kode inidasar, baca dulu
22_Bagian_Atas_Parameter_Penomoran_Tipe.md#define, penomoran SIMLIB, struct, enum, variabel globalringkas
33_Model_Entitas.mdlokasi, penumpang, bussedang
44_Model_Event.mdkedatangan, naik, turun, bus tiba, aturan 5 menit, berangkatsedang
55_Main_Init_dan_Report.mdloop utama dan perakitanringkas
6A6A_Statistik_dari_Nol.mdarti sampst dan timest dengan angka kecil, tanpa istilah yang belum dijelaskanbaca sebelum 6 dan 7
66_Stats_Hook.mdstats_init dan lima hook pencatatdalam
77_Stats_Laporan.mdstats_report_line, stats_report_sampst, stats_reportsangat dalam
88_Stats_Hasil_Pemeriksaan_Latihan.mdhasil nyata, pemeriksaan, jebakan, latihandalam

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:

  1. Sintaks: apa arti tulisan C ini?
  2. Logika: apa yang terjadi saat program berjalan?
  3. 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.