Pemrograman terstruktur adalah paradigma pemrograman yang menekankan pada pemecahan masalah besar menjadi modul-modul yang lebih kecil dan terkelola. Dalam konteks C++, pemrograman terstruktur dicapai melalui penggunaan kontrol alur yang jelas (urutan, seleksi, dan perulangan), serta penggunaan fungsi (subrutin) untuk mengorganisasi kode. Ini adalah fondasi penting sebelum beralih ke pemrograman berorientasi objek (OOP).
Ilustrasi sederhana alur kontrol dalam pemrograman terstruktur.
Tiga pilar utama yang mendefinisikan gaya terstruktur adalah:
if-else atau switch untuk membuat keputusan berdasarkan kondisi tertentu.for, while, atau do-while untuk mengulang blok kode beberapa kali.Selain itu, penggunaan fungsi sangat penting. Fungsi memecah program menjadi unit-unit logis yang lebih kecil, meningkatkan keterbacaan, dan memfasilitasi penggunaan kembali kode (reusability).
Berikut adalah contoh kode C++ sederhana yang mengimplementasikan konsep terstruktur, termasuk fungsi, seleksi, dan perulangan.
Program ini akan meminta input angka dari pengguna, memvalidasi input (seleksi), dan kemudian menghitung faktorial menggunakan perulangan.
#include <iostream>
// Deklarasi Fungsi (Modul)
int hitungFaktorial(int n) {
if (n < 0) {
return -1; // Indikasi error untuk bilangan negatif
}
int hasil = 1;
// Struktur Perulangan (Looping)
for (int i = 1; i <= n; ++i) {
hasil = hasil * i;
}
return hasil;
}
int main() {
int angka;
// Struktur Urutan (Input)
std::cout << "Masukkan bilangan bulat non-negatif: ";
std::cin >> angka;
// Struktur Seleksi (Decision Making)
if (angka < 0) {
std::cout << "Error: Faktorial tidak didefinisikan untuk bilangan negatif.\n";
} else {
// Memanggil fungsi
int faktorial = hitungFaktorial(angka);
// Output Hasil
std::cout << "Faktorial dari " << angka << " adalah: " << faktorial << "\n";
}
return 0;
}
Dalam contoh di atas, kita dapat melihat penerapan jelas dari pemrograman terstruktur:
hitungFaktorial(int n). Ini membuat fungsi main() tetap bersih dan mudah dibaca.if-else di main() untuk menangani kasus input negatif.if di dalam fungsi untuk menangani kasus dasar (n < 0).for loop untuk proses iteratif penghitungan faktorial.Pendekatan ini menghilangkan penggunaan goto (yang sangat tidak dianjurkan dalam pemrograman terstruktur) dan memastikan bahwa eksekusi program mengalir secara logis dari awal hingga akhir, membuatnya mudah untuk diuji dan di-debug.
Mengadopsi gaya terstruktur, terutama saat belajar C++, memberikan manfaat signifikan:
Meskipun C++ modern sangat mendukung OOP, pemahaman mendalam tentang pemrograman terstruktur tetap krusial. Semua program OOP pada akhirnya terdiri dari blok-blok terstruktur di dalam metode dan fungsi masing-masing kelas.