C++ & Python

Fungsi

dan Modularitas Program

Memahami konsep fungsi, parameter, return value, dan manfaat modularitas dalam pemrograman C++ dan Python

Modular Kode Debugging

Agenda

Daftar Materi

01

Konsep Fungsi

Apa itu dan mengapa penting?

02

Membuat & Memanggil Fungsi

Sintaks C++ & Python

03

Parameter & Return Value

Data masuk dan keluar

04

Debugging Dasar

Menemukan dan memperbaiki kesalahan

05

Latihan & Tugas Individu

Soal literasi & numerasi C4-C6

01

Konsep Fungsi & Modularitas

Fungsi adalah blok kode terorganisir yang melakukan satu tugas tertentu. Modularitas adalah prinsip memecah program besar menjadi bagian-bagian kecil yang mandiri.

Reusability

Tulis sekali, pakai berkali-kali. Tidak perlu menulis ulang kode yang sama di banyak tempat.

Readability

Kode lebih mudah dibaca dan dipahami. Setiap fungsi punya nama yang menjelaskan tugasnya.

Maintainability

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!

02

Membuat & Memanggil Fungsi

Skenario: Fungsi sederhana tanpa parameter untuk menyapa pengguna

C++
fungsi_sapa.cpp
#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!
Python
fungsi_sapa.py
# 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.

03

Parameter & Return Value

Skenario: Fungsi menghitung luas persegi — menerima parameter, mengembalikan nilai

C++
luas_persegi.cpp
#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
Python
luas_persegi.py
# 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.

03

Contoh Lanjutan: Fungsi dengan Kondisional

Menggabungkan fungsi dengan if — else if — else dari pertemuan sebelumnya

C++
grade_fungsi.cpp
#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
Python
grade_fungsi.py
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!

03

Scope Variabel

Variabel di dalam fungsi hanya berlaku di fungsi itu (local). Variabel di luar fungsi bersifat global.

C++
scope.cpp
#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;
}
Python
scope.py
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.

04

Debugging Dasar

Tiga jenis kesalahan yang sering ditemui saat menulis fungsi

Syntax Error

Kesalahan penulisan. Program tidak bisa dijalankan. Contoh: lupa titik koma, kurung tidak tutup.

Runtime Error

Program berjalan tapi crash saat eksekusi. Contoh: bagi dengan nol, akses variabel belum didefinisikan.

Logic Error

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:

1 Baca pesan error 2 Gunakan cout/print untuk cek nilai variabel 3 Trace program secara manual
05

Latihan Soal

Konteks SMA Padang — Level C4 (Menganalisis), C5 (Mengevaluasi), C6 (Mencipta)

C4 Menganalisis

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.

diskon.py
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
C5 Mengevaluasi

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)
C6 Mencipta

Buatlah 3 fungsi dalam C++ DAN Python untuk simulasi kantin SMA Padang:

  • (a) hitung_total(harga, jumlah) → mengembalikan total harga
  • (b) cek_budget(total, budget) → mengembalikan sisa uang
  • (c) tampilkan_struk(nama_item, total, sisa) → mencetak struk

Tulis program lengkap yang menggunakan ketiga fungsi tersebut.

05

Tugas Individu

Kerjakan sendiri — buat minimal 3 fungsi yang saling terhubung

A

Kalkulator Sederhana

Buat fungsi tambah, kurang, kali, bagi + fungsi menu untuk memilih operasi.

B

Konverter Suhu Kota Padang

Buat fungsi celcius_ke_fahrenheit, fahrenheit_ke_celcius, dan tampilkan_hasil.

C

Sistem Nilai Rapor SMA

Buat fungsi hitung_rata, tentukan_grade, dan cek_kelulusan.

D

Skenario Sendiri

Buat skenario sendiri yang relevan SMA Padang, minimal 3 fungsi yang saling terhubung.

Yang dikumpulkan:

Flowchart Kode C++ Kode Python Screenshot output di Programmiz

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!