stdsquare²
🎓 Kelas
stdsquare / materi / slides / pertemuan-06
Tema
Japan
Arcade
Dark Retro
Font
‹ Daftar slide Pertemuan 6: Fungsi dalam Pemrograman: Parameter, Return, dan Scope
Program Studi Bisnis Digital • FEB UNDIP

Algoritma dan Pemrograman

Pertemuan 6 — Fungsi dalam Pemrograman: Parameter, Return, dan Scope

Cara membungkus kode yang berulang jadi blok bernama, mengirim data lewat parameter, mengembalikan hasil dengan return, dan memahami batas jangkauan variabel (scope).

RPS MINGGU 6 • 2 × 50 MENIT

Tujuan Pembelajaran Hari Ini

Setelah pertemuan ini, Anda diharapkan mampu merancang dan menggunakan fungsi untuk menyusun program yang rapi dan tidak berulang. Secara rinci:

CAPAIAN 1
ANATOMI
Menjelaskan struktur fungsi (def, nama, parameter, return) dan manfaat menghindari kode berulang.
CAPAIAN 2
PARAMETER
Membuat fungsi dengan parameter positional, nilai default, dan keyword argument.
CAPAIAN 3
RETURN
Membedakan return dengan print(), dan mengembalikan lebih dari satu nilai sekaligus.
CAPAIAN 4
SCOPE
Membedakan variabel lokal dan global serta dampaknya pada perilaku program.

Mengapa Kita Butuh Fungsi?

Bayangkan Anda baru membangun sistem kasir sederhana untuk toko online UMKM. Tanpa fungsi, tiga masalah ini muncul berulang setiap hari:

MASALAH 1
DUPLIKASI
Rumus hitung diskon di-copy-paste di 10 tempat berbeda dalam kode. Salah satu typo, semua ikut salah.
MASALAH 2
SULIT UBAH
Tarif ongkir berubah? Anda harus cari dan ubah rumus itu satu-satu di seluruh berkas kode.
MASALAH 3
SULIT DIBACA
Kode 200 baris tanpa pengelompokan jadi seperti benang kusut — sulit dilacak logikanya.
Fungsi membungkus logika yang berulang menjadi satu blok bernama, dipanggil sesuka hati — prinsip ini disebut DRY: Don't Repeat Yourself.
Bagian 1 dari 4
Anatomi & Cara Kerja Fungsi
Apa itu fungsi, bagian-bagian penyusunnya, dan bagaimana Python mengeksekusinya saat dipanggil.
def call return

Apa Itu Fungsi? Anatomi def

Fungsi (function) adalah blok kode bernama yang mengerjakan satu tugas tertentu, dan bisa dipanggil ulang kapan pun dibutuhkan.

ANATOMI FUNGSI PYTHON
defkata kunci pembukahitung_diskonnama fungsi(harga, persen):parameter, lalu titik duareturn hasilnilai dikembalikanBADAN FUNGSI (menjorok/indented) — kode yang dijalankan tiap kali dipanggildiskon = harga * persen / 100 → ... → return harga_akhir
Fungsi tidak dijalankan saat didefinisikan — baru berjalan ketika dipanggil: hitung_diskon(250000, 15).

Langkah Pertama: Fungsi Paling Sederhana

Fungsi paling dasar tidak butuh parameter dan tidak mengembalikan nilai — ia hanya menjalankan tugas tetap setiap dipanggil.

KODE — CETAK KOP STRUK TOKO
def cetak_header(): print("=====================") print(" TOKO SEJAHTERA ONLINE") print("=====================") # memanggil fungsi cetak_header() cetak_header() # dipanggil lagi, tanpa tulis ulang
CIRI-CIRI
TANPA INPUT
  • Tanda kurung () kosong → tidak ada parameter
  • Tidak ada return → hanya menampilkan (print)
  • Bisa dipanggil berkali-kali tanpa menulis ulang isinya

Alur Eksekusi: Apa yang Terjadi Saat Fungsi Dipanggil?

Python tidak membaca kode dari atas ke bawah secara lurus ketika ada pemanggilan fungsi — ia "melompat" sejenak, lalu kembali.

RUNUTAN LANGKAH (perhatikan urutan lompatannya)
  • 1Python membaca baris sapa_pelanggan("Budi") — ini titik pemanggilan.
  • 2Eksekusi melompat ke definisi fungsi def sapa_pelanggan(nama):.
  • 3Nilai "Budi" dititipkan ke parameter nama di dalam fungsi.
  • 4Seluruh badan fungsi dijalankan baris demi baris, dari atas ke bawah.
  • 5Begitu ketemu return (atau badan fungsi habis), eksekusi kembali ke titik pemanggilan tadi.
  • 6Program melanjutkan baris setelah pemanggilan, seolah tidak terjadi apa-apa.
Ini sebabnya definisi fungsi (def) boleh diletakkan di atas, tetapi hanya berjalan saat dipanggil, bukan saat dibaca Python pertama kali.

Fungsi dengan Parameter & Argument

Parameter membuat fungsi fleksibel — satu fungsi bisa dipakai untuk data yang berbeda-beda setiap kali dipanggil.

KODE — SAPAAN PERSONAL PELANGGAN
def sapa_pelanggan(nama): print("Halo, " + nama + "!") print("Terima Kasih sudah belanja.") sapa_pelanggan("Siti") sapa_pelanggan("Budi")
ISTILAH PENTING — JANGAN TERTUKAR

Parameter — nama variabel di dalam tanda kurung saat fungsi didefinisikan. Contoh: nama.

Argument — nilai sesungguhnya yang dikirim saat fungsi dipanggil. Contoh: "Siti", "Budi".

Bagian 2 dari 4
Parameter Lanjutan: Default & Keyword
Bagaimana membuat parameter opsional dengan nilai bawaan, dan cara memanggil fungsi tanpa terikat urutan.
default value keyword argument

Parameter dengan Nilai Bawaan (Default)

Beri nilai bawaan pada parameter agar boleh dilewati saat pemanggilan — praktis untuk kasus yang "biasanya begini, tapi kadang beda".

KODE — HITUNG ONGKOS KIRIM
def hitung_ongkir(berat_kg, tarif=5000): # tarif punya nilai bawaan Rp 5.000/kg return berat_kg * tarif # pakai tarif bawaan (tidak diisi) print(hitung_ongkir(3)) # 15000 # timpa tarif bawaan (kota jauh) print(hitung_ongkir(3, 8000)) # 24000
Parameter dengan nilai bawaan harus diletakkan setelah parameter wajib dalam daftar — Python akan error kalau urutannya terbalik.

Keyword Argument: Memanggil Tanpa Terikat Urutan

Sebutkan nama parameternya saat memanggil fungsi — urutan argumen jadi bebas dan kode lebih jelas dibaca.

KODE — POSITIONAL vs KEYWORD
def buat_akun(nama, kota, umur): print(nama, "-", kota, "-", umur) # positional: urutan harus persis buat_akun("Rani", "Semarang", 21) # keyword: urutan bebas, lebih jelas buat_akun(umur=21, nama="Rani", kota="Semarang")
Manfaat keyword argument: mencegah salah pasang nilai saat parameter banyak dan tipenya mirip (mis. dua parameter angka yang mudah tertukar urutannya).

Hitung dari Nol: Fungsi hitung_diskon()

Mari telusuri persis apa yang terjadi di dalam komputer saat hitung_diskon(250000, 15) dipanggil.

KODE FUNGSI
def hitung_diskon(harga, persen): diskon = harga * persen / 100 harga_akhir = harga - diskon return harga_akhir hasil = hitung_diskon(250000, 15)
JEJAK EKSEKUSI, LANGKAH DEMI LANGKAH
LangkahPerhitunganNilai
Fungsi dipanggilharga=250000, persen=15dititipkan ke parameter
Hitung diskon250.000 × 15 / 100Rp 37.500
Hitung harga_akhir250.000 − 37.500Rp 212.500
return harga_akhirdikembalikan ke pemanggilRp 212.500
Setelah return dieksekusi, variabel hasil di luar fungsi berisi Rp 212.500 — siap dipakai di baris kode berikutnya.
Bagian 3 dari 4
Return Value & Scope Variabel
Perbedaan mendasar antara return dan print, cara mengembalikan banyak nilai, dan wilayah hidup sebuah variabel.
print()  ≠  return

return vs print(): Beda yang Krusial

Keduanya sama-sama menampilkan angka di layar — tetapi hanya satu yang bisa dipakai lagi oleh bagian lain program.

HANYA print() — SALAH KAPRAH
def hitung_total(a, b): print(a + b) # cuma tampil x = hitung_total(5, 3) # tampil: 8 print(x + 1) # ERROR!

Nilai x berisi None — tidak ada nilai yang dikembalikan untuk dipakai ulang.

DENGAN return — BENAR
def hitung_total(a, b): return a + b # dikembalikan x = hitung_total(5, 3) print(x + 1) # hasil: 9

x benar-benar berisi angka 8, siap dipakai untuk perhitungan lanjutan.

Mengembalikan Lebih dari Satu Nilai

Python mengizinkan satu return mengirim beberapa nilai sekaligus, dipisahkan koma — dikemas otomatis jadi tuple (dibahas pertemuan 7).

KODE — RINCI PESANAN TOKO ONLINE
def rincian_pesanan(harga_satuan, jumlah): subtotal = harga_satuan * jumlah ongkir = 12000 total = subtotal + ongkir return subtotal, ongkir, total # 3 nilai sekaligus # tangkap ketiganya dengan 3 nama variabel sub, kirim, total_bayar = rincian_pesanan(45000, 2) print(sub, kirim, total_bayar) # 90000 12000 102000
Jumlah variabel penampung di kiri harus sama persis dengan jumlah nilai yang di-return — kalau tidak, Python akan error.

Scope: Wilayah Hidup Sebuah Variabel

Scope menentukan di bagian mana sebuah variabel bisa "dilihat" dan dipakai dalam program.

GLOBAL SCOPE vs LOCAL SCOPE
GLOBAL SCOPE — level program utamastok_toko = 50LOCAL SCOPE — di dalam fungsijumlah_terjual = 12 (parameter)sisa = stok_toko - jumlah_terjualreturn sisaboleh DIBACATIDAK bisa diubah langsung
Variabel yang dibuat di dalam fungsi (local) otomatis hilang begitu fungsi selesai — hanya bisa diakses lewat return.

Hitung dari Nol: Local Tidak Mengubah Global

Mari buktikan dengan angka bahwa variabel local di dalam fungsi tidak mengubah variabel global di luar fungsi.

KODE
stok_toko = 50 # GLOBAL def cek_stok(jumlah_terjual): sisa = stok_toko - jumlah_terjual # LOCAL return sisa hasil = cek_stok(12) print(hasil) # ? print(stok_toko) # ?
JEJAK EKSEKUSI, LANGKAH DEMI LANGKAH
LangkahPerhitunganNilai
stok_toko dibuat (GLOBAL)stok_toko = 50
Panggil cek_stok(12)parameter LOCALjumlah_terjual = 12
Hitung sisa (LOCAL)50 − 12sisa = 38
return sisadikembalikanhasil = 38
Cek stok_toko lagitidak tersentuh fungsistok_toko = 50 (TETAP!)
Fungsi cek_stok hanya membaca stok_toko, dan variabel sisa hanya hidup di dalam fungsi — begitu fungsi selesai, stok_toko di luar tetap 50.

Coba Sendiri: Menelusuri Panggilan Fungsi dan Scope

Jalankan pemanggilan fungsi langkah demi langkah dan amati bagaimana parameter local terisi tanpa menyentuh variabel global.

Studi Kasus: Rakit Semua Konsep Jadi Satu Fungsi

Fungsi hitung_total_belanja ini menggabungkan parameter, default, dan return untuk kasir UMKM sungguhan.

KODE LENGKAP
def hitung_total_belanja(harga_satuan, jumlah, diskon_persen=0): subtotal = harga_satuan * jumlah potongan = subtotal * diskon_persen / 100 total = subtotal - potongan return total # pelanggan biasa, tanpa diskon (pakai default) print(hitung_total_belanja(45000, 3)) # 135000 # pelanggan member, diskon 10% (keyword argument) print(hitung_total_belanja(45000, 3, diskon_persen=10)) # 121500
Verifikasi cepat: 45.000 × 3 = 135.000 → potongan 10% = 13.500 → total = 135.000 − 13.500 = 121.500.

Latihan Mandiri: Giliran Anda Merancang Fungsi

Kerjakan di IDE Anda (Thonny/VS Code) selama 15 menit. Kumpulkan berkas .py lewat portal e-learning sebelum kelas berakhir.

SOAL 1 — WAJIB
  • Buat fungsi hitung_ppn(harga_barang) yang mengembalikan nilai PPN.
  • Gunakan tarif PPN efektif 11% (PMK 131/2024) sebagai konstanta di dalam fungsi.
  • Uji dengan harga barang Rp 500.000 — tampilkan hasilnya dengan print().
SOAL 2 — TANTANGAN
  • Buat fungsi info_pesanan(nama, total, metode="COD") dengan metode berdefault "COD".
  • Fungsi harus return sebuah tuple berisi nama, total, dan metode.
  • Panggil sekali dengan default, sekali lagi dengan metode="Transfer" via keyword argument.

Ringkasan & Jembatan ke Pertemuan 7

EMPAT HAL YANG WAJIB ANDA KUASAI
  • Anatomi: def nama(parameter): lalu badan fungsi menjorok.
  • Parameter: positional, default, dan keyword argument.
  • Return: mengembalikan nilai untuk dipakai lagi — beda dari print().
  • Scope: variabel local hidup & mati di dalam fungsi; global tetap di luar.
MINGGU DEPAN — PERTEMUAN 7
LIST & TUPLE
Fungsi kita hari ini kadang perlu memproses banyak data pelanggan sekaligus — di situlah list dan tuple masuk sebagai wadah data terurut yang akan kita pelajari minggu depan.
Sebelum pertemuan berikutnya, pastikan Anda bisa membuat fungsi tanpa membuka catatan — ini fondasi untuk hampir seluruh sisa semester.