Pendahuluan Modularisasi Program Pendefinisian Prosedur Nama Global dan Nama Lokal Parameter

  Algoritma Pemrograman Pertemuan Ke-8 dan Ke-9 (Prosedur) :: ::

  S1 Teknik Informatika-Unijoyo

  1 ! Pendahuluan 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)

  S1 Teknik Informatika-Unijoyo

  3 Modularisasi Program 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 S1 Teknik Informatika-Unijoyo

  4 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

  S1 Teknik Informatika-Unijoyo

  5 Pendefinisian Prosedur

  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

K.akhir

  dalam prosedur dilaksanakan dan keadaan akhir ( ) yang diharapkan setelah rangkaian instruksi dilaksanakan Struktur Prosedur:

  bagian Judul (header): terdiri atas nama prosedur dan

  komentar yang menjelaskan spesifikasi prosedur tersebut

  bagian Deklarasi badan (body) prosedur S1 Teknik Informatika-Unijoyo

  6 Notasi algoritma untuk mendefinisikan struktur prosedur (tanpa parameter) 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 }

  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

  S1 Teknik Informatika-Unijoyo

  7 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 }

  Contoh 1: Prosedur

  N

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

  dan program utama

  k : integer { pencacah banyak bilangan } jumlah

  : integer { jumlah seluruh bilangan }

  untuk menghitung

  rata : real { nilai rata-rata seluruh bilangan }

  nilai rata-rata N

  DESKRIPSI : (* Prosedur *)

  buah bilangan bulat

  read( N )

  yang dibaca dari

  ← jumlah 0 { inisialisasi penjumlah } piranti masukan.

  ← for k 1 to N do

  Nilai rata-rata

  x read( )

  seluruh bilangan

  • jumlahjumlah x

  dicetak ke piranti endfor

  ← rata jumlah / N keluaran. rata write(‘Nilai rata-rata = ‘, ) DESKRIPSI : (Program Utama *) write(‘Menghitung rata-rata N buah bilangan bulat’) HitungRataRata

  S1 Teknik Informatika-Unijoyo

  8 S1 Teknik Informatika-Unijoyo

  9 Program RATA_RATA_BILANGAN_BULAT; procedure HitungRataRat a; 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.

  S1 Teknik Informatika-Unijoyo

  10 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

  Nama Global dan Nama Lokal

  12 Program RATA_RATA_BILANGAN_BULAT; var N : integer; rata : real; procedure HitungRataRata ; var x, k, jumlah : integer; begin jumlah:=0; for k:= 1 to N do begin write(‘Nilai x : ? ’); readln(x); 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); end.

  : integer jumlah : integer DESKRIPSI : (* Prosedur *) jumlah

  ) S1 Teknik Informatika-Unijoyo

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

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

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

  / N

  ← jumlah

  endfor rata

  ) jumlahjumlah

  ← 1 to N do read( x

  ← 0 { inisialisasi } for k

  : integer k

  S1 Teknik Informatika-Unijoyo

  

: real { nilai rata-rata seluruh bilangan }

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

  

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

rata

  Algoritma RATA_RATA_BILANGAN_BULAT { Program utama untuk menghitung nilai rata-rata } DEKLARASI (* Program utama *) N

  peubah di dalam bagian deklarasi nama program utama

  rata sebagai nama

  dimodifikasi dengan menempatkan N dan

  _BULAT yang sudah

  program utama

  • x

  11 Contoh 2: prosedur HitungRataRata dan

N rata

  Peubah dan bersifat global dan dapat digunakan

  prosedur HitungRataRata

  di dalam karena dideklarasikan dalam bagian Deklarasi program utama

  x k jumlah

  Sedangkan peubah , , dan bersifat lokal dan hanya dikenal dan digunakan di dalam lingkup prosedur

  prosedur

  saja karena dideklarasikan dalam

HitungRataRata

  S1 Teknik Informatika-Unijoyo

  13 Parameter

  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

  aktual dan parameter formal yang bersesuaian Parameter aktual adalah parameter yang disertakan ketika

  pemanggilan, sedangkan paramater formal adalah 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)

  S1 Teknik Informatika-Unijoyo

  14 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. } { semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan di sini }

  DESKRIPSI: { badan prosedur, berisi kumpulan instruksi } S1 Teknik Informatika-Unijoyo

  15 Jenis Parameter 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 parameter) S1 Teknik Informatika-Unijoyo

  16 S1 Teknik Informatika-Unijoyo

  17 Parameter Masukan (input parameter)

  , k

  / N write( rata

  ← jumlah + x endfor rata jumlah

  N do read( x ) jumlah

  ← 1 to

  0 { inisialisasi penjumlah } for k

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

  : integer rata

  , jumlah

  : 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

  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

  (input N

  : integer { banyaknya data bilangan bulat } procedure HitungRataRata

  Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata }

DEKLARASI (* Program utama *) Ndata

  dan program utama untuk menghitung nilai rata-rata N buah bilangan bulat ditulis kembali prosedur dengan menggunakan parameter masukan

  18 Contoh 3: Prosedur

  S1 Teknik Informatika-Unijoyo

  Pada parameter masukan, nilai (value) parameter aktual 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 aktual boleh berbeda dengan nama parameter formal yang bersesuaian

  parameter by value)

  ) DESKRIPSI : (* Program Utama *)

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

read( Ndata ) HitungRataRata (Ndata)

  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.

  S1 Teknik Informatika-Unijoyo

  19 Parameter Keluaran (output parameter)

  Parameter keluaran adalah parameter yang menampung keluaran yang dihasilkan oleh prosedur Pada bahasa pemrograman, istilah parameter keluaran sering dinamakan parameter acuan (reference parameter atau

  parameter by reference)

  Bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program pemanggil menggantikan nama parameter formal yang 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 aktual diisi suatu nilai, nilai ini akan tetap berada di dalam parameter aktual meskipun prosedur selesai dilaksanakan. Jadi, setelah pemanggilan, parameter aktual berisi suatu nilai yang merupakan keluaran dari prosedur tersebut

  S1 Teknik Informatika-Unijoyo

  20

N

  / N

  

(N : integer; var rata : real);

var x, k, jumlah : integer; begin jumlah:=0; for k:= 1 to N do begin write(‘Nilai x : ? ’);readln(x); jumlah := jumlah + x; end; rata:= jumlah/N; end; begin write(‘Masukkan banyaknya data ? ’); readln(Ndata); writeln(‘Menghitung rata-rata N buah bilangan bulat’); HitungRataRata (Ndata,rerata) ; writeln(‘Nilai rata-rata = ‘,rerata); end.

  22 Program RATA_RATA_BILANGAN_BULAT; var Ndata : integer; rerata : real; procedure HitungRataRata

  ) S1 Teknik Informatika-Unijoyo

  HitungRataRata (Ndata,rerata) write( rerata

  Ndata )

  DESKRIPSI : (* Program utama *)

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

read(

  S1 Teknik Informatika-Unijoyo

  21 Contoh 4: Prosedur dan

  :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

  (input N

  : real procedure HitungRataRata

  : integer rerata

  Algoritma RATA_RATA_BILANGAN_BULAT

{ Program utama untuk menghitung nilai rata-rata }

DEKLARASI (* Program Utama *) Ndata

  buah bilangan bulat ditulis kembali prosedur dengan nilai rata-rata merupakan keluaran prosedur

  program utama untuk menghitung nilai rata- rata

  1 to N do read( x ) jumlah jumlah + x endfor rata jumlah S1 Teknik Informatika-Unijoyo

  23 Parameter masukan/keluaran (input/output parameter)

  Parameter masukan/keluaran adalah parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut. Pada bahasa pemrograman, seperti halnya parameter keluaran

  , parameter masukan/keluaran juga sering dinamakan parameter acuan (reference parameter atau

  parameter by reference).

  Parameter masukan digunakan pada situasi di mana informasi dikirim hanya dari titik pemanggilan prosedur ke prosedur itu sendiri. Sedangkan parameter keluaran hanya 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 dalam header prosedur, sebagaimana parameter masukan. Tetapi, parameter keluaran harus dideklarasikan dengan kata kunci

  input/output S1 Teknik Informatika-Unijoyo

  24 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 Hal lain yang harus diperhatikan pada jenis parameter masukan/keluaran ini adalah parameter aktual harus berupa peubah, tidak boleh berupa tetapan atau ekspresi

  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 *)

  Contoh 5: Prosedur { tidak ada }

  dan program utama

  DESKRIPSI : (* Prosedur *) x x

  • 2

  yang memperlihatkan

  y y

  • 2

  efek penggunaan

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

  parameter masukan write(‘ x = ‘, )

  y

  dan perbandingannya

  DESKRIPSI : (* Program Utama *)

  dengan parameter

  a

  15

  masukan/keluaran

  b

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

  S1 Teknik Informatika-Unijoyo

  25 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(‘ 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.

  S1 Teknik Informatika-Unijoyo

  26

  Contoh 5: Hasil Keluaran

  Hasil algoritma MENAMBAH_DUA dengan penggunaan parameter masukan adalah:

  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 S1 Teknik Informatika-Unijoyo

  27 Algoritma MENAMBAH_DUA { Program yang memperlihatkan efek penggunaan parameter masukan/keluaran } DEKLARASI a b

  , : integer procedure TambahDua x y

  (input/output , : 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 }

  Contoh 6: Prosedur

  DEKLARASI { tidak ada }

  dan program utama

  DESKRIPSI :

  dengan parameter

  x x

  • 2

  masukan/keluaran

  y y

  • 2 write(‘Nilai x dan y di akhir prosedur : ’)

  x write(‘ x = ‘, ) y write(‘ y = ‘, ) DESKRIPSI : a

  15 b

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

  S1 Teknik Informatika-Unijoyo

  28

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.

  S1 Teknik Informatika-Unijoyo

  29 Contoh 6: Hasil Keluaran

  Hasil algoritma MENAMBAH_DUA dengan penggunaan parameter masukan/keluaran adalah:

  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 x dan 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

  S1 Teknik Informatika-Unijoyo

  30

Summary [1]

  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) 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

  S1 Teknik Informatika-Unijoyo

  31 Summary [2]

  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)

  S1 Teknik Informatika-Unijoyo

  32 Daftar Pustaka 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

  S1 Teknik Informatika-Unijoyo

  33