Untuk mencapai suatu tujuan yang besar, maka tujuan tersebut harus dibagi-bagi menjadi tujuan yang kecil, sampai tujuan kecil tersebut merupakan tujuan yang dapat dicapai berdasarkan kondisi dan potensi yang dimiliki saat itu(Al-Khuwarizmi).
Jika langkah-langkah dalam menyelesaikan masalah yang kita miliki cukup besar, maka seringkali kita membagi langkah-langkah besar tersebut kedalam langkah-langkah yang lebih kecil.
Pengertian Pemrograman Modular
Pemrograman modular adalah sebuah metode pembuatan program dengan cara memecah masalah menjadi beberapa kelompok masalah yang lebih kecil. Dengan membagi masalah menjadi beberapa modul maka masalah tersebut akan menjadi lebih sederhana sehingga program dapat menjadi lebih mudah disusun dan dipahami.
Masalah :
- Program yang besar atau kode programnya panjang, sulit dibaca.
- Pencarian error atau kesalahan juga akan sulit jika programnya panjang.
Solusi :
- Program sebaiknya dipecah menjadi beberapa sub-program.
- Setiap sub-program melakukan komputasi atau tugas yang spesifik.
Sub-Program
Sub program adalah sebuah program yang independen dari program utama. Perancangannya tanpa mempertimbangkan program yang memanggil sub-program tersebut. Sub-program tidak memikirkan bagaimana ia dipanggil, tetapi fokus pada apa yang ia lakukan. Teknik pembagian program menjadi beberapa sub-program disebut dengan pemrograman modular. Sub-program sering dikenal sebagai modul, fungsi, atau prosedur.
Pemrograman modular terdiri dari:
- Fungsi -> sub-program yang melakukan tugas spesifik lalu mengembalikan nilai.
- Prosedur -> sub-program yang melakukan tugas spesifik tanpa mengembalikan nilai.
Contoh Program Tidak Modular
#include <iostream>
using namespace std;
int main () {
// variabel
int a, b, temp;
// proses membaca
cout << "Masukkan nilai A : ";
cin >> a;
cout << "Masukkan nilai b : ";
cin >> b;
//proses tukar
temp = b;
b = a;
a = temp;
//proses tampil
cout << "=========================" << endl;
cout << "Nilai A sekarang : " << a << endl;
cout << "Nilai B sekarang : " << b;
return 0;
}
Contoh Program Modular
#include <iostream>
using namespace std;
//prototype
void prosesBaca();
void prosesTukar();
void prosesTampil();
// variabel global
int a, b, temp;
//program utama
int main () {
prosesBaca();
prosesTukar();
prosesTampil();
return 0;
}
// proses membaca
void prosesBaca () {
cout << "Masukkan nilai A : ";
cin >> a;
cout << "Masukkan nilai b : ";
cin >> b;
}
//proses tukar
void prosesTukar () {
temp = b;
b = a;
a = temp;
}
//proses tampil
void prosesTampil () {
cout << "=========================" << endl;
cout << "Nilai A sekarang : " << a << endl;
cout << "Nilai B sekarang : " << b;
}
Fungsi
Pemrograman modular merupakan metode pemakaian yang sangat mudah digunakan untuk bahasa C/C++. Pemrograman modular maksudnya adalah membagi program ke dalam modul-modul yang lebih kecil lagi dan saling berkaitan antara yang satu dengan yang lainnya. Sehingga dapat menghindari penulisan teks program yang sama berkali-kali dan juga memudahkan dalam melakukan pelacakan kesalahan dalam program yang sedang kita buat. Modul pada bahasa C++ dikenal dengan nama fungsi (function), Bahasa C terdiri dari fungsi-fungsi, baik yang langsung dideklarasikan dalam program ataupun dipisah di dalam header file. Fungsi yang selalu ada pada program C++ adalah fungsi “main”.
Keuntungan Menggunakan Fungsi
- Untuk mengurangi pengulangan penulisan program yang sama.
- Agar program menjadi lebih terstruktur sehingga mudah dipahami dan lebih mudah untuk dikembangkan.
- Menguraikan tugas pemrograman rumit menjadi langkah-langkah yang lebih sederhana atau kecil.
- Memecah program besar menjadi kecil sehingga dapat dikerjakan oleh programmer-programmer atau dipecah menjadi beberapa tahap sehingga mempermudah pengerjaan dalam sebuah projek.
- Menyembunyikan informasi dari user sehingga mencegah adanya perbuatan iseng seperti memodifikasi atau mengubah program yang kita buat.
- Meningkatkan kemampuan pelacakan kesalahan, jika terjadi suatu kesalahan kita tinggal mencari fungsi yang bersangkutan saja dan tak perlu mencari kesalahan tersebut di seluruh program.
- Dapat melakukan pendekatan top-down, Program besar dapat dipisah menjadi program-program kecil.
- Dapat dikerjakan oleh beberapa orang sehingga koordinasi mudah.
- Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
- Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan.
- Mempermudah dokumentasi.
- Reusability: Suatu modul dapat digunakan kembali oleh program atau modul lain.
Pembagian Sebuah Jenis Fungsi
1. Standard Library Function
Standard Library Function adalah fungsi-fungsi yang telah disediakan oleh C dalam file-file header atau librarynya. Misalnya: clrscr(), getch(). Untuk function ini kita harus mendeklarasikan terlebih dahulu library yang akan digunakan, yaitu dengan menggunakan preprosesor direktif. Misalnya: #include <conio.h>.
2. Programmer-Defined Function
Adalah function yang dibuat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-includekan jika ingin menggunakannya.
Rancangan Pembuatan Fungsi
Ada beberapa hal yang harus di ketahui untuk penulisan sebuah fungsi :
1. Data yang diperlukan sebagai inputan
2. Informasi apa yang harus diberikan oleh fungsi yang dibuat ke pemanggilnya
3. Algoritma apa yang harus digunakan untuk mengolah data menjadi informasi
Selain itu ada 2 jenis tipe penulisan fungsi :
1. Penulisan fungsi di luar fungsi main()
Bagian dari program yang menggunakan fungsi terletak setelah definisi dari fungsi, maka deklarasi dari fungsi dapat tidak dituliskan.
Contoh :

Di atas dapat dilihat fungsi dilakukan diluar fungsi main (), jadi tidak harus mendeklarasikan fungsi terlebih dahulu.
2. Penulisan fungsi di dalam fungsi main()
Bagian dari program yang menggunakan fungsi diletakkan sebelum definisi dari fungsi, maka deklarasi dari fungsi diperlukan.
Contoh :

Dari contoh diatas dapat disimpulkan bahwa jika penulisan fungsi didalam fungsi main () maka deklarasi fungsi diperlukan.
Jenis Fungsi Programmer-Defined Function di C++
1. Fungsi yang tidak mengembalikan nilai (void)
2. Fungsi yang mengembalikan nilai (nonvoid)
Fungsi void
Fungsi yang void sering disebut juga prosedur, Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut.
Ciri-ciri :
– tidak adanya keyword return.
– tidak adanya tipe data di dalam deklarasi fungsi.
– menggunakan keyword void.
Tidak dapat langsung ditampilkan hasilnya, Tidak memiliki nilai kembalian fungsi, Keyword void juga digunakan jika suatu function tidak mengandung suatu parameter apapun.
Contoh penulisan seperti program pada bab sebelumnya.
Fungsi non-void
Fungsi non-void disebut juga function, Disebut non-void karena mengembalikan nilai kembalian yang berasal dari keluaran hasil proses function tersebut
Ciri-ciri :
– ada keyword return
– ada tipe data yang mengawali deklarasi fungsi
– tidak ada keyword void
– Memiliki nilai kembalian
Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data tertentu sehingga dapat langsung ditampilkan hasilnya.
Contoh program :

Pemanggilan Fungsi
Pada dasarnya fungsi dapat memanggil fungsi lain, bahkan fungsi dapat memanggil dirinya sendiri (rekursif), Untuk lebih detailnya rekursif adalah suatu proses atau prosedur dari fungsi yang memanggil dirinya sendiri secara berulang-ulang. Karena proses dalam Rekursif ini terjadi secara berulang-ulang maka harus ada kondisi yang membatasi pengulangan persebut, jika tidak maka proses tidak akan pernah berhenti sampai memori yang digunakan untuk menampung proses tersebut tidak dapat menampung lagi (Penuh).
Prosedur
Dalam Pemrograman, prosedur adalah sub-program yang mengerjakan task tertentu. Prosedur berisi instruksi-instruksi yang dikerjakan satu per satu. Setiap baris program dieksekusi oleh komputer satu per satu sesuai dengan urutan baris program. Prosedur bukan seperti program utama yang bisa langsung dijalankan oleh komputer. Diperlukan pemanggil untuk menjalankan prosedur, dalam hal ini pemanggil adalah program utama.
Prosedur didefinisikan dengan nama prosedur. Setiap prosedur harus memiliki nama prosedur. Di dalamnya terdapat variabel-variabel atau konstanta yang digunakan dan juga serangkaian aksi yang dilakukan prosedur tersebut. Pendefinisian prosedur di C++ diawali dengan keyword “void”, dilanjutkan dengan nama Prosedur() { isiprosedur }.
Contoh Pendefinisian Prosedur di C++
void prosesBaca() {
cout<< "MasukkannilaiA : ";
cin>> a;
cout<< "Masukkannilaib : ";
cin>> b;
}
Pemanggilan Prosedur
Prosedur dapat berjalan jika prosedur tersebut diakses. Akses prosedur dilakukan dengan memanggil nama prosedur dari program utama. Ketika prosedur dipanggil, program akan berpindah ke prosedur dan melaksanakan semua aksi yang ada di dalam prosedur. Setelah prosedur selesai dilaksanakan, program akan kembali ke program utama.
Prototype Prosedur
Agar prosedur dapat dikenali oleh program pemanggil, misalnya program utama, maka prosedur tersebut harus memberitahu dengan cara membuat prototype dari prosedur tersebut. Prototype hanya berisi header prosedur (void namaprosedur()). Prototype prosedur dituliskan sebelum program pemanggil.
Contoh Prosedur dan Program Utama
//prototype
void prosesBaca();
//program utama
intmain () {
prosesBaca();
return 0;
}
// proses membaca
void prosesBaca() {
cout<< "MasukkannilaiA : ";
cin>> a;
cout<< "Masukkannilaib : ";
cin>> b;
}
Prosedur yang Independen
Sebaiknya, pembuatan prosedur tidak tergantung pada program pemanggilnya. Saat membuat prosedur, yang perlu dipikirkan adalah bukan bagaimana prosedur akan dipanggil, tetapi apa yang akan dilakukan prosedur. Disarankan untuk menggunakan variabel lokal pada prosedur. Penggunaan variabel lokal akan membuat prosedur tidak bergantung kepada variabel global yang dimungkinkan berubah karena program lain.