ALGORTIMA DAN
ALGORTIMA DAN
PEMROGRAMAN
PEMROGRAMAN
PROSEDUR
PROSEDUR
Pendahuluan
Pendahuluan
Dalam memprogram yang besar perlu
Dalam memprogram yang besar perlu
memecah program menjadi pbeberapa
memecah program menjadi pbeberapa
subprogram yang lebih kecil. Tiap subprogram
subprogram yang lebih kecil. Tiap subprogram
kadangkala cukup independen dari program
kadangkala cukup independen dari program
utama sehingga programnya dapat dirancang
utama sehingga programnya dapat dirancang
tanpa memepertimbangkan konteks tempat ia
tanpa memepertimbangkan konteks tempat ia
digunakan. Tiap subprogram disebut modul.
digunakan. Tiap subprogram disebut modul.
Dalam bahasa pemrograman modul disebut
Dalam bahasa pemrograman modul disebut
rutin, prosedur atau fungsi.
Pendefinisian
Pendefinisian
Prosedur
Prosedur
Prosedur adalah modul program yang
Prosedur adalah modul program yang
mengerjakan tugas/aktifitas yang spesifik dan
mengerjakan tugas/aktifitas yang spesifik dan
menghasilkan suatu efek netto. Suatu efek
menghasilkan suatu efek netto. Suatu efek
netto diketahui dengan membandingkan
netto diketahui dengan membandingkan
keadaan awal dengan keadaan akhir pada
keadaan awal dengan keadaan akhir pada
pelaksanaaan sebuah prosedur.
pelaksanaaan sebuah prosedur.
Struktur prosedur sama dengan struktur
Struktur prosedur sama dengan struktur
algoritma yang sudah kita kenal, yaitu ada
algoritma yang sudah kita kenal, yaitu ada
bagian judul (header) yang terdiri dari nama
bagian judul (header) yang terdiri dari nama
prosedur, deklarasi dan badan prosedur.
prosedur, deklarasi dan badan prosedur.
Notasi
Notasi
Algoritma
Algoritma
ProcedureProcedureNamaprosedurNamaprosedur
{spesifikasi prosedur berisi penjelasan tentang apa
{spesifikasi prosedur berisi penjelasan tentang apa
yang dilakukan oleh prosedur ini}
yang dilakukan oleh prosedur ini}
{IS : keadaan awal sebelum prosedur dilaksanakan }
{IS : keadaan awal sebelum prosedur dilaksanakan }
{FS : keadaan akhir sesudah prosedur dilaksanakan}
{FS : keadaan akhir sesudah prosedur dilaksanakan}
Deklarasi :Deklarasi :
{semua nama yang dipakai dalam prosedur dan hanya
{semua nama yang dipakai dalam prosedur dan hanya
berlaku lokal di dalam prosedur}
berlaku lokal di dalam prosedur}
Deskripsi :Deskripsi :
{badan prosedur, berisi kumpulan instruksi}
Contoh
Contoh
:
:
procedureprocedureHitung_rataHitung_rata
{mengitung rata
{mengitung rata--rata N buah bilangan bulat yang dibaca dari rata N buah bilangan bulat yang dibaca dari piranti masukan}
piranti masukan}
{IS: sembarang}
{IS: sembarang}
{FS: nilai rata
{FS: nilai rata--rata seluruh bilangan bulat dicetak di piranti rata seluruh bilangan bulat dicetak di piranti keluaran}
keluaran}
Deklarasi : Deklarasi : N:
N: integerinteger {jumlah data, > 0} {jumlah data, > 0} x:
x: integerinteger {bilangan bulat yg dibaca dari papan kunci} {bilangan bulat yg dibaca dari papan kunci} k:
k: integerinteger {pencacah banyaknya pengulangan} {pencacah banyaknya pengulangan} jumlah :
jumlah : integerinteger {pencaca{pencacahhjumlah nilai} jumlah nilai} rerata :
rerata : integerinteger {rata-{rata-rata nilai}rata nilai}
Lanjutan
Lanjutan
Deskripsi :
Deskripsi :
read
read
(N)
(N)
Jumlah
Jumlah
Å
Å
0
0
for
for
k
k
Å
Å
1
1
to
to
N
N
do
do
read
read
(x)
(x)
jumlah
jumlah
Å
Å
jumlah + x
jumlah + x
endfor
endfor
rerata
rerata
Å
Å
jumlah/N
jumlah/N
write
Pemanggilan Prosedur
Pemanggilan Prosedur
Prosedur bukan program yang berdiri
Prosedur bukan program yang berdiri
sendiri, jadi tidak dapat dieksekusi
sendiri, jadi tidak dapat dieksekusi
secara langsung. Ini berarti instruksi
secara langsung. Ini berarti instruksi
-
-instruksi di dalam prosedur baru dapat
instruksi di dalam prosedur baru dapat
dilaksanakan bila prosedur tersebut
dilaksanakan bila prosedur tersebut
diakses dengan cara memanggil
diakses dengan cara memanggil
namanya dari program pemanggil
namanya dari program pemanggil
(program utama atau modul lain).
(program utama atau modul lain).
Contoh
Contoh
:
:
Algoritma Rata_RataAlgoritma Rata_Rata
{program utama untuk menghitung
{program utama untuk menghitung ratarata--rata N buah rata N buah
bilangan bulat}
bilangan bulat}
Deklarasi : Deklarasi : Procedure
ProcedureHitung_RataHitung_Rata
{mengitung rata
{mengitung rata--rata N buah bilangan bulat yang rata N buah bilangan bulat yang dibaca dari piranti masukan}
dibaca dari piranti masukan}
Deskripsi :Deskripsi : write
write(‘(‘menghitung ratamenghitung rata--rata N buah bilangan bulatrata N buah bilangan bulat’’) ) Hitung_Rata
Hitung_Rata write
Nama Global atau Lokal
Nama Global atau Lokal
NamaNama--nama yang dideklarasikan di dalam prosedur nama yang dideklarasikan di dalam prosedur hanya dikenal di dalam badan prosedur ang
hanya dikenal di dalam badan prosedur ang
bersangkutan dan ini dikatakan bersifat
bersangkutan dan ini dikatakan bersifat ‘‘lokallokal’’. .
NamaNama--nama yang dideklarasikan di dalam program nama yang dideklarasikan di dalam program utama dikatakan bersifat
utama dikatakan bersifat ‘‘globalglobal’’, yang dapat , yang dapat
digunakan dibagian manapun di dalam program baik di
digunakan dibagian manapun di dalam program baik di
program utama maupun di dalam prosedur.
program utama maupun di dalam prosedur.
Pengunaan nama akan dideklarasikan global atau Pengunaan nama akan dideklarasikan global atau lokal bergantung kepada penggunaan nama tersebut.
lokal bergantung kepada penggunaan nama tersebut.
Bila suatu nama digunakan diseluruh bagian program,
Bila suatu nama digunakan diseluruh bagian program,
maka nama tersebut harus dideklarasikan global.
maka nama tersebut harus dideklarasikan global.
Lanjutan
Lanjutan
..
..
Bila nama tersebut hanya digunakan di dalam
Bila nama tersebut hanya digunakan di dalam
prosedur saja maka sebaiknya di deklarasikan
prosedur saja maka sebaiknya di deklarasikan
sebagai peubah lokal (walaupun global masih
sebagai peubah lokal (walaupun global masih
tetap benar).
tetap benar).
Usahakan menggunakan nama
Usahakan menggunakan nama
-
-
nama global
nama global
sesedikit mungkin.
sesedikit mungkin.
Penggunaan nama lokal akan memberikan
Penggunaan nama lokal akan memberikan
keuntungan sebab nama lokal membuat
keuntungan sebab nama lokal membuat
program lebih elegan, dan dapat
program lebih elegan, dan dapat
meminimumkan usaha pencarian kesalahan
meminimumkan usaha pencarian kesalahan
yang disebabkan oleh nama tersebut.
Parameter
Parameter
Penggunaan parameter merupakan
Penggunaan parameter merupakan
mekanisme pertukaran informasi antara
mekanisme pertukaran informasi antara
prosedur (atau fungsi) dan titik di mana ia
prosedur (atau fungsi) dan titik di mana ia
dipanggil.
dipanggil.
Tiap item data ditransfer antara parameter
Tiap item data ditransfer antara parameter
aktual dan parameter formal yang bersesuaian.
aktual dan parameter formal yang bersesuaian.
Parameter aktual adalah parameter yang
Parameter aktual adalah parameter yang
disertakan pada waktu pemanggilan.
disertakan pada waktu pemanggilan.
Parameter formal adalah parameter yang
Parameter formal adalah parameter yang
dideklarasikan di dalam header prosedur itu
dideklarasikan di dalam header prosedur itu
sendiri.
sendiri.
Jenis
Jenis
Parameter
Parameter
Tiga jenis parameter formal yang
Tiga jenis parameter formal yang
disertakan di dalam prosedur :
disertakan di dalam prosedur :
1.
1.
Parameter Input
Parameter Input
2.
2.
Parameter Output
Parameter Output
3.
Parameter masukan (input
Parameter masukan (input
parameter)
parameter)
Parameter yang nilainya berlaku sebagai masukan Parameter yang nilainya berlaku sebagai masukan untuk prosedur yang disebut parameter
untuk prosedur yang disebut parameter nilainilai(value (value parameter/parameter by value).
parameter/parameter by value).
Nilai parameter aktual diisikan (assign) ke dalam Nilai parameter aktual diisikan (assign) ke dalam parameter formal yang bersesuaian.
parameter formal yang bersesuaian.
Nilai yang dinyatakan oleh parameter masukan tidak Nilai yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam arah sebaliknya.
dapat dikirim dalam arah sebaliknya.
Perubahan nilai parameter di dalam badan prosedur Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai parameter aktual.
tidak mengubah nilai parameter aktual.
Nama parameter aktual boleh berbeda dengan nama Nama parameter aktual boleh berbeda dengan nama parameter formal yang bersesuaian.
parameter formal yang bersesuaian.
Contoh
Contoh
:
:
ProcedureProcedureSatu (inputSatu (inputx,y : integerx,y : integer))
{contoh prosedur dengan parameter formal berjenis
{contoh prosedur dengan parameter formal berjenis
parameter masukan}
parameter masukan}
{IS : nilai x dan y sudah terdefinisi}
{IS : nilai x dan y sudah terdefinisi}
{FS : nilai x dan y masing
{FS : nilai x dan y masing--masing dinaikan satu lalu masing dinaikan satu lalu dicetak}
dicetak}
Deklarasi :
Deklarasi : { tidak ada }{ tidak ada }
Deskripsi : Deskripsi : x x ÅÅx + 1 x + 1 y y ÅÅy + 1 y + 1 write write(x,y)(x,y)
Program Utama
Deskripsi :
Satu (4, 10) {pemanggilan Satu yang pertama kali} read (a,b)
Satu (a,b) {pemanggilan Satu yang kedua kali} Satu (a+5,17) {pemanggilan Satu yang ketiga kali} Deklarasi :
a,b : integer
Procedure Satu (input x,y : integer)
{contoh prosedur dengan parameter formal berjenis parameter masukan}
Algoritma PQR
{program utama untuk memanggil prosedur satu}
Hasil
Hasil
Pada pemanggilan pertama,
Pada pemanggilan pertama,
menghasilkan x = 4 dan y = 11
menghasilkan x = 4 dan y = 11
Pada pemanggilan kedua, nilai x dan y
Pada pemanggilan kedua, nilai x dan y
tergantung pada pemasukan data nilai a
tergantung pada pemasukan data nilai a
dan b, misalkan a =10 dan b =21, maka x
dan b, misalkan a =10 dan b =21, maka x
=11 dan y=22. dst
Parameter keluaran
Parameter keluaran
(output parameter)
(output parameter)
Parameter yang menampung keluaran yang dihasilkan Parameter yang menampung keluaran yang dihasilkan oleh prosedur, yang disebut dengan parameter
oleh prosedur, yang disebut dengan parameter acuan acuan
(reference parameter/parameter by reference).
(reference parameter/parameter by reference).
Bila prosedur yang mengandung parameter keluaran Bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program
dipanggil, nama parameter aktual di dalam program
pemanggil menggantikan nama parameter formal yang
pemanggil menggantikan nama parameter formal yang
bersesuaidi dalam prosedur.
bersesuaidi dalam prosedur.
Bila di dalam prosedur parameter aktual diisi suatu Bila di dalam prosedur parameter aktual diisi suatu nilai, nilai ini akan tetap berada di dalam parameter
nilai, nilai ini akan tetap berada di dalam parameter
aktual meskipun prosedur selesai dilaksanakan.
aktual meskipun prosedur selesai dilaksanakan.
Contoh : Contoh :
Prosedure dua dengan parameter keluaran : Prosedure dua dengan parameter keluaran :
Procedure
ProcedureDua (inputDua (inputx : integerx : integer, , outputoutputy : y : realreal))
{contoh prosedur dengan parameter formal berjenis
{contoh prosedur dengan parameter formal berjenis
parameter keluaran}
parameter keluaran}
{IS : nilai x sudah terdefinisi}
{IS : nilai x sudah terdefinisi}
{FS : y berisi nilai x ditambah satu dan dikalikan tiga}
{FS : y berisi nilai x ditambah satu dan dikalikan tiga}
Deklarasi : Deklarasi : { tidak ada } { tidak ada } Deskripsi : Deskripsi : x x ÅÅx + 1 x + 1 y y ÅÅx + 1 x + 1
Program Utama
Program Utama
Algoritma XYZ{program utama untuk memanggil prosedur dua}
Algoritma XYZ{program utama untuk memanggil prosedur dua}
Deklarasi :
Deklarasi :
a
a,b : ,b : integerinteger
Procedure
ProcedureDua (Dua (inputinputx : x : integerinteger, , outputoutputy : y : realreal) )
{contoh prosedur dengan parameter formal berjenis parameter
{contoh prosedur dengan parameter formal berjenis parameter
keluaran}
keluaran}
Deskripsi :
Deskripsi :
dua
dua(4, b) (4, b) {pemanggilan dua yang pertama kali} {pemanggilan dua yang pertama kali}
write
write(b) (b)
read
read(a) (a) dua
dua(a, b) (a, b) {pemanggilan dua yang pertama kali} {pemanggilan dua yang pertama kali}
write
write(b) (b)
dua
dua(a+5,b) (a+5,b) {pemanggilan dua yang ketiga kali}{pemanggilan dua yang ketiga kali}
write write(b)(b)
Parameter masukan/keluaran
Parameter masukan/keluaran
(input/output parameter)
(input/output parameter)
Parameter yang berfungsi sebagai masukan
Parameter yang berfungsi sebagai masukan
sekaligus keluaran bagi prosedur tersebut,
sekaligus keluaran bagi prosedur tersebut,
yang disebut dengan parameter
yang disebut dengan parameter
acuan
acuan
(reference parameter/parameter by reference).
(reference parameter/parameter by reference).
Digunakan pada aplikasi yang informasinya
Digunakan pada aplikasi yang informasinya
dikirim dalam kedua arah.
dikirim dalam kedua arah.
Bila parameter aktual diubah nilainya di dalam
Bila parameter aktual diubah nilainya di dalam
badan prosedur, makasesudah pemanggilan
badan prosedur, makasesudah pemanggilan
prosedur nilai parameter dititik pemanggilan
prosedur nilai parameter dititik pemanggilan
juga berubah.
Contoh :
Contoh :
Prosedure tiga dengan parameter
Prosedure tiga dengan parameter
masukan/keluaran
masukan/keluaran
Procedure
Proceduretiga (tiga (input/outputinput/outputx,y : integerx,y : integer))
{contoh prosedur dengan parameter formal berjenis parameter
{contoh prosedur dengan parameter formal berjenis parameter
masukan/keluaran}
masukan/keluaran}
{IS : nilai x dan y sudah terdefinisi}
{IS : nilai x dan y sudah terdefinisi}
{FS : nilai x dan y bertambah masing
{FS : nilai x dan y bertambah masing--masing empat dan dicetak}masing empat dan dicetak} Deklarasi : Deklarasi : { tidak ada } { tidak ada } Deskripsi : Deskripsi : x x ÅÅx + 4 x + 4 y y ÅÅy + 4 y + 4 write
write((‘‘nilai x dan y diakhir prosedur adalah nilai x dan y diakhir prosedur adalah ‘‘) ) write
write((‘‘x = x = ‘‘,x) ,x)
write
write((‘‘y = y = ‘‘,y) ,y)
Program Utama
Program Utama
Algoritma ABC
Algoritma ABC{program utama untuk memanggil prosedur tiga}{program utama untuk memanggil prosedur tiga} Deklarasi :
Deklarasi : a,b : a,b : integerinteger Procedure
Proceduretiga (input/outputtiga (input/outputx,y : integerx,y : integer))
{contoh prosedur dengan parameter formal berjenis parameter
{contoh prosedur dengan parameter formal berjenis parameter
masukan/keluaran} masukan/keluaran} Deskripsi : Deskripsi : A A ÅÅ1515 B B ÅÅ10 10 write
write((‘‘nilai a dan b sebelum pemanggilan prosedur nilai a dan b sebelum pemanggilan prosedur ‘‘) ) write
write((‘‘a = a = ‘‘,a) ,a)
write
write((‘‘b = b = ‘‘,b) ,b) tiga (a, b) tiga (a, b)
{pemanggilan tiga pertama kali }
{pemanggilan tiga pertama kali }
write
write((‘‘nilai a dan b sesudah pemanggilan prosedur nilai a dan b sesudah pemanggilan prosedur ‘‘) ) write
write((‘‘a = a = ‘‘,a) ,a)
write
write((‘‘b = b = ‘‘,b) ,b)
Jika program di atas dieksekusi maka menghasilkan :
Jika program di atas dieksekusi maka menghasilkan :
nilai a dan b sebelum pemanggilan prosedur
nilai a dan b sebelum pemanggilan prosedur
a = 15
a = 15
B = 10
B = 10
nilai x dan y di akhir prosedur adalah
nilai x dan y di akhir prosedur adalah
x = 19
x = 19
y = 14
y = 14
nilai a dan b sesudah pemanggilan prosedur
nilai a dan b sesudah pemanggilan prosedur
a = 19
a = 19
B = 14