0% menganggap dokumen ini bermanfaat (0 suara)
516 tayangan11 halaman

Modul - Pertemuan 10

Teks tersebut membahas konsep pemrograman modular dalam bahasa C++. Pemrograman modular adalah teknik pemrograman yang memecah program besar menjadi modul-modul lebih kecil untuk memudahkan pemahaman dan penggunaan kembali kode. Teks tersebut juga membahas konsep divide and conquer serta kopling dan kohesivitas dalam pemrograman modular.

Diunggah oleh

Muhammad Husen
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
516 tayangan11 halaman

Modul - Pertemuan 10

Teks tersebut membahas konsep pemrograman modular dalam bahasa C++. Pemrograman modular adalah teknik pemrograman yang memecah program besar menjadi modul-modul lebih kecil untuk memudahkan pemahaman dan penggunaan kembali kode. Teks tersebut juga membahas konsep divide and conquer serta kopling dan kohesivitas dalam pemrograman modular.

Diunggah oleh

Muhammad Husen
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 11

BAB X

PEMROGRAMAN MODULAR

Kegiatan Belajar 10 : Konsep Pemrograman Modular dalam C++


a. Tujuan
Setelah mempelajari konsep pemrograman modular dalam C++, diharapkan
mahasiswa dapat:
1. Menjelaskan konsep pemrograman modular dalam Bahasa C++
2. Membedakan konsep pemrograman modular dalam bahasa C++
3. Mengimplementasikan penggunakan pemrograman modular dalam program
sederhana dalam bahasa pemrograman C++

b. Uraian Materi

1. Konsep Pemrograman Modular


Pemrograman Modular adalah suatu teknik pemrograman di mana program
yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian program yang
lebih kecil sehingga akan mudah dipahami dan dapat digunakan kembali, baik
untuk program itu sendiri maupun program lain yang memiliki proses yang
sama.

Gambar 10.1 Konsep pemrograman Modular

Pemrograman modular menggunakan perancangan program


menyerdehanakan persoalan didalam program dengan memecah atau membagi
persoalan tersebut menjadi sub-sub persoalan yang lebih kecil agar mudah
diselesaikan. Secara umum dikenal dua cara yang dapat digunakan untuk

1
memecahkan persoalan dalam modul-modul, yaitu dengan menggunakan
struktur fungsi dan prosedur.
Poin-poin penting dalam pemrograman modular:

a) Program dalam C++ dibagai menjadi beberapa bagian modul.


b) Modul pada bahasa C++ dikenal dengan nama fungsi (function).

c) Bahasa C terdiri dari fungsi-fungsi, baik yang langsung dideklarasikan


dalam program ataupun dipisah di dalam header file.

d) Fungsi yang selalu ada dalam C++ adalah fungsi main.

e) Fungsi dibentuk untuk menyelesaikan tugas tertentu.

f) Modul diperlukan jika perintah/coding tersebut diperlukan di tempat lain


dalam program

g) Modul sering disebut sub-program

Adapun keunggulan dari pemrograman modular yaitu:

a) Program lebih pendek, singkat dan padat.


b) Program menjadi lebih mudah dibaca dan dimengerti.

c) Masalah yang kompleks dapat dijadikan masalah yang lebih sederhana.

d) Mencari kesalahan lebih mudah karena alur logika lebih jelas.

e) Kesalahan yang terjadi bersifat local.

f) Modifikasi dapat dilakukan tanpa mengganggu program secara


keseluruhan.

2. Konsep Divide and Conquer


Algoritma Divide and Conquer merupakan algoritma yang sangat
populer di dunia Ilmu Komputer. Divide and Conquer merupakan algoritma

2
yang berprinsip memecah-mecah permasalahan yang terlalu besar menjadi
beberapa bagian kecil sehingga lebih mudah untuk diselesaikan. Langkah-
langkah umum algoritma Divide and Conquer:

a) Divide: Membagi masalah menjadi beberapa upa-masalah yang


memiliki kemiripan dengan masalah semula namun berukuran lebih
kecil (idealnya berukuran hampir sama).
b) Conquer: Memecahkan (menyelesaikan) masing-masing masalah
(secara rekursif).

c) Combine: Menggabungkan solusi masing-masing upa-masalah sehingga


membentuk solusi masalah semula.

Objek masalah yang di bagi adalah masukan (input) atau instances yang
berukuran n: tabel (larik), matriks, dan sebagainya, bergantung pada
masalahnya. Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the
same type) dengan karakteristik masalah asal, sehingga metode Divide and
Conquer lebih natural diungkapkan dalam skema rekursif. Sesuai dengan
karakteristik pembagian dan pemecahan masalah tersebut, maka algoritma ini
dapat berjalan baik pada persoalan yang bertipe rekursif (perulangan dengan
memanggil dirinya sendiri). Dengan demikian, algoritma ini dapat
diimplementasikan dengan cara iteratif (perulangan biasa), karena pada
prinsipnya iteratif hampir sama dengan rekursif. Salah satu penggunaan
algoritma ini yang paling populer adalah dalam hal pengolahan data yang
bertipe array (elemen larik). Hal ini terjadi karena pengolahan array pada
umumnya selalu menggunakan prinsip rekursif atau iteratif. Penggunaan secara
spesifik adalah untuk mencari nilai minimal dan maksimal serta untuk
mengurutkan elemen array. Dalam hal pengurutan ini ada empat macam
algoritma pengurutan yang berdasar pada algoritma Divide and Conquer, yaitu
merge sort, insert sort, quick sort, dan selection sort. Merge sort dan Quick sort
mempunyai kompleksitas algoritma O (n² log n). Hal ini lebih baik jika
dibandingkan dengan pengurutan biasa dengan menggunakan algoritma brute
force.

3
Skema umum algoritma divide and conquer:

3. Konsep Kopling dan kohesivitas


Kopling dan kohesi adalah dua konsep yang ditemukan di bahasa Java
(dan semua bahasa berorientasi objek lainnya). Coupling mengukur seberapa
besar masing-masing modul program bergantung pada modul program lainnya.
Kohesi mengukur seberapa kuat masing-masing fungsi terkait dalam suatu
modul. Sebenarnya, bahasa berorientasi objek apa pun (termasuk Jawa)
memiliki dua tujuan utama untuk meningkatkan keterpaduan dan mengurangi
sambungan pada saat yang sama, untuk mengembangkan program yang paling
efisien. Kedua metrik rekayasa perangkat lunak ini dikembangkan oleh Larry
Constantine untuk mengurangi biaya modifikasi dan pemeliharaan perangkat
lunak.

4
Kohesi mengukur seberapa kuat masing-masing fungsi terkait dalam
modul program. Kelas yang terstruktur dengan baik menyebabkan program
yang sangat kohesif. Jika kelas tertentu melakukan serangkaian fungsi yang
sangat terkait, kelas itu dikatakan kohesif. Di sisi lain, jika suatu kelas
melakukan banyak fungsi yang sama sekali tidak terkait itu berarti kelas
tersebut tidak kohesif sama sekali. Penting untuk dipahami bahwa tidak
memiliki keterpaduan tidak berarti bahwa keseluruhan aplikasi tidak memiliki
fungsionalitas yang diperlukan. Hanya saja tanpa kohesi, akan sangat sulit
untuk mengatur fungsi karena mereka akan tersebar di banyak tempat yang
salah karena kompleksitas aplikasi meningkat dari waktu ke waktu.
Mempertahankan, memodifikasi dan memperluas perilaku yang tersebar di
seluruh kode sangat membosankan bahkan untuk programmer yang paling
berpengalaman sekalipun.
Coupling mengukur seberapa besar masing-masing modul program
bergantung pada modul program lainnya. Interaksi antara dua objek terjadi
karena ada kopling. Program yang digabungkan secara longgar memiliki
fleksibilitas dan ekstensibilitas yang tinggi. Kopling yang kuat tidak pernah
baik karena satu objek dapat sangat bergantung pada beberapa objek lainnya.
Ini adalah mimpi buruk ketika kode dimodifikasi, karena kopling tinggi berarti
bahwa programmer perlu bekerja di beberapa tempat kode bahkan untuk
modifikasi perilaku tunggal. Kopling yang kuat selalu mengarah ke program
dengan fleksibilitas rendah dan skalabilitas / ekstensibilitas yang lebih rendah.
Namun, dalam bahasa pemrograman seperti Java, sepenuhnya menghindari
kopling tidak mungkin. Tetapi disarankan agar programmer memberikan upaya
terbaik untuk mengurangi kopling sebanyak mungkin. Dimungkinkan juga
untuk memiliki beberapa sambungan untuk membantu objek berinteraksi satu
sama lain tanpa menghambat skalabilitas dan fleksibilitasnya.
Meskipun kopling dan kohesi berhubungan dengan kualitas modul dalam
rekayasa perangkat lunak, mereka sepenuhnya merupakan konsep yang
berbeda. Kohesi berbicara tentang seberapa banyak fungsionalitas terkait satu
sama lain dalam modul, sementara penggabungan berkaitan dengan seberapa
banyak satu modul tergantung pada modul program lain dalam keseluruhan

5
aplikasi. Untuk memiliki perangkat lunak dengan kualitas terbaik, kohesi dan
penggandengan harus mencapai dua ujung yang berlawanan dari spektrum
mereka. Dengan kata lain, kopling longgar dan kohesi yang kuat menyediakan
perangkat lunak terbaik. Memiliki bidang pribadi, kelas non-publik, dan metode
pribadi memberikan kopling yang longgar, sementara membuat semua anggota
terlihat di dalam kelas dan memiliki paket sebagai visibilitas default
memberikan kohesi yang tinggi.

4. Fungsi
Fungsi (function) merupakan blok kode yang dirancang untuk melakukan
tugas tertentu atau satu blok intruksi atau subprogram kecil yang dieksekusi
ketika dipanggil dari bagian lain dalam suatu program atau di sebut juga dengan
modular programming.
a) Kegunaan fungsi

1) Untuk mengurangi pengulangan penulisan program yang sama.


2) Agar program menjadi lebih terstruktur sehingga mudah dipahami dan
lebih mudah untuk dikembangkan.

3) Menguraikan tugas pemrograman rumit menjadi langkah-langkah yang


lebih sederhana atau kecil.

4) Memecah program besar menjadi kecil sehingga dapat dikerjakan oleh


programmer-programmer atau dipecah menjadi beberapa tahap sehingga
mempermudah pengerjaan dalam sebuah projek.

5) Menyembunyikan informasi dari user sehingga mencegah adanya


perbuatan iseng seperti memodifikasi atau mengubah program yang kita
buat.

6) Meningkatkan kemampuan pelacakan kesalahan, jika terjadi suatu


kesalahan kita tinggal mencari fungsi yang bersangkutan saja dan tak
perlu mencari kesalahan tersebut di seluruh program.

b) Keunggulan Fungsi

6
1) Dapat melakukan pendekatan top-down dan divide-and conquer:
2) Top-down: penelusuran program mudah

3) Divide-and-conquer: program besar dapat dipisah menjadi program-


program kecil.

4) Kode program menjadi lebih pendek, mudah dibaca, dan mudah


dipahami

5) Program dapat dikerjakan oleh beberapa orang sehingga program cepat


selesai dengan koordinasi yang mudah.

6) Mudah dalam mencari kesalahan-kesalahan karena alur logika jelas dan


sederhana

7) Kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.

8) Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa
mengganggu program keseluruhan

9) Fungsi – fungsi menjadikan program mempunyai struktur yang jelas.

10) Dengan memisahkan langkah – langkah detail ke satu atau lebih fungsi –
fungsi, maka fungsi utama (main) akan menjadi lebih pendek, jelas dan
mudah dimengerti.

11) Fungsi –fungsi digunakan untuk menghindari penulisan program yang


sama yang ditulis secara berulang – ulang.

12) Langkah – langkah tersebut dapat dituliskan sekali saja secara terpisah
dalam bentuk fungsi. Selanjutnya bagian program yang membutuhkan
langkah – langkah ini tidak perlu selalu menuliskannya, cukup
memanggil fungsi tersebut.

13) Mempermudah dokumentasi.

7
14) Reusability: Suatu fungsi dapat digunakan kembali oleh program atau
fungsi lain

c) Jenis Fungsi

1) Standard Library Function Yaitu 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.

d) Pendeklarasian Fungsi
Adapun cara mendeklerasikan fungsi adalah sebagai berikut:

8
Gambar 10.2 cara mendeklarasikan Fungsi dalam C++

e) Jenis Fungsi Programmer-Defined dalam C++


Terdapat dua jenis fungsi yang didefinsikan oleh programmer
yaitu fungsi yang tidak mengembalikan nilai (void)dan fungsi yang
mengembalikan nilai (nonvoid).

#include<iostream>
1) Fungsi
usingVoid
namespace std;

void garis();
voidFungsi yang void
inputdata(); sering disebut juga prosedur. Fungsi ini
void hitbayar();
dinamakan void karena fungsi tersebut tidak mengembalikan suatu
main(){
nilai keluaran yang didapat dari hasil proses fungsi tersebut. Pada
cout<<"Program Hitung Harga bayar"<<endl;
garis();
penggunaannya juga pada akhir program tidak dapat langsung
inputdata();
ditampilkan hasilnya. Fungsi ini tidak memiliki nilai kembalian
hitbayar();
garis();
fungsi.
} Penulisan keyword void juga digunakan jika suatu function
tidak mengandung
void garis(){ suatu parameter apapun. Adapun ciri-ciri dari
fungsi voidcout<<"\n===================================\n";
yaitu:
}
[1]void
tidakinputdata(){
adanya keyword return.
stringtipe
[2] tidak adanya nama_barang;
data di dalam deklarasi fungsi.
cout<<"masukkan nama barang: ";
cin>>nama_barang;
[3]} menggunakan keyword void.
void hitbayar(){
Contoh: int bayar, harga, jumlah;
cout<<"masukkan harga barang: ";
cin>>harga;
cout<<"masukkan jumlah barang: ";
cin>>jumlah; 9
bayar=harga*jumlah;
cout<<"total Bayar nya adalah "<<bayar;

}
2) Fungsi Non-void

Fungsi non-void disebut juga function biasa. Fungsi ini disebut


non-void karena mengembalikan nilai kembalian yang berasal dari
keluaran hasil proses function tersebut. Fungsi ini memiliki nilai
kembalian. Dapat dianalogikan sebagai suatu variabel yang memiliki
tipe data tertentu sehingga dapat langsung ditampilkan hasilnya.
Adapun ciri-ciri dari fungsi non-void yaitu:

[1] ada keyword return


[2] ada tipe data yang mengawali deklarasi fungsi

[3] tidak ada keyword void

Contoh:
#include<iostream>
using
[4] namespace std;

int ujinilai(){
[5] return (8/2);
}

main(){
cout<<"Nilai yang ada dalam fungsi adalah ";
cout<<ujinilai();
}

10
c. Rangkuman
a. Pemrograman Modular adalah suatu teknik pemrograman di mana program
yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian program;
b. Modul pada bahasa C++ dikenal dengan nama fungsi (function).
c. Modul sering disebut sub-program
d. Divide and Conquer merupakan algoritma yang berprinsip memecah-mecah
permasalahan yang terlalu besar menjadi beberapa bagian kecil
e. Coupling mengukur seberapa besar masing-masing modul program
bergantung pada modul program lainnya.
f. Kohesi mengukur seberapa kuat masing-masing fungsi terkait dalam suatu
modul
g. Terdapat dua macam defined-function yaitu fungsi void dan fungsi non-void

d. Latihan/Tugas
Buatlah ringkasan berbentuk makalah tentang Perbedaan dan konsep
Pemrograman Modular, Pemrograman Berorientasi Objek, dan
Pemrograman Terstruktur beserta contohnya.

11

Anda mungkin juga menyukai