Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000...

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:

Transcript of Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000...

Page 1: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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:

Page 2: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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 bil_2 bil_3

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

bil_1 bil_2 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.

Page 3: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 4: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

Keuntungan menggunakan modul

Rancangan Top-down dengan teknik sub goal, program besar dapat dibagi

menjadi modul-modul yang lebih kecil.

Dapat dikerjakan oleh lebih dari satu orang dengan koordinasi yang relatif mudah.

Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan

kesalahan dapat dilokalisir dalam suatu modul.

Modifikasi dapat dilakukan, tanpa mengganggu program secara keseluruhan.

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.

Page 5: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

Komunikasi Antar Modul

Data Variabel, Konstanta dan Literal

Elementary Data

Integer

Real

Character

Boolean

Struktur Data

Rekor

File

Array

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

Page 6: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 7: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 8: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 9: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 10: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 11: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

Kopling

Kopling adalah ukuran bagi keeratan hubungan antar modul

Kopling menyatakan tingkat saling ketergantungan diantara dua modul

Tujuan:

Merancang modul yang baik dengan ukuran kopling

Faktor yang mempengaruhi kopling:

Jumlah data yang disalurkan

Jumlah kontrol data yang disalurkan

Jumlah elemen data global yang digunakan bersama – sama oleh beberapa

modul

Macam – macam kopling

Data

Stamp

Kontrol

Eksternal

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

Page 12: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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)

Page 13: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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)

Page 14: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 15: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 16: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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

Page 17: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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:

Member Function

Fungsi yang merupakan bagian dari class.

Sebutan lain member function:

Method (apabila sudah dibuat objeknya)

Fungsi anggota

Data Member

Variable berada di dalam class.

Sebutan lain member function:

Properties

Anggota data

Page 18: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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;

Page 19: Pemrograman Terstruktur (2nd Suplement) · PDF fileMenghitung_pajak_penjualan IF harga>5000 THEN pajak = harga * 0.25 ELSE IF harga>4000 THEN pajak = harga * 0.25 ELSE IF harga>3000

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 }