PEMROGRAMAN MODULAR
•adalah suatu teknik pemrograman di mana program yang
biasanya cukup besar dibagi-bagi menjadi beberapa bagian
program yang lebih kecil .
•Dalam beberapa bahasa pemrograman disebut : sub-rutin,
modul, prosedur, atau fungsi.
STRUKTUR POHON
PROGRAM A
SUBPROGRAM A1 SUBPROGRAM A2 SUBPROGRAM A3
SUBPROGRAM A21 SUBPROGRAM A22
ILUSTRASI
DEKLARASI
A, B, Temp : integer
ALGORITMA
{ baca nilai A dan B}
read(A)
read(B)
{proses pertukaran}
temp A
A B
B temp
{ tulis nilai A dan B setelah pertukaran }
output(A)
output(B)
Dipecah subprogram
DEKLARASI
A, B : integer
Baca(A,B:Integer)
ALGORITMA:
read(A)
read(B)
Tukar(A, B:integer)
DEKLARASI
temp : integer {peubah
bantu}
ALGORITMA
temp A
A B
B temp
Tulis(A,B : integer)
ALGORITMA
output(A)
output(B)
ALGORITMA
Baca(A,B)
Tukar(A,B)
Tulis(A,B)
Pendefinisian Subprogram
•Penamaan subprogram sama dengan
peubah, sebaiknya diawali dengan kata kerja
karena subprogram berisi suatu aktivitas.
•Subprogram dideklarasikan sebagai prototype
judul sebelum program utama (main)
•Parameter adalah nama-nama peubah yang
dapat disertakan pada bagian judul, tapi tidak
harus ada parameter
•Nama-nama peubah yang dideklarasikan di
dalam subprogram hanya dikenal di dalam
subprogram tsb, disebut peubah lokal
Pemanggilan Subprogram
Instruksi di dalam sebuah subprogram baru dapat
dilaksanakan jika subprogram tsb dipanggil.
Parameter yang disertakan pada waktu
pemanggilan subprogram disebut parameter
aktual. Sedangkan parameter yang disertakan di
dalam bagian judul disebut parameter formal.
Ketika subprogram dipanggil, kendali program
berpindah secara otomatis ke subprogram tsb.
Setelah semua instruksi di dalam subprogram
dilaksanakan, kendali program berpindah secara
otomatis kembali ke instruksi sesudah
pemanggilan subprogram.
Parameter
Aturan yang harus diperhatikan dalam
parameter:
•Jumlah parameter aktual pada pemanggilan
subprogram harus sama dengan jumlah
parameter formal pada judul subprogram dan
deklarasi prototype judul.
•Tiap parameter aktual harus bertipe sama
dengan parameter formal yang bersesuaian.
•Tiap parameter aktual harus diekspresikan
dengan cara yang taat-asas dengan parameter
yang bersesuaian.
KEUNTUNGAN Pemrogram Modular
1.Program lebih pendek
2.Mudah menulis (banyak programer)
3.Mudah dibaca dan dimengerti
(bandingkan dg nonmodular dg banyak
instruksi)
4.Mudah didokumentasi
5.Mengurangi kesalahan dan mudah mencari
kesalahan(debug) program
6.Kesalahan yang terjadi bersifat “lokal”
PENERAPAN PEMROGRAMAN
MODULAR
•Dua bentuk pemrogram modular : PROSEDUR dan
FUNGSI
•Struktur setiap subprogram tersebut pada
hakekatnya sama , yaitu :
•Nama modul (subprogram)
•Bagian deklarasi
•Algoritma (intruksi yg akan dilaksanakan)
•Perbedaan penggunaannya dalam bahasa
pemrograman Pascal :
•Prosedur merupakan modul(subprogram) yg melakukan
aktifitas tertentu tanpa adanya pengembalian nilai
•Fungsi terdapat pengembalian nilai
PROSEDUR
•Dalam bahasa pemrograman
•Prosedur adalah modul program yang
mengerjakan tugas/aktifitas yg spesifik dan
menghasilkan suatu efek netto
(membandingkan keadaan awal dan keadaan
akhir dari suatu aktifitas prosedur)
•Setiap prosedur perlu mendefinisikan keadaan
awal sebelum rangkaian instruksi di dalam
prosedur dilaksanakan, dan keadaan akhir yg
diharapkan setelah instruksi di dalam prosedur
dilaksanakan
FUNGSI
•Sub Program yg mempunyai tujuan/tugas spesifik
•Fungsi dan prosedur adalah merupakan sub program yang
ekivalen
•Dalam beberapa masalah penggunaan salah satunya adalah
hal yg lebih tepat.
Program utama yang memanggil nama prosedur:
harus mendeklarasikan nama prosedur dan memanggilnya
dg parameter aktual yg sesuai
PROGRAM Segitiga
{menghitung luas N buah segitiga}
DEKLARASI
I, N : integer
alas, tinggi : real
Procedure
HitungLuasSegitiga(input alas, tinggi
: real)
{menghitung luas segitiga dengan
rumus : L = (alas x tinggi)/2}
{K.awal : alas dan tinggi sudah
terdefinisi nilainya }
{K.akhir : luas segitiga tercetak}
DEKLARASI
luas : real
ALGORITMA
Luas (alas * tinggi) / 2
Write(luas)
ALGORITMA
read(N) { tentukan
banyaknya segitiga }
for I 1 to N do
read(alas, tinggi
HitungLuasSegitiga(alas,tinggi)
endfor
nama parameter aktual tidak harus sama dengan nama
parameter formal : yg dipentingkan adalah nilainya
PROGRAM Segitiga
{menghitung luas N buah segitiga}
DEKLARASI
I, N : integer
a, t : real
Procedure
HitungLuasSegitiga(input alas,
tinggi : real)
{menghitung luas segitiga dengan rumus : L =
(alas x tinggi)/2}
{K.awal : alas dan tinggi sudah terdefinisi
nilainya }
{K.akhir : luas segitiga tercetak}
DEKLARASI
luas : real
ALGORITMA
Luas (alas * tinggi) / 2
Write(luas)
ALGORITMA
read(N) { tentukan banyaknya
segitiga }
for I 1 to N do
read(a, t)
HitungLuasSegitiga(a,t)
endfor
Analisa kasus :menentukan jam berikutnya
setelah ditambah satu detik
1.Tambah detik dengan 1, jika jumlah detik <60, tetapi jika jumlah
detik = 60 maka set detik kembali menjadi nol(0) dan
tambahkan 1 ke menit.
2.pertambahan menit dengan 1,jika jumlah menit <60, tetapi jika
jumlah menit = 60, maka set menit kembali menjadi 0(nol) dan
tambahkan 1 ke jam.
3.Pertambahan jam dengan 1, jika jumlah jam <24, tetapi jika
jumlah jam = 24, maka set jam kmbali menjadi 0(nol).
Contoh :
14:27:31 +1detik 14:27:(31+1)=14:27:32
15:36:59 +1detik 5:36:(59+1)=15:(36+1):00=15:37:00
10:59:59 +1deti 10:59+(59+1)= 10:(59+1):00
=(10+1):00:00=11:00:00
23:59:59 +1detik 00:00:00
Notasi Algoritma: menentukan jam berikutnya
Program jamberikutnya
Deklarasi
Type jam : record <hh:integer {0..23}
mm:integer {0..59}
ss : integer {0..59}
J :jam
ALGORITMA
Read(j.hh, j.mm, j.ss) {baca jam}
if J.ss +1 < 60 then
J.ss j.ssm +1
else
J.ss 0
if J.mm + 1 < 60 then
J.mm J.mm + 1
else
J.ss 0
if J.mm + 1 < 60 then
J.mm J.mm + 1
else
J.mm 0
If J.hh + 1 < 24 then
J.hh J.hh + 1
else
j.hh 0
endif
endif
endif
Write(J.hh, J.mm, J.ss) {jam
yang baru}
Notasi Algoritma : mencetak perjalan waktu terus
menerus dengan prosedur paramater
masukan/keluaran
Program JamHidup
{membuat jam “hidup” yg selalu bertambah 1 detik terus menerus sampai jam 00:00:00.
Masukan jam dibaca dari piranti masukan (keyboard). Setiap pertambahan 1 detik, jam yg
baru ditampilkan sebagai keluaran}
Deklarasi
Type jam : record <hh:integer {0..23}
mm:integer {0..59}
ss : integer {0..59}
J :jam
Procedure JamBerikutnya(input/output J : Jam)
{Menaikkan jam J dengan satu detik }
ALGORITMA
Read(J.hh, J.mm, J.ss) {baca jam awal}
Repeat
write(J.hh, J.mm, J.ss) {cetak jam sekarang}
JamBerikutnya(J)
Until (J.hh = 0) and (J.mm =0) and (J.ss = 0)
write(J.hh, J.mm, J.ss) {cetak jam 00:00:00}