🐍
📝 Bagian 3 (Jobsheet Praktikum Terstruktur) • Modul JS-04
100% Standar Industri & Vokasi
Jobsheet 04: Desain Fungsi & Modularitas
Praktikum terstruktur: Refaktorisasi program monolitik menjadi modul fungsi terstruktur, kalkulator rumus geometri dengan parameter dinamis, dan lambda filter.
1. Kompetensi Dasar & Indikator
Tujuan Praktikum:
- Mampu memecah program monolitik besar menjadi fungsi-fungsi kecil dengan tanggung jawab tunggal (Single Responsibility Principle).
- Mampu menerima parameter dalam jumlah fleksibel menggunakan
*argsdan**kwargs. - Menggunakan fungsi
filter()danmap()bersamalambdauntuk transformasi data list.
2. Aktivitas Terbimbing: Modul Analisis Statistik Numerik
Ketik dan jalankan file lab4_statistik.py:
python (lab4_statistik.py)
# Fungsi menerima berapapun jumlah angka (*args)
def hitung_statistik(*data: float) -> dict:
"""Menghitung Mean, Median, Min, dan Max dari sekumpulan angka."""
if not data:
return {"error": "Tidak ada data yang dikirim!"}
angka_list = sorted(data)
n = len(angka_list)
# 1. Rata-rata (Mean)
mean = sum(angka_list) / n
# 2. Median (Nilai Tengah)
if n % 2 == 1:
median = angka_list[n // 2]
else:
median = (angka_list[(n // 2) - 1] + angka_list[n // 2]) / 2
return {
"total_sampel": n,
"mean": round(mean, 2),
"median": median,
"nilai_terkecil": angka_list[0],
"nilai_terbesar": angka_list[-1]
}
# Pengujian Fungsi
hasil = hitung_statistik(80, 95, 70, 85, 90, 60, 100)
print("=== RINGKASAN STATISTIK KELAS ===")
for k, v in hasil.items():
print(f"{k.replace('_', ' ').title():<18}: {v}")
3. Tugas Mandiri: Mesin Analisis Mutasi Rekening Bank
Studi Kasus: Pemroses Riwayat Transaksi Finansial
Diberikan kumpulan mutasi rekening dalam format List of Dictionaries:
transaksi = [{"id": 1, "tipe": "IN", "jumlah": 1500000, "ket": "Gaji"}, {"id": 2, "tipe": "OUT", "jumlah": 50000, "ket": "Makan Siang"}, ...]
Buat 3 Fungsi Terpisah:
filter_transaksi(daftar, tipe_target): Menggunakan fungsifilter()&lambdauntuk mengambil hanya transaksi masuk ("IN") atau keluar ("OUT").hitung_arus_kas(daftar): Mengembalikan 3 nilai: Total Pemasukan, Total Pengeluaran, dan Saldo Bersih (Cashflow).cetak_laporan_keuangan(daftar, nama_pemilik, nomor_rekening): Menggabungkan semua fungsi di atas dan mencetak rincian mutasi yang terformat rapi.
Kriteria Keberhasilan: Fungsi bersifat reusable (dapat digunakan untuk rekening mana pun tanpa dependensi variabel global).
4. Rubrik Evaluasi & Penilaian
| Aspek Penilaian | Bobot | Kriteria Sempurna |
|---|---|---|
| Desain Modular & Return Values | 35% | Fungsi modular mandiri, mengembalikan nilai murni (pure function). |
| Implementasi Lambda & Filter/Map | 30% | Penyaringan transaksi mutasi menggunakan sintaks lambda yang tepat. |
| Penanganan Kasus List Kosong | 20% | Fungsi tidak error ketika menerima list transaksi yang kosong. |
| Dokumentasi Docstring & Type Hint | 15% | Setiap fungsi memiliki docstring penjelas parameter dan return. |