Anda di halaman 1dari 19

Pemrograman Terstruktur (2nd Suplement)

Modular Programming

Ciri – ciri Modular Programming


„ Memecahkan algoritma ke dalam algoritma yang lebih kecil (modul)
„ Modul yang dibentuk memiliki kesatuan tugas/fungsi maupun kesatuan
proses/prosedur
„ Setiap modul harus mempunyai single entry dan single exit secara beruntun, dari
atas ke bawah atau dari awal ke akhir
„ Memiliki main program dan sub program (modul)
„ Biasanya digambarkan dengan stuctured chart

Atribut dasar modul


„ Masukkan: apa yang diterima dari “pemanggil”.
Keluaran: apa yang dikembalikan ke “pemanggil”.
„ Fungsi: apa yang dilakukan terhadap masukkan untuk menghasilkan keluaran.
„ Mekanisme: bagaimana melakukan fungsinya.
„ Data internal: bagaimana ia mengacu kepada data miliknya sendiri.

Contoh modular programming dalam structured chart:


Implementasi Modul

„ Rancanglah algoritma untuk membaca tiga bilangan, kemudian susun bilangan


tersebut dan cetak ketiga bilangan tersebut ke layar.
Jawab:

A. Diagram Definisi.

Input Proses Output


bil_1 Baca bil_1, bil_2, bil_3 bil_1
bil_2 Sort bil_1, bil_2, bil_3 bil_2
bil_3 Cetak bil_1, bil_2, bil_3 bil_3

B. Algoritma Pemecahan

Baca tiga bilangan


Baca bil_1, bil_2, bil_3
DO While NOT (bil_1 = 0 AND bil_2 = 0 AND bil_3 = 0)
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
IF bil_2 > bil_3 THEN
temp = bil_2
bil_2 = bil_3
bil_3 = temp
ENDIF
IF bil_1 > bil_3 THEN
temp = bil_1
bil_1 = bil_3
bil_3 = temp
ENDIF
Cetak bil_1, bil_2, bil_3
Baca bil_1, bil_2, bil_3
ENDDO
END.
C. Structured chart program mengurutkan tiga bilangan

D. Hasil Modularisasi

Baca tiga bilangan


Baca bil_1, bil_2, bil_3
DO While NOT (bil_1 = 0 AND bil_2 = 0 AND bil_3 = 0)
sort_tiga_bilangan
Cetak bil_1, bil_2, bil_3
Baca bil_1, bil_2, bil_3
ENDDO
END

sort_tiga_bilangan
IF bil_1 > bil_2 THEN
temp = bil_1
bil_1 = bil_2
bil_2 = temp
ENDIF
IF bil_2 > bil_3 THEN
temp = bil_2
bil_2 = bil_3
bil_3 = temp
ENDIF
IF bil_1 > bil_3 THEN
temp = bil_1
bil_1 = bil_3
bil_3 = temp
ENDIF
END
Keuntungan menggunakan modul

z Rancangan Top-down dengan teknik sub goal, program besar dapat dibagi
menjadi modul-modul yang lebih kecil.
z Dapat dikerjakan oleh lebih dari satu orang dengan koordinasi yang relatif mudah.
z Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan
kesalahan dapat dilokalisir dalam suatu modul.
z Modifikasi dapat dilakukan, tanpa mengganggu program secara keseluruhan.
z Mempermudah dokumentasi.

Enam langkah modular programming


1. Definisi Masalah
Klasifikasikan dalam input, proses dan output.
1. Kelompokkan aktivitas ke dalam modul
Definisikan kegiatan dari modul-modul yang ada.
3. Buat Bagan Susun untuk menjelaskan Hierarchi dan hubungan antar modul
4. Buat logika dari Main Program dengan pseudocode. Terlebih dahulu inventarisasi apa
saja yang dikerjakan dalam main program.
5. Buat logika untuk tiap-tiap modul dengan pseudocode.
6. Desk Checking-algoritma.
Komunikasi Antar Modul
Data
„ Variabel, Konstanta dan Literal
„ Elementary Data
z Integer
z Real
z Character
z Boolean
„ Struktur Data
z Rekor
z File
z Array
z String

Jangkauan Data
„ Global Data (Data Global)
Berlaku di semua modul yang ada pada program
„ Local Data (Data Lokal)
Hanya berlaku di modul tempat data tersebut dideklarasikan

Side Effect (efek samping)


„ Global Data (Data Global)
Perubahan nilai global data berdampak terhadap nilai data tersebut di semua modul
„ Local Data (Data Lokal)
Perubahan nilai local data hanya berdampak terhadap nilai data pada modul secara
lokal
Parameter
Parameter
„ Parameter Data

„ Parameter Status

Dalam merancang modul sebaiknya lebih banyak menggunakan parameter data.


Hindari menggunakan parameter status sebanyak mungkin.

Passing Parameter
„ Menyampaikan data/informasi dari modul pemanggil (super-ordinate) ke modul
yang dipanggil (sub-ordinate)
„ Menyampaikan data/informasi dari modul sub-ordinate ke modul super-ordinate
„ Data/informasi yang dikirim atau diterima passing dua arah antara super-
ordinate dan sub-ordinate
Kohesi

„ Kohesi sebagai ukuran suatu modul


„ Kohesi: hubungan elemen – elemen di dalam modul
„ Semakin tinggi tingkat kohesi, semakin baik suatu modul

„ Macam – macam kohesi:


1. Functional
2. Sequential
3. Communicational
4. Procedural
5. Temporal
6. Logical
7. Coincidental

„ Perubahan pada modul dengan tingkat kohesi tinggi tidak terlalu membawa dampak
perubahan terhadap modul lain. Sehingga lebih mudah dalam pemrograman,
pengujian dan perawatan
„ Modul dengan tingkat kohesi tinggi, lebih mudah dipahami dan didokumentasi
„ Pada modul dengan tingkat kohesi tinggi, informasi lebih mudah disembunyikan,
karena komunikasi antar modul diminimalkan

Kohesi Functional

„ Modul mempunyai satu tugas atau fungsi


„ Modul menghasilkan satu parameter output (satu hasil)
„ Modul memiliki satu atau lebih parameter input
Contoh kohesi functional:
Menghitung_pajak_penjualan
IF harga>5000 THEN
pajak = harga * 0.25
ELSE
IF harga>4000 THEN
pajak = harga * 0.25
ELSE
IF harga>3000 THEN
pajak = harga * 0.25
ELSE
IF harga>2000 THEN
pajak = harga * 0.25
ELSE
pajak = 0
ENDIF
ENDIF
ENDIF
ENDIF
END

Kohesi Sequential
„ Mempunyai pekerjaan yang beruntun (sekuensial)
„ Kegiatan yang dilakukan lebih dari satu
„ Hasil dari kegiatan sebelumnya menjadi masukan bagi kegiatan selanjutnya
„ Dapat dipecah menjadi functional

Contoh kohesi sequential:


Menghitung_penjualan
IF jml_beli > 300 THEN
pot = jml_beli * hrg_beli * 15%
ELSE
IF jml_beli > 200 THEN
pot = jml_beli * hrg_beli * 10%
ELSE
IF jml_beli > 100 THEN
pot = jml_beli * hrg_beli * 5%
ELSE
pot = 0
ENDIF
ENDIF
ENDIF
Pembelian = jml_beli * hrg_beli – pot
Tot_pembelian = Tot_pembelian + Pembelian
END
Kohesi Communicational
„ Mempunyai lebih dari satu fungsi atau tugas
„ Menggunakan data yang sama
„ Dapat dijadikan functional

Contoh kohesi communicational:


Proses_perhitungan
C = A + B
D = A – B
E = A * B
F = A / B
G = A % B
END

Kohesi Procedural
„ Satu kegiatan dengan kegiatan lain tidak berhubungan
„ Hubungan antara elemen yang satu dengan lainnya karena urutan statement
„ Dapat dipecahkan menjadi Functional

Contoh kohesi procedural:


Membaca_record_siswa_dan_hitung_total_usia_siswa
jml_rec = 0
total_usia = 0
read record_siswa
DO WHILE more record exist
total_usia = total_usia + usia
jml_rec = jml_rec + 1
read record_siswa
ENDDO
Print jml_re, total_usia
END

Kohesi Temporal
„ Elemen – elemen terlibat dalam berbagai kegiatan yang mempunyai hubungan
dalam waktu
„ Urutan tidak penting
Contoh kohesi temporal:
Inisialisasi
Buka File Transaksi
total_transaksi = 0
total_pen = 0
Baris = 0
No = 0
Hal = 0
END

Kohesi Logical
„ Elemen – elemen melakukan kegiatan dengan kategori yang sama (spt; kategori
menghitung jumlah record)
„ Parameter masukan menentukan kegiatan yang dilaksanakan
„ Tidak semua kegiatan dikerjakan
Contoh kohesi logical:
Baca_semua_file(kode_file)
CASE file_code
1: Read cust_transact_rec
IF NOT EOF THEN
increment cust_transact_count
ENDIF
2: Read cust_master_rec
IF NOT EOF THEN
increment cust_master_count
ENDIF
3: Read prod_master_rec
IF NOT EOF THEN
increment prod_master_count
ENDIF
END

Kohesi Coincidental
„ Elemen – elemen tidak mempunyai hubungan
Contoh kohesi coincidental:
File Processing
Open employee updates file
Read employee record
Print page_heading
Open employee master file
jml_hal = 1
error_flag = false
END
Kopling

„ Kopling adalah ukuran bagi keeratan hubungan antar modul


„ Kopling menyatakan tingkat saling ketergantungan diantara dua modul
„ Tujuan:
z Merancang modul yang baik dengan ukuran kopling

„ Faktor yang mempengaruhi kopling:


z Jumlah data yang disalurkan
z Jumlah kontrol data yang disalurkan
z Jumlah elemen data global yang digunakan bersama – sama oleh beberapa
modul
„ Macam – macam kopling
z Data
z Stamp
z Kontrol
z Eksternal
z Common

Kopling Data
„ Komunikasi antara modul menggunakan data
„ Diharapkan jumlah data yang disalurkan seminimal mungkin
„ Parameter data yang disalurkan semakin sedikit semakin baik

Gambar Structured chart dengan kopling data:

Keterangan:
„ Parameternya terdiri dari data
„ Jumlah parameter minimal
Contoh algoritma kopling data:
Proses_record_pelanggan
…..
Hitung_pajak_penjualan(harga_total,Pajak)
…..
…..
END

Hitung_pajak_penjualan(harga_total,Pajak)
IF harga_total>5000 THEN
pajak = harga * 0.25
ELSE
IF harga_total>4000 THEN
pajak = harga * 0.25
ELSE
IF harga_total>3000 THEN
pajak = harga * 0.25
ELSE
IF harga_total>2000 THEN
pajak = harga * 0.25
ELSE
pajak = 0
ENDIF
ENDIF
ENDIF
ENDIF
END
Keterangan:
• harga_total Æ parameter masukan
• pajak Æ parameter keluaran

Kopling Stamp
„ Dua modul melakukan pass struktur data non global yang sama.
„ Struktur Data: record, array
„ Timbul bahaya jika modul memeriksa struktur data tetapi hanya menggunakan
sebagian

Gambar Structured chart dengan kopling stamp:

Keterangan:
„ Parameternya struktur data
(Record atau Array)
Contoh algoritma kopling stamp:
Proses_record_transaksi
…..
Proses_siswa_pria(current_record)
…..
END

Proses_siswa_pria(current_record)
jml_siswa_pria = jml_siswa_pria + 1
IF usia_siswa >21 THEN
jml_siswa_dewasa = jml_siswa_dewasa + 1
ENDIF
…..
…..
END

Keterangan:
• current_record hanya berupa penunjuk nomor record sekarang

Kopling Control
„ Komunikasi antara modul menggunakan parameter status / data kontrol
„ Dua Modul Melakukan pass menggunakan parameter status (data kontrol / flag /
switch)

Gambar Structured chart dengan kopling control:

Keterangan:
„ Parameternya kontrol (flag /
switch)
Contoh algoritma kopling control:
Proses_input_code
Read input_code
Lakukan_aksi(input_code)
…..
…..
END

Lakukan_aksi(input_code)
CASE of Input_code
1: Read record_karyawan
2: Cetak_header_halaman
3: Open master_file_Karyawan
4: jml_halaman = 0
5: error_message
ENDCASE
END
Keterangan:
• input_code berfungsi sebagai switch (berupa switch)

Kopling External
„ Dua modul atau lebih menggunakan data global yang sama
„ Tidak ada parameter yang digunakan dari modul pemanggil ke sub-ordinate dan
sebaliknya

Gambar Structured chart dengan kopling external:

Keterangan:
„ Tidak ada parameter
Contoh algoritma kopling external:
Hitung_pajak_Penjualan
IF produk = “sampel” THEN
pajak_pen = 0
ELSE
IF harga_produk<50000 THEN
pajak_pen = hrg_jual * 0.25
…..
…..
ENDIF
ENDIF
END

Hitung_nilai_total()
…..
…..
total = nilai_total + pajak_pen
…..
…..
END
Keterangan:
• pajak_pen adalah variabel data global

Kopling Common
„ Dua modul atau lebih menggunakan struktur data global yang sama
„ Tidak ada parameter yang digunakan dari modul pemanggil ke sub-ordinate dan
sebaliknya

Gambar Structured chart dengan kopling common:

Keterangan:
„ Tidak ada parameter
Contoh algoritma kopling common:
Baca_record_pelanggan
Read record_pelanggan
IF EOF THEN
EOF_flag = true
ENDIF
END

Validasi_record_pelanggan()
IF noPelanggan NOT numeris THEN
error_msg = “invalid nomor pelanggan
Print_laporan_error
ENDIF
…..
…..
END
Keterangan:
• Record_pelanggan adalah struktur data global
OBJECT ORIENTED PROGRAMMING

„ OOPÆObject Oriented Programming


„ OOPÆMerupakan suatu teknik pemrograman yang berorientasi objek
„ OOPÆpemrograman yang berorientasi bahwa setiap modul program di anggap
sebagai suatu objek yang memiliki fungsi dan data sendiri.

Encapsulated, Inheritance & Polymorphisme


„ 3 hal yang harus dipahami pada OOP:
¾ Encapsulated Æ menyembunyikan kerja kode
¾ Inheritance Æ kemampuan untuk meminjam sebagian kode untuk digunakan
kembali
¾ Polymorphisme Æ kemampuan untuk meminta objek yang berbeda untuk
melaksanakan tugas yang sama.

class
„ Class merupakan blue print dari suatu objek dalam OOP
„ Dengan membuat class berarti kita membuat kerangka dasar atau cetakan yang
nantinya dapat digunakan untuk membuat sejumlah objek.
„ Class umumnya memiliki:
z Member Function
Fungsi yang merupakan bagian dari class.
Sebutan lain member function:
¾ Method (apabila sudah dibuat objeknya)
¾ Fungsi anggota
z Data Member
Variable berada di dalam class.
Sebutan lain member function:
¾ Properties
¾ Anggota data
Deklarasi class pada C++ :
„ Syntax

class namaclass
{
public:
void memberFunction1();
void memberFunction1();
char dataMember1;
int dataMember2;
namaclass();
~namaclass();
};

Membuat Member Function pada C++ :


„ Syntax
TypeFunction namaClass::MemberFunction1()
{
-
-
}

„ Contoh
void contact::tambahKontak()
{
cout << "Nama : ";
cin.getline(name,40);
cout << "Telp : ";
cin.getline(phoneNo,7);
cout << "Usia : ";
cin >> age;
cin >> age;
}

Deklarasi Object :
„ Syntax:
namaclass namaobjek;

„ Syntax menggunakan memberfunction melalui object :


Namaobjek.namamethod;
Contoh:
void main()
{
contact kontak; // deklarasi objek kontak
kontak.tambahKontak(); //memanggil method pada objek kontak
kontak.lihatKontak(); //memanggil method pada objek kontak
}

Contoh OOP:
#include <iostream.h>
class contact {
public: //menyatakan anggota berikut bersifat public
void lihatKontak(); //deklarasi member function lihatKontak()
void tambahKontak(); //deklarasi member function tambahKontak()
char phoneNo[7]; //deklarasi data member phoneNo type char
int age; //deklarasi data member age type int
char name[50]; //deklarasi data member name type char
contact(); //deklarasi constructor
virtual ~contact(); //deklarasi destructor

};
contact::contact() {
cout<<”Welcome to contact class”<<endl<<endl;
}
contact::~contact() {
cout<<”Thanks for using contact class”<<endl;
}
void contact::tambahKontak() //member function tambahKontak() {
cout << "Nama : ";
cin.getline(name,40);
cout << "Telp : ";
cin.getline(phoneNo,7);
cout << "Usia : ";
cin >> age;
cin >> age;
}
void contact::lihatKontak() // member function lihatKontak() {
cout << endl;
cout << "Nama : " << name << endl;
cout << "Usia : " << age << endl;
cout << "Telp : " << phoneNo << endl;
cout << endl;
}
void main() //main program
{
contact kontak; //deklarasi objek kontak berdasarkan class
contact
kontak.tambahKontak(); //memanggil method pada objek kontak
kontak.lihatKontak(); //memanggil method pada objek kontak
}

Anda mungkin juga menyukai