Modul - Pertemuan 10
Modul - Pertemuan 10
PEMROGRAMAN MODULAR
b. Uraian Materi
1
memecahkan persoalan dalam modul-modul, yaitu dengan menggunakan
struktur fungsi dan prosedur.
Poin-poin penting dalam pemrograman modular:
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:
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:
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
b) Keunggulan Fungsi
6
1) Dapat melakukan pendekatan top-down dan divide-and conquer:
2) Top-down: penelusuran program mudah
8) Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa
mengganggu program keseluruhan
10) Dengan memisahkan langkah – langkah detail ke satu atau lebih fungsi –
fungsi, maka fungsi utama (main) akan menjadi lebih pendek, jelas dan
mudah dimengerti.
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.
7
14) Reusability: Suatu fungsi dapat digunakan kembali oleh program atau
fungsi lain
c) Jenis Fungsi
d) Pendeklarasian Fungsi
Adapun cara mendeklerasikan fungsi adalah sebagai berikut:
8
Gambar 10.2 cara mendeklarasikan Fungsi dalam C++
#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
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