Anda di halaman 1dari 28

Algoritma &

Pemrograman #6
by Ichsan Taufik, M.T.

Modular Programming

Pemrograman Modular adalah suatu teknik pemrograman di mana


program yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian
program yang lebih kecil sehingga kompleksitas program menjadi lebih
kecil, masalah yang kompleks dapat lebih mudah diselesaikan, dan
program menjadi lebih spesifik / terarah.
Di dalam bahasa Pascal modul-modul yang berisi bagian program yang
bersifat spesifik dapat dituangkan ke dalam suatu fungsi atau procedure.
Fungsi/function atau prosedur/procedure adalah bagian dari program
yang memiliki nama tertentu, digunakan untuk mengerjakan suatu
pekerjaan tertentu, serta letaknya dipisahkan dari bagian program yang
menggunakan fungsi atau prosedur tersebut.
Beberapa bahasa pemrograman menamakan subprogram dengan
sebutan sub-rutin (subroutine), modul, prosedur, atau fungsi.

Keuntungan Subprogram
Keuntungan menggunakan Subprogram:
Program besar dapat dipisah menjadi program-program kecil.
Dapat dikerjakan oleh beberapa orang sehingga koordinasi mudah.
Kemudahan dalam mencari kesalahan-kesalahan karena alur logika
jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu
saja.
Modifikasi program dapat dilakukan pada suatu modul tertentu saja
tanpa mengganggu program keseluruhan.
Fungsi fungsi menjadikan program mempunyai struktur yang jelas.
Dengan memisahkan langkah langkah detail ke satu atau lebih
fungsi fungsi, maka program utama akan menjadi lebih pendek, jelas
dan mudah dimengerti. Hal seperti ini menunjukan suatu struktur
program yang baik

Keuntungan Subprogram
Fungsi fungsi yang dapat digunakan untuk menghindari
penulisan yang sama yang ditulis secara berulang ulang.
Langkah langkah program yang sama dan sering digunakan
berulang ulang di program dapat dituliskan sekali saja
secara terpisah dalam bentuk fungsi fungsi. Selanjutnya
bagian program yang membutuhkan langkah langkah ini
tidak perlu selalu menuliskannya, kita cukup memanggil
fungsi fungsi tersebut.
Mempermudah dokumentasi.
Reusability: Suatu fungsi dapat digunakan kembali oleh program atau
fungsi lain

Kategori Subprogram dalam


Pascal
1. Standard Library Function
Yaitu fungsi-fungsi yang telah disediakan oleh Pascal dalam file-file
unitnya. Misalnya: clrscr, gotoxy(), textcolor()
Untuk function ini kita harus mendeklarasikan terlebih dahulu library yang
akan digunakan, yaitu dengan menggunakan reserved word: uses crt;
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 disertakan untuk
penggunaanya.
Terdapat dua bentuk subprogram dalam Pascal, yaitu: pertama Prosedur
(Procedure) dan kedua fungsi (Function)

Pendefinisian Prosedur
Pendefinisian prosedur artinya menuliskan nama prosedur,
mendeklarasikan nama-nama konstanta, peubah dan tipe
(jika ada), dan menjabarkan rangkaian aksi yang dilakukan.
Pada dasarnya, struktur prosedur sama dengan struktur
algoritma, yaitu ada bagian judul (header) yang terdiri atas
nama prosedur dan deklarasi parameter (jika ada), bagian
deklarasi untuk mengumumkan nama-nama, dan bagian
algoritma yang disebut badan prosedur.
Setiap prosedur mempunyai nama yang unik.
Nama prosedur sebaiknya diawali dengan kata kerja karena
prosedur berisi suatu aktivitas, misalnya : HitungLuas,
Tukar, CariMaks, Inisialisasi, dan lain sebagainya.

Parameter
Nama-nama peubah yang dideklarasikan pada
bagian header prosedur.
Kebanyakan program memerlukan pertukaran
data/informasi antara prosedur (atau fungsi)
dan titik dimana ia dipanggil.
Penggunaan parameter menawarkan
mekanisme pertukaran informasi tersebut.
Tiap item data ditransfer antara parameter
aktual dan parameter formal yang
bersesuaian.

Parameter
Parameter Aktual (kadang-kadang disebut juga
argumen) adalah parameter yang disertakan pada
waktu pemanggilan prosedur.
Parameter Formal adalah parameter yang
dideklarasikan di dalam bagian header prosedur itu
sendiri.
Ketika prosedur dipanggil, parameter aktual
menggantikan parameter formal.
Tiap-tiap paramater aktual berpasangan dengan
parameter formal yang bersesuaian.

Parameter
Aturan yang harus diperhatikan dalam korespondensi
satu-satu antara parameter aktual dan parameter
formal adalah:
1. Jumlah parameter aktual pada pemanggilan
prosedur harus sama dengan jumlah parameter
formal pada deklarasi prosedurnya.
2. Tiap parameter aktual harus bertipe sama dengan
tipa parameter formal yang bersesuaian.
3. Tiap parameter aktual harus diekspresikan dalam
cara yang taat-asas dengan parameter formal yang
bersesuaian, bergantung pada pada jenis
parameter formal.

Parameter
Terdapat tiga jenis parameter formal yang disertakan dalam
prosedur:
1. Paramater masukan adalah parameter yang nilainya berlaku
sebagai masukan untuk prosedur atau sering disebut
parameter nilai (parameter by value).
2. Parameter keluaran adalah parameter yang menampung
keluaran yang dihasilkan oleh prosedur.
3. Parameter masukan/keluaran adalah parameter yang
berfungsi sebagai masukan sekaligus keluaran bagi
prosedur tersebut.

Notasi Algoritma Prosedur


procedure NamaProcedure (deklarasi parameter, jika ada)
{spesifikasi prosedur, berisi penjelasan tentang apa yang dilakukan
oleh prosedur ini
K. Awal: keadaan sebelum prosedur dilaksanakan.
K. Akhir: keadaan setelah prosedur dilaksanakan.}
DEKLARASI
{semua nama yang dipakai di dalam prosedur dan hanya berlaku
lokal di dalam prosedur didefinisikan disini}
ALGORITMA:
{badan prosedur, berisi urutan instruksi}

Contoh Prosedur dengan


parameter masukan
Prosedur HitungLuasSegitiga (input alas, tinggi:real)
{Menghitung luas segitiga dengan rumus Luas=(alas x
tinggi)/2
K. Awal : alas dan tinggi sudah terdefinisi nilainya.
K. Akhir : luas segitiga tercetak.}
DEKLARASI
luas : integer
ALGORITMA:
luas (alas*tinggi)/2
write(luas)

Contoh Prosedur dengan


parameter keluaran
Prosedur HitungLuasSegitiga (input alas, tinggi:real,
output luas:real)
{Menghitung luas segitiga dengan rumus Luas=(alas x
tinggi)/2
K. Awal: alas dan tinggi sudah terdefinisi nilainya
k. Akhir: luas berisi luas segitiga}
DEKLARASI
{tidak ada}
ALGORITMA:
luas (alas*tinggi)/2

Contoh prosedur dengan


paramater masukan/keluaran
Procedure Inc(input/output x:integer)
{menaikkan nilai x sebesar 1.
K. Awal: x sudah terdefinisi nilainya.
K. Akhir: nilai x bertambah 1}
DEKLARASI
{tidak ada}
ALGORITMA:
xx+1

PROGRAM Segitiga

HitLsSg3(a, t, L)

procedure HitLsSg3(input alas, tinggi:real, output


luas:real)

luas (alas * tinggi)/2

PROGRAM Cetak0Sampai10

Inc(x)

procedure Inc(input/output x : integer)

xx+1

Cara Memanggil Prosedur


Tanpa Parameter
NamaProsedur;
Dengan Parameter
NamaProsedur(parameter aktual);

Nama Global, Lokal, dan Lingkup


Nama-nama (konstanta, peubah, tipe, dll)
yang dideklarasikan di dalam prosedur
(termasuk parameter, jika ada) hanya
dikenal di dalam prosedur tersebut dikatan
lingkupnya (scope) lokal.
Nama-nama (konstanta, peubah, tipe, dll)
yang dideklarasikan di dalam program utama
dikatakan lingkupnya (scope) global.

Peubah lokal atau global?


Keputusan apakah suatu peubah akan
dideklarasikan global atau lokal bergantung kepada
penggunaan nama tersebut.
Usahakanlah menggunakan peubah global sesedikit
mungkin.
Prosedur yang baik adalah prosedur yang
independen dari program pemanggilnya. Pernyataan
ini menyiratkan bahwa prosedur yang baik tidak
menggunakan peubah-peubah global di dalam
badan prosedurnya.

Latihan Prosedur
Procedure HitungRatarata(input N:integer, output u:real)
{menghitung rata-rata N buah bilangan bulat dari piranti masukan}
DEKLARASI
x,k,jumlah : integer
ALGORITMA:
jumlah 0 {inisialisasi}
for k 1 to N do
read(x)
jumlah jumlah+x
endfor
u jumlah/N

Latihan Prosedur
Procedure TambahEmpat(input/output x:integer, input y:integer)
{menambahkan nilai x dan y masing-masing dengan 4}
DEKLARASI
{tidak ada}
ALGORITMA:
xx+4
yy+4
write(Nilai x dan y di akhir prosedur TambahEmpat: )
write( x = ,x)
write( y = ,y)

Fungsi
Fungsi adalah subprogram yang
memberikan/mengembalikan (return) sebuah
nilai dari tipe tertentu (tipe dasar atau tipe
bentukan).
Definisi fungsi di dalam program bersesuaian
dengan definisi fungsi di dalam matematika.
Contoh : f(x)= 2x2 +5x 8, H(x,y) =3x-y+xy
Nilai yang diberikan oleh fungsi bergantung
pada masukan parameter

Pendefinisian fungsi
Struktur fungsi sama dengan struktur algoritma sudah dikenal: ada
bagian header yang berisi nama fungsi(beserta parameter
masukan jika ada) dan spesifikasi tentang fungsi tersebut, bagian
deklarasi, dan badan fungsi.
Tipe menspesifikasikan tipe nilai yang diberikan oleh fungsi. Nilai
yang diberikan oleh fungsi bertipe dasar maupun bertipe bentukan.
Parameter formal selalu berjenis parameter masukan sehingga
deklarasi nama parameter selalu diawali dengan kata input.
Semua nama peubah/konstanta yang hanya berlaku di dalam
fungsi saja diumumkan di bagian deklarasi. Nama yang
didefinisikan di dalam bagian deklarasi fungsi hanya dikenal dan
berlaku di dalam fungsi yang bersangkutan saja, fungsi lain atau
program utama tidak dapat menggunakannya.
Pernyataan return ekspresi di dalam fungsi bertujuan
mengembalikan nilai yang dihasilkan oleh fungsi tersebut. Ekspresi
dapat berupa konstanta, atau sebuah peubah, atau sebuah rumus.

Notasi Algoritma Fungsi


function NamaFungsi (input deklarasi parameter, jika ada) tipe
{spesifikasi fungsi, menjelaskan tentang apa yang dilakukan dan
yang dikembalikan oleh fungsi.}
DEKLARASI
{semua nama yang dipakai di dalam fungsi dan hanya berlaku lokal
di dalam fungsi didefinisikan disini}
ALGORITMA:
{badan fungsi, berisi urutan instruksi untuk menghasilkan nilai
yang akan dikembalikan oleh fungsi}
return ekspresi {pengembalian nilai yang dihasilkan fungsi}

Contoh Fungsi
Function F(input x:real) real
{mengembalikan nilai F(x)=2x2 + 5x -8, x R}
DEKLARASI
{tidak ada}
ALGORITMA:
return 2*x*x+ 5*x 8

Contoh Fungsi
Function H(input u,v,w:integer) integer
{mengembalikan nilai H(u,v,w)=2uv2 + 3vw +
10v}
DEKLARASI
{tidak ada}
ALGORITMA:
return 2*u*v*v+ 3*v*w + 10*v

Latihan Fungsi
Function NamaBulan(input bln:integer)string
{mengembalikan nama bulan berdasarkan nomor bln}
DEKLARASI
{tidak ada}
ALGORITMA:
case bln
1: return Januari
2: return Februari
3: return Maret
4: return April
5: return Mei
6: return Juni
7: return Juli
8: return Agustus
9: return September
10: return Oktober
11: return November
12: return Desember
endcase

Latihan Fungsi
Function Maks(input a, b:integer)integer
{mengembalikan nilai terbesar dari a dan b}
DEKLARASI
{tidak ada}
ALGORITMA:
If a>= b then
return a
else
return b
endif

Anda mungkin juga menyukai