• Tidak ada hasil yang ditemukan

Pendahuluan Modularisasi Program Pendefinisian Prosedur Nama Global dan Nama Lokal Parameter

N/A
N/A
Protected

Academic year: 2018

Membagikan "Pendahuluan Modularisasi Program Pendefinisian Prosedur Nama Global dan Nama Lokal Parameter"

Copied!
17
0
0

Teks penuh

(1)

S1 Teknik Informatika-Unijoyo 1

Algoritma Pemrograman

Pertemuan Ke-8 dan Ke-9

(Prosedur)

::

::

(2)

S1 Teknik Informatika-Unijoyo 3

Seringkali dalam membuat pembuatan program yang

berukuran besar, program dipecah menjadi beberapa

subprogram yang lebih kecil. Tiap subprogram, yang

disebut

modul

,dapat dipasangkan ke program lain yang

membutuhkannya

Teknik pemrograman seperti ini dinamakan teknik

pemrograman modular. Beberapa bahasa pemrograman

menamakan modul dengan sebutan

rutin (routine)

,

prosedur (procedure)

, atau

fungsi (function)

Pendahuluan

Keuntungan:

1. Menghindari penulisan teks program yang sama

secara berulang kali untuk aktivitas yang harus

dilakukan lebih dari satu kali

2. Memberikan kemudahan menulis dan menemukan

kesalahan (

debug

) program

(3)

S1 Teknik Informatika-Unijoyo 5

Jenis Modul Program

1.

prosedur (

procedure

)

2.

fungsi (

function

)

Struktur setiap modul tersebut pada hakikatnya sama dengan struktur algoritma biasa, yaitu ada bagian Judul (header) yang berisi nama modul, bagian Deklarasi, dan badan (body) program yang berisi instruksi yang akan dilaksanakan

Prosedur adalah modul program yang mengerjakan

tugas/aktivitas yang spesifik dan hasilnya diperoleh dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur

Oleh karena itu, pada setiap prosedur, keadaan awal

(K.awal) harus didefinisikan sebelum rangkaian instruksi di dalam prosedur dilaksanakan dan keadaan akhir (K.akhir) yang diharapkan setelah rangkaian instruksi dilaksanakan Struktur Prosedur:

bagian Judul (header): terdiri atasnama prosedur dan komentar yang menjelaskan spesifikasi prosedur tersebut bagian Deklarasi

badan (body) prosedur

(4)

S1 Teknik Informatika-Unijoyo 7

Notasi algoritma untuk mendefinisikan struktur

prosedur (tanpa parameter)

Prosedur diakses dengan cara memangil namanya dari program pemanggil (program utama atau modul program lain): Namaprosedur

Ketika NamaProsedur dipanggil, kendali program berpindah secara otomatis ke prosedur tersebut. Instruksi di dalam badan prosedur dilaksanakan. Setelah semua instruksi selesai dilaksanakan, kendali program berpindah secara otomatis ke instruksi sesudah pemanggilan prosedur

procedure NamaProsedur

{ Spesifikasi prosedur, berisi penjelasan mengenai apa yang dilakukan oleh prosedur ini. }

{ K.awal : keadaan sebelum prosedur dilaksanakan. } { K.akhir: keadaan setelah prosedur dilaksanakan. } DEKLARASI

{ semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan di sini }

DESKRIPSI:

{ badan prosedur, berisi kumpulan instruksi }

Contoh 1: Prosedur dan program utama untuk menghitung nilai rata-rata N

buah bilangan bulat yang dibaca dari piranti masukan. Nilai rata-rata seluruh bilangan dicetak ke piranti keluaran.

Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata N buah bilangan bulat. }

DEKLARASI (* Program Utama *) { tidak ada }

procedure HitungRataRata

{Menghitung nilai rata-rata N buah bilangan bulat. N>0}

DEKLARASI (* Prosedur *)

x : integer { data bilangan bulat }

N : integer { banyaknya data bilangan bulat, N > 0 }

k : integer { pencacah banyak bilangan }

jumlah : integer { jumlah seluruh bilangan }

rata : real { nilai rata-rata seluruh bilangan } DESKRIPSI : (* Prosedur *)

read(N)

jumlah ← 0 { inisialisasi penjumlah } for k ←1 to Ndo

read(x)

jumlahjumlah + x

endfor

rata jumlah/N

write(‘Nilai rata-rata = ‘,rata) DESKRIPSI : (Program Utama *)

(5)

S1 Teknik Informatika-Unijoyo 9

Program RATA_RATA_BILANGAN_BULAT; procedure HitungRataRata;

var

x, N, k, jumlah : integer; rata : real;

begin

write(‘Masukkan banyaknya data ? ’); readln(N); jumlah:=0;

for k:= 1 to N do begin

write(‘Nilai x : ? ’);

readln(x); jumlah:=jumlah+x;

end;

rata:= jumlah/N;

writeln(‘Nilai rata-rata = ‘,rata);

end;

begin

writeln(‘Menghitung rata-rata N buah bilangan bulat’);

HitungRataRata;

end.

Nama-nama(konstanta, peubah, tipe, dan lain-lain) yang dideklarasikan di dalam bagian Deklarasi prosedur bersifat “lokal” dan hanya dapat digunakan di dalam prosedur yang melingkupinya saja

Sedangkan nama-nama yang dideklarasikan di dalam program utama bersifat “global” dan dapat digunakan di bagian manapun di dalam program, baik di dalam program utama maupun di dalam prosedur

(6)

S1 Teknik Informatika-Unijoyo 11

Contoh 2: prosedur

HitungRataRata dan program utama

RATA_RATA_BILANGAN _BULAT yang sudah dimodifikasi dengan menempatkan N dan

rata sebagai nama peubah di dalam bagian deklarasi nama program utama

Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata }

DEKLARASI (* Program utama *)

N: integer { banyaknya data bilangan bulat, N > 0 }

rata : real { nilai rata-rata seluruh bilangan } procedure HitungRataRata

{Menghitung nilai rata-rata N buah bilangan bulat. N>0} DEKLARASI (* Prosedur *)

x: integer

k: integer

jumlah : integer

DESKRIPSI : (* Prosedur *)

jumlah ←0 { inisialisasi }

DESKRIPSI : (* Program Utama *) read(N)

write(‘Menghitung rata-rata N buah bilangan bulat’) HitungRataRata

write(‘Nilai rata-rata = ‘,rata)

Program RATA_RATA_BILANGAN_BULAT; var

N : integer; rata : real;

procedure HitungRataRata;

var

jumlah:=jumlah + x;

end;

rata:= jumlah/N;

end; begin

write(‘Masukkan banyaknya data ? ’); readln(N);

writeln(‘Menghitung rata-rata N buah bilangan bulat’);

HitungRataRata;

writeln(‘Nilai rata-rata = ‘,rata);

(7)

S1 Teknik Informatika-Unijoyo 13

Peubah N dan ratabersifat global dan dapat digunakan di dalam prosedur HitungRataRata karena

dideklarasikan dalam bagian Deklarasi program utama Sedangkan peubah x, k, dan jumlahbersifat lokal dan hanya dikenal dan digunakan di dalam lingkup prosedur saja karena dideklarasikan dalam prosedur

HitungRataRata

Kebanyakan program memerlukan pertukaran informasi antara prosedur (atau fungsi) dan titik dimana ia dipanggil. Penggunaan parameter menawarkan mekanisme penukaran informasi tersebut. Tiap item data ditransfer antara parameter aktualdan parameter formalyang bersesuaian

Parameter aktualadalah parameter yang disertakan ketika pemanggilan, sedangkan paramater formaladalah

parameter yang dideklarasikan di bagian header prosedur itu sendiri

Ketika prosedur dipanggil, parameter aktual menggantikan parameter formal

Prosedur dengan parameter diakses dengan cara memanggil namanya dari program pemanggil (program utama atau modul program lain) dengan disertai parameter aktualnya:

Namaprosedur(daftar parameter aktual)

(8)

S1 Teknik Informatika-Unijoyo 15

Notasi algoritma untuk mendefinisikan struktur

prosedur dengan parameter

procedure NamaProsedur(daftar parameter formal)

{ Spesifikasi prosedur, berisi penjelasan tenang apa yang dilakukan oleh prosedur ini. }

{ K.awal : keadaan sebelum prosedur dilaksanakan. } { K.akhir: keadaan setelah prosedur dilaksanakan. }

DEKLARASI

{ semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan di sini }

DESKRIPSI:

{ badan prosedur, berisi kumpulan instruksi }

Berdasarkan maksud penggunaannya, terdapat

tiga jenis parameter formal yang disertakan dalam

prosedur:

1. Parameter Masukan (input parameter) 2. Parameter Keluaran (output parameter) 3. Parameter masukan/keluaran (input/output

(9)

S1 Teknik Informatika-Unijoyo 17

Parameter Masukan (

input parameter

)

Parameter masukan adalah parameter yang nilainya berlaku sebagai masukan untuk prosedur

Pada bahasa pemrograman, istilah parameter masukan ini sering dinamakan parameter nilai (value parameter atau

parameter by value)

Pada parameter masukan, nilai (value) parameter aktual

diisikan (assign) ke dalam parameter formal yang

bersesuaian. Nilai ini digunakan di dalam badan prosedur yang bersangkutan. Nilai yang dinyatakan oleh parameter masukan

tidak dapat dikirim dalam arah sebaliknya. Itulah alasan mengapa parameter jenis ini diacu sebagai parameter masukan

Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai parameter aktual. Karena yang dipentingkan adalah nilainya, maka nama parameter aktualboleh berbeda dengan nama parameter formalyang bersesuaian

Contoh 3: Prosedur dan program utama untuk menghitung nilai rata-rata Nbuah bilangan bulat ditulis kembali prosedur dengan menggunakan

parameter masukan

Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata }

DEKLARASI (* Program utama *)

Ndata : integer { banyaknya data bilangan bulat } procedure HitungRataRata(input N: integer) {Menghitung nilai rata-rata N buah bilangan bulat}

{K.awal: N berisi banyaknya bilangan bulat, N > 0}

{K.akhir: rata-rata seluruh bilangan dicetak}

DEKLARASI (* Prosedur *)

x, k, jumlah : integer

rata : real { nilai rata-rata seluruh bilangan } DESKRIPSI : (* Prosedur *)

jumlah ←0 { inisialisasi penjumlah } for k ←1 to N do

read(x)

jumlahjumlah + x

endfor

rata jumlah/N

write(rata)

DESKRIPSI : (* Program Utama *)

(10)

S1 Teknik Informatika-Unijoyo 19

Program RATA_RATA_BILANGAN_BULAT; var

Ndata : integer;

procedure HitungRataRata(N : integer);

var

x, k, jumlah : integer; rata : real;

begin

jumlah:=0;

for k:= 1 to N do begin

write(‘Nilai x : ? ’);readln(x); jumlah:=jumlah+x;

end;

rata:= jumlah/N;

writeln(‘Nilai rata-rata = ‘,rata);

end;

begin

write(‘Masukkan banyaknya data ? ’); readln(Ndata);

writeln(‘Menghitung rata-rata N buah bilangan bulat’);

HitungRataRata(Ndata);

end.

Parameter Keluaran (

output parameter

)

Parameter keluaranadalah parameter yang menampung keluaran yang dihasilkan oleh prosedur

Pada bahasa pemrograman, istilah parameter keluaransering dinamakan parameter acuan(reference parameter atau

parameter by reference)

Bila prosedur yang mengandung parameter keluaran

dipanggil, nama parameter aktualdi dalam program pemanggil menggantikan nama parameter formalyang bersesuaian di dalam prosedur. Jadi, nama parameter aktual

akan digunakan selama pelaksanaan prosedur

Karena nama parameter merupakan suatu lokasi di memori, maka bila di dalam prosedur parameter aktualdiisi suatu nilai, nilai ini akan tetap berada di dalam parameter aktualmeskipun prosedur selesai dilaksanakan. Jadi, setelah pemanggilan,

(11)

S1 Teknik Informatika-Unijoyo 21

Contoh 4: Prosedur dan program utama untuk menghitung nilai rata-rata Nbuah bilangan bulat ditulis kembali prosedur dengan nilai rata-rata merupakan keluaran prosedur

Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata }

DEKLARASI (* Program Utama *)

Ndata : integer

rerata : real

procedure HitungRataRata(input N:integer, output

rata:real)

{ Menghitung nilai rata-rata N buah bilangan bulat } { K.awal: N berisi banyaknya bilangan bulat, N > 0 } { K.akhir: rata berisi rata-rata seluruh bilangan }

DEKLARASI (* Prosedur *)

x, k, jumlah : integer DESKRIPSI : (* Prosedur *)

jumlah ←0 { inisialisasi penjumlah } for k ← 1 to Ndo

read(x)

jumlahjumlah + x

endfor

rata jumlah/N

DESKRIPSI : (* Program utama *)

write(‘Menghitung rata-rata N buah bilangan bulat’) read(Ndata)

HitungRataRata(Ndata,rerata)

write(rerata)

Program RATA_RATA_BILANGAN_BULAT; var

Ndata : integer; rerata : real;

procedure HitungRataRata(N : integer; var rata : real);

var

write(‘Masukkan banyaknya data ? ’); readln(Ndata);

writeln(‘Menghitung rata-rata N buah bilangan bulat’);

HitungRataRata(Ndata,rerata);

writeln(‘Nilai rata-rata = ‘,rerata);

(12)

S1 Teknik Informatika-Unijoyo 23

Parameter masukan/keluaran

(

input/output parameter

)

Parameter masukan/keluaranadalah parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut. Pada bahasa pemrograman, seperti halnya parameter keluaran, parameter masukan/keluaranjuga sering dinamakan parameter acuan(reference parameter atau

parameter by reference).

Parameter masukandigunakan pada situasi di mana informasi dikirim hanya dari titik pemanggilan prosedur ke prosedur itu sendiri. Sedangkan parameter keluaranhanya mengirim informasi dari prosedur ke titik pemanggilan prosedur. Pada kebanyakan aplikasi, informasi juga harus dikirim dalam kedua arah, jadi prosedur juga harus dapat mengakomodasi baik masukan dari dan keluaran ke blok program pemanggil (parameter masukan/keluaran

umumnya digunakan pada situasi seperti ini)

Parameter masukan/keluaran dideklarasikan di dalamheader

prosedur, sebagaimana parameter masukan. Tetapi, parameter keluaran harus dideklarasikan dengan kata kunciinput/output

Seperti halnya pada parameter keluaran, bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program pemanggil menggantikan (substitute) nama parameter formal yang bersesuaian di dalam prosedur. Selain itu, isi atau nilai parameter aktual juga ikut disalin ke dalam parameter formal. Jadi, nama dan nilai parameter aktual digunakan di seluruh bagian prosedur. Akibat penggunaan parameter masukan/keluaran, bila parameter aktual diubah nilainya di dalam badan prosedur, maka sesudah pemanggilan prosedur nilai parameter aktual di titik pemanggilan juga berubah. Ini berbeda dengan parameter masukan, yang dalam hal ini meskipun nilai parameter aktual di dalam badan prosedur diubah, nilai parameter aktual tersebut tidak berubah di titik pemanggilan

(13)

S1 Teknik Informatika-Unijoyo 25

Contoh 5: Prosedur dan program utama yang memperlihatkan efek penggunaan

parameter masukan

dan perbandingannya dengan parameter masukan/keluaran

Algoritma MENAMBAH_DUA

{Program yang memperlihatkan efek penggunaan parameter masukan}

DEKLARASI (* Program Utama *)

a,b : integer

procedure TambahDua(input x,y : integer)

{ Menambahkan nilai x dan y masing-masing dengan 2 } { K.awal: x dan y sudah berisi }

{ K.akhir: nilai x dan y masing-masing bertambah 2 } DEKLARASI (* Prosedur *)

{ tidak ada }

DESKRIPSI : (* Prosedur *)

xx + 2

yy + 2

write(‘Nilai x dan y di akhir prosedur : ’) write(‘ x = ‘, x)

write(‘ y = ‘, y)

DESKRIPSI : (* Program Utama *)

a← 15

b← 10

write(‘Nilai a dan b sebelum pemanggilan : ’) write(‘ a = ‘, a)

write(‘ b = ‘, b) TambahDua(a,b)

write(‘Nilai a dan b sesudah pemanggilan : ’) write(‘ a = ‘, a)

write(‘ b = ‘, b)

Program MENAMBAH_DUA; var

a,b: integer;

procedure TambahDua(x,y : integer); begin

x := x + 2; y := y + 2;

writeln(‘Nilai x dan y di akhir prosedur : ’); writeln(‘ x = ‘, x);

writeln(‘Nilai a dan b sebelum pemanggilan : ’); writeln(‘ a = ‘, a);

writeln(‘ b = ‘, b);

TambahDua(a,b);

writeln(‘Nilai a dan b sesudah pemanggilan : ’); writeln(‘ a = ‘, a);

(14)

S1 Teknik Informatika-Unijoyo 27

Hasil algoritma MENAMBAH_DUA dengan penggunaan

parameter masukanadalah:

Nilai a dan b sebelum pemanggilan :

a = 15 b = 10

Nilai x dan y di akhir prosedur :

a = 17 b = 12

Nilai a dan b sesudah pemanggilan :

a = 15 b = 10

Jadi, setelah pemanggilan prosedur, nilai a dan b tidak berubah

Contoh 5:

Hasil Keluaran

Contoh 6: Prosedur dan program utama dengan parameter masukan/keluaran

Algoritma MENAMBAH_DUA

{ Program yang memperlihatkan efek penggunaan parameter masukan/keluaran }

DEKLARASI

a,b: integer

procedure TambahDua(input/output x,y : integer) { Menambahkan nilai x dan y masing-masing dengan 2 } { K.awal: x dan y sudah berisi }

{ K.akhir: nilai x dan y masing-masing bertambah 2 }

DEKLARASI { tidak ada }

DESKRIPSI :

xx + 2

yy+ 2

write(‘Nilai x dan y di akhir prosedur : ’) write(‘ x = ‘, x)

write(‘ y = ‘, y) DESKRIPSI :

a ←15

b ←10

write(‘Nilai a dan b sebelum pemanggilan : ’) write(‘ a = ‘, a)

write(‘ b = ‘, b) TambahDua(a,b)

write(‘Nilai a dan b sesudah pemanggilan : ’) write(‘ a = ‘, a)

(15)

S1 Teknik Informatika-Unijoyo 29

Program MENAMBAH_DUA; var

a,b: integer;

procedure TambahDua(var x,y : integer); begin

x := x + 2; y := y + 2;

writeln(‘Nilai x dan y di akhir prosedur : ’); writeln(‘ x = ‘, x);

writeln(‘ y = ‘, y); end;

begin a:=15; b:=10;

writeln(‘Nilai a dan b sebelum pemanggilan : ’); writeln(‘ a = ‘, a);

writeln(‘ b = ‘, b);

TambahDua(a,b);

writeln(‘Nilai a dan b sesudah pemanggilan : ’); writeln(‘ a = ‘, a);

writeln(‘ b = ‘, b); end.

Hasil algoritma MENAMBAH_DUAdengan penggunaan

parameter masukan/keluaranadalah:

Nilai a dan b sebelum pemanggilan :

a = 15 b = 10

Nilai x dan y di akhir prosedur :

a = 17 b = 12

Nilai a dan b sesudah pemanggilan :

a = 17 b = 12

Akibat penggunaan xdan y sebagai parameter masukan/keluaran, bila nilai a dan b diubah di dalam prosedur TambahDua, maka perubahan ini dibawa ke titik pemanggilan prosedur TambahDua. Jadi, setelah pemanggilan prosedur, nilai a dan b berubah

(16)

S1 Teknik Informatika-Unijoyo 31

Keuntungan modularisasi program adalah menghindari penulisan teks program yang sama secara berulang kali untuk aktivitas yang harus dilakukan lebih dari satu kali dan

memberikan kemudahan menulis dan menemukan kesalahan (debug) program

Terdapat 2 jenis modul program, yaitu: prosedur (procedure) dan fungsi (function)

Prosedur adalah modul program yang mengerjakan

tugas/aktivitas yang spesifik dan hasilnya diperoleh dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur

Struktur Prosedur terdiri dari: bagian Judul (header), bagian Deklarasi dan badan (body) prosedur

Summary [1]

Nama-nama (konstanta, peubah, tipe, dan lain-lain) yang

dideklarasikan di dalam bagian Deklarasi prosedur bersifat “lokal” dan hanya dapat digunakan di dalam prosedur yang melingkupinya saja. Sedangkan nama-nama yang dideklarasikan di dalam program utama bersifat “global” dan dapat digunakan di bagian manapun di dalam program, baik di dalam program utama maupun di dalam prosedur Penggunaan parameter menawarkan mekanisme penukaran informasi antara prosedur (atau fungsi) dan titik dimana ia dipanggil. Tiap item data ditransfer antara parameter aktual (parameter yang disertakan ketika pemanggilan) dan parameter formal (parameter yang

dideklarasikan di bagian header prosedur itu sendiri) yang bersesuaian. Ketika prosedur dipanggil, parameter aktual menggantikan parameter formal

Terdapat 3 jenis parameter formal yang disertakan dalam prosedur:

Parameter Masukan (input parameter), Parameter Keluaran (output parameter) dan Parameter masukan/keluaran (input/output

parameter)

(17)

S1 Teknik Informatika-Unijoyo 33

Jogiyanto HM [1989].

Turbo Pascal

, Yogyakarta: Andi

Offset.

Noor Ifada [2005].

Diktat Matakuliah Algoritma

Pemrograman (Hibah Kompetisi A1)

, Bangkalan:

Jurusan Teknik Informatika, Universitas Trunojoyo.

Rinaldi Munir [2003].

Algoritma dan Pemrograman

dengan Pascal dan C edisi Kedua

, Bandung: Informatika.

Referensi

Dokumen terkait