dan Modularitas Program
Memahami konsep fungsi, parameter, return value, dan manfaat modularitas dalam pemrograman C++ dan Python
Agenda
Konsep Fungsi
Apa itu dan mengapa penting?
Membuat & Memanggil Fungsi
Sintaks C++ & Python
Parameter & Return Value
Data masuk dan keluar
Debugging Dasar
Menemukan dan memperbaiki kesalahan
Latihan & Tugas Individu
Soal literasi & numerasi C4-C6
Fungsi adalah blok kode terorganisir yang melakukan satu tugas tertentu. Modularitas adalah prinsip memecah program besar menjadi bagian-bagian kecil yang mandiri.
Tulis sekali, pakai berkali-kali. Tidak perlu menulis ulang kode yang sama di banyak tempat.
Kode lebih mudah dibaca dan dipahami. Setiap fungsi punya nama yang menjelaskan tugasnya.
Mudah diperbaiki. Jika ada bug, cukup perbaiki di satu fungsi tanpa mengubah bagian lain.
Analogi kehidupan nyata: Ibarat dapur rumah makan Padang — ada bagian khusus menggoreng, mengukus, dan meracik bumbu. Setiap bagian punya tugas masing-masing (fungsi). Jika rendang kurang garam, cukup perbaiki bagian bumbu tanpa mengubah bagian lain (modularitas).
Prinsip DRY (Don't Repeat Yourself): Hindari menulis kode yang sama berulang-ulang. Jika ada kode yang dipakai 2+ kali, jadikan fungsi!
Skenario: Fungsi sederhana tanpa parameter untuk menyapa pengguna
#include <iostream>
#include <string>
using namespace std;
// Definisi fungsi
void sapa() {
cout << "Halo, selamat belajar!" << endl;
}
int main() {
sapa(); // Memanggil fungsi
sapa(); // Bisa dipanggil berkali-kali
return 0;
}
// Output:
// Halo, selamat belajar!
// Halo, selamat belajar!
# Definisi fungsi
def sapa():
print("Halo, selamat belajar!")
# Memanggil fungsi
sapa()
sapa()
# Output:
# Halo, selamat belajar!
# Halo, selamat belajar!
void di C++ berarti fungsi tidak mengembalikan nilai. Di Python, fungsi tanpa return juga mengembalikan None secara default.
Skenario: Fungsi menghitung luas persegi — menerima parameter, mengembalikan nilai
#include <iostream>
using namespace std;
// Fungsi dengan parameter & return
int hitungLuas(int sisi) {
return sisi * sisi;
}
int main() {
int luas1 = hitungLuas(5);
int luas2 = hitungLuas(10);
cout << "Luas 5: " << luas1 << endl;
cout << "Luas 10: " << luas2 << endl;
return 0;
}
// Output:
// Luas 5: 25
// Luas 10: 100
# Fungsi dengan parameter & return
def hitung_luas(sisi):
return sisi * sisi
# Memanggil dengan argumen berbeda
luas1 = hitung_luas(5)
luas2 = hitung_luas(10)
print(f"Luas 5: {luas1}")
print(f"Luas 10: {luas2}")
# Output:
# Luas 5: 25
# Luas 10: 100
Multiple Parameters: Fungsi bisa memiliki lebih dari satu parameter. C++ harus menyebutkan tipe data tiap parameter. Python tidak perlu — cukup tulis nama parameternya saja.
Menggabungkan fungsi dengan if — else if — else dari pertemuan sebelumnya
#include <iostream>
#include <string>
using namespace std;
string tentukanGrade(int nilai) {
if (nilai >= 90)
return "A";
else if (nilai >= 80)
return "B";
else if (nilai >= 70)
return "C";
else
return "D";
}
int main() {
cout << tentukanGrade(85) << endl;
cout << tentukanGrade(72) << endl;
return 0;
}
// Output: B
// Output: C
def tentukan_grade(nilai):
if nilai >= 90:
return "A"
elif nilai >= 80:
return "B"
elif nilai >= 70:
return "C"
else:
return "D"
print(tentukan_grade(85))
print(tentukan_grade(72))
# Output: B
# Output: C
Peningkatan dari pertemuan lalu: Sebelumnya kita menulis if-else langsung di main(). Sekarang logika itu dibungkus dalam fungsi — bisa dipanggil kapan saja dengan nilai berbeda!
Variabel di dalam fungsi hanya berlaku di fungsi itu (local). Variabel di luar fungsi bersifat global.
#include <iostream>
using namespace std;
int x = 10; // Global
void fungsiA() {
int y = 5; // Local
cout << "x = " << x << endl;
cout << "y = " << y << endl;
}
int main() {
fungsiA();
// cout << y; // ERROR! y tidak dikenali
return 0;
}
x = 10 # Global
def fungsi_a():
y = 5 # Local
print(f"x = {x}")
print(f"y = {y}")
fungsi_a()
# print(y) # ERROR! y tidak dikenali
Peringatan: Hindari penggunaan variabel global sebisa mungkin. Variabel global bisa diubah dari mana saja, membuat program sulit dilacak dan di-debug. Gunakan parameter untuk mengirim data ke fungsi.
Tiga jenis kesalahan yang sering ditemui saat menulis fungsi
Kesalahan penulisan. Program tidak bisa dijalankan. Contoh: lupa titik koma, kurung tidak tutup.
Program berjalan tapi crash saat eksekusi. Contoh: bagi dengan nol, akses variabel belum didefinisikan.
Program berjalan tapi output salah. Contoh: operator salah (pakai + padahal harus *).
Contoh Bug: Logic Error
❌ Salah
int hitungLuas(int sisi) { return sisi + sisi; }
✅ Benar
int hitungLuas(int sisi) { return sisi * sisi; }
Tips Debugging:
Konteks SMA Padang — Level C4 (Menganalisis), C5 (Mengevaluasi), C6 (Mencipta)
Perhatikan fungsi berikut yang menghitung diskon di toko buku Gramedia Padang. Jika total_belanja = 150000 dan member = true, berapa output fungsi hitungDiskon()? Tunjukkan langkah perhitungannya.
def hitungDiskon(total_belanja, member):
if member == True:
if total_belanja >= 100000:
diskon = total_belanja * 0.15
else:
diskon = total_belanja * 0.10
else:
diskon = 0
return diskon
Seorang siswa membuat fungsi cek_lulus(float nilai) yang mengembalikan true jika nilai ≥ 75. Namun ketika dipanggil cek_lulus(75), program mengembalikan false. Identifikasi bug dan jelaskan perbaikannya.
Bug:
if (nilai > 75)
Perbaikan:
if (nilai >= 75)
Buatlah 3 fungsi dalam C++ DAN Python untuk simulasi kantin SMA Padang:
hitung_total(harga, jumlah) → mengembalikan total hargacek_budget(total, budget) → mengembalikan sisa uangtampilkan_struk(nama_item, total, sisa) → mencetak strukTulis program lengkap yang menggunakan ketiga fungsi tersebut.
Kerjakan sendiri — buat minimal 3 fungsi yang saling terhubung
Buat fungsi tambah, kurang, kali, bagi + fungsi menu untuk memilih operasi.
Buat fungsi celcius_ke_fahrenheit, fahrenheit_ke_celcius, dan tampilkan_hasil.
Buat fungsi hitung_rata, tentukan_grade, dan cek_kelulusan.
Buat skenario sendiri yang relevan SMA Padang, minimal 3 fungsi yang saling terhubung.
Yang dikumpulkan:
Tips: Mulailah dengan flowchart untuk merancang alur program. Lalu tulis fungsi satu per satu dan tes sebelum lanjut ke fungsi berikutnya. Pastikan setiap fungsi punya satu tugas yang jelas!