Modul 4 — Pemrograman Terstruktur

4.3 Modularisasi Program

Konsep fungsi vs prosedur di Python, parameter vs argumen, cakupan variabel (scope lokal vs global), return vs print, prinsip Single Responsibility, kohesi tinggi, dan evaluasi modularitas kode.

Progres disimpan di browser ini saja.

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`:

IstilahPengertian / Definisi TeknisContoh 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)`
ParameterVariabel penampung yang didefinisikan pada deklarasi tanda kurung fungsi.`def diskon(harga, persen=10):`
ArgumenNilai nyata aktual yang dikirimkan ke dalam fungsi saat pemanggilan dilakukan.`total = diskon(100000, 15)`
Scope LokalVariabel yang dibuat di dalam badan fungsi; hanya dapat dikenali di dalam fungsi tersebut.Variabel sementara di dalam def
Scope GlobalVariabel 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.5

Penilaian 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!

Latihan Soal

Pilih jawaban, tekan Check, lalu baca pembahasannya.

Benar 0 / 3

Soal 1mudah

Perhatikan potongan kode program Python berikut: def kalikan(a, b=2): return a * b hasil = kalikan(5) print(hasil) Nilai keluaran yang tercetak ke layar terminal adalah ...

Soal 2sedang

Sebuah fungsi dalam aplikasi e-commerce dirancang untuk membaca input kupon dari pengguna, memvalidasi kupon ke basis data, menghitung potongan harga, mencetak struk belanja, dan mengirimkan email notifikasi sekaligus. Prinsip desain modular yang dilanggar oleh fungsi tersebut adalah ...

Soal 3sedang

Diberikan kode program: def hitung_kuadrat(n): hasil = n * n output = hitung_kuadrat(4) print(output) Apa yang tercetak saat program di atas dieksekusi?