A. Konsep Fungsi dan Prosedur
Modularisasi adalah teknik memecah program monolitik yang panjang menjadi blok-blok kecil independen dengan tugas terdefinisi jelas yang diawali kata kunci `def`:
| Istilah | Pengertian / Definisi Teknis | Contoh Kode |
|---|---|---|
| Fungsi (Function) | Blok kode yang menerima masukan, memproses, dan mengembalikan suatu nilai hasil melalui pernyataan `return`. | `def luas(p, l): return p * l` |
| Prosedur (Procedure) | Blok kode yang menjalankan instruksi aksi (seperti mencetak pesan) tanpa mengembalikan nilai (otomatis mengembalikan `None` di Python). | `def sapa(nama): print('Halo', nama)` |
| Parameter | Variabel penampung yang didefinisikan pada deklarasi tanda kurung fungsi. | `def diskon(harga, persen=10):` |
| Argumen | Nilai nyata aktual yang dikirimkan ke dalam fungsi saat pemanggilan dilakukan. | `total = diskon(100000, 15)` |
| Scope Lokal | Variabel yang dibuat di dalam badan fungsi; hanya dapat dikenali di dalam fungsi tersebut. | Variabel sementara di dalam def |
| Scope Global | Variabel yang dibuat di luar seluruh fungsi pada tingkat modul berkas. | Variabel di luar fungsi |
B. Manfaat & Prinsip Desain Modular yang Baik
- Reusability (Dapat Digunakan Ulang): Kode ditulis satu kali, lalu dapat dipanggil puluhan kali dengan parameter berbeda (menerapkan prinsip DRY: *Don't Repeat Yourself*).
- Single Responsibility Principle (SRP): Setiap fungsi hanya boleh memiliki SATU tanggung jawab fokus. Fungsi hitung hanya bertugas menghitung; fungsi tampilkan hanya bertugas menampilkan.
- High Cohesion (Kohesi Tinggi): Baris-baris perintah di dalam fungsi saling berkaitan erat untuk menuntaskan satu tugas spesifik.
- Low Coupling (Keterikatan Rendah): Fungsi tidak boleh terlalu bergantung secara liar pada variabel global di luar dirinya; komunikasi data harus dialirkan secara eksplisit lewat parameter dan `return`.
C. Analisis Kasus Desain Modular (Prototipe Matriks)
def hitung_total(data):
total = 0
for item in data:
total += item
return total
def hitung_rata(total, jumlah):
return total / jumlah
def tampilkan(hasil):
print('Rata-rata nilai:', hasil)
# Alur Pemanggilan Terstruktur
nilai = [80, 85, 90, 75]
total = hitung_total(nilai)
rata = hitung_rata(total, len(nilai))
tampilkan(rata) # Output: Rata-rata nilai: 82.5Penilaian Kualitas Desain di Atas:
- Sesuai: Fungsi `hitung_total` memiliki tanggung jawab tunggal untuk menjumlahkan seluruh elemen data list.
- Sesuai: Fungsi `hitung_rata` memiliki tanggung jawab tunggal menghitung rata-rata dan mengembalikannya lewat `return`.
- Sesuai: Fungsi `tampilkan` bertugas menyajikan output ke layar (sebagai prosedur).
- Desain Buruk (Monolitik): Jika ada satu fungsi `def proses():` yang membaca `input()`, menghitung total, menghitung rata-rata, lalu melakukan `print()` sekaligus di dalamnya. Desain campur aduk seperti itu sulit diuji otomatis dan tidak bisa digunakan ulang!