PROSEDUR & FUNGSI
PROSEDUR Prosedur Memasak Mie Kuah : Masukkan mie dalam 400cc (2 gelas) air mendidih, aduk selama 3 menit Siapkan bumbu, minyak bumbu, dan bubuk cabe ke dalam mangkok, sementara mie dimasak Tuangkan mie beserta kuahnya ke dalam mangkok yang sudah berisi bumbu, aduk sampai rata 4. Mie kuah siap untuk disantap PROSEDUR
procedure NamaProsedur (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 yang didefinisikan} ALGORITMA { badan prosedur, berisi urutan instruksi }
Prosedur Tanpa Parameter Prosedur untuk mencetak kata “Subrutin” sebanyak 100 kali Procedure CetakKata { Mencetak kata “Subrutin” } { K.Awal : sembarang } { K.Akhir : kata “Subrutin” tercetak } DEKLARASI { tidak ada } ALGORITMA write(‘Subrutin’)
Prosedur Tanpa Parameter Pemanggilan prosedur CetakKata program cetak_Subrutin DEKLARASI i, n : integer procedure cetakkata { Mencetak kata “Subrutin” } ALGORITMA read(n) for i = 1 to n do cetakkata endfor
Prosedur Tanpa Parameter Prosedur untuk menghitung luas segiempat dengan rumus luas = panjang x lebar procedure HitungLuasSegiempat { Menghitung luas segi empat dengan rumus L = panjang x lebar } { K.Awal : sembarang } { K.Akhir : luas segiempat tercetak} DEKLARASI panjang : real lebar : real luas : real ALGORITMA read(panjang,lebar) luas panjang * lebar write(luas)
Prosedur Tanpa Parameter Pemanggilan prosedur HitungLuasSegiempat program Segiempat { Menghitung luas n buah segiempat } DEKLARASI i, n : integer procedure HitungLuasSegiempat { Menghitung luas segi empat dengan rumus L = panjang x lebar } ALGORITMA read(n) for i = 1 to n do HitungLuasSegiempat endfor
Parameter Masukan Prosedur untuk menghitung luas segiempat dengan rumus luas = panjang x lebar procedure HitungLuasSegiempat(input panjang,lebar : real) { Menghitung luas segi empat dengan rumus L = panjang x lebar } { K.Awal : panjang dan lebar sudah terdefinisi nilainya } { K.Akhir : luas segiempat tercetak} DEKLARASI luas : real ALGORITMA luas panjang * lebar write(luas)
Parameter Masukan Pemanggilan prosedur HitungLuasSegiempat (versi 1) program Segiempat { Menghitung luas n buah segiempat } DEKLARASI i, n : integer panjang, lebar : real procedure HitungLuasSegiempat(input panjang,lebar : real) { Menghitung luas segi empat dengan rumus L = panjang x lebar } ALGORITMA read(n) for i = 1 to n do read(panjang, lebar) HitungLuasSegiempat(panjang,lebar) endfor
Parameter Masukan Pemanggilan prosedur HitungLuasSegiempat (versi 2) program Segiempat { Menghitung luas n buah segiempat } DEKLARASI i, n : integer p, l : real procedure HitungLuasSegiempat(input panjang,lebar : real) { Menghitung luas segi empat dengan rumus L = panjang x lebar } ALGORITMA read(n) for i = 1 to n do read(p, l) HitungLuasSegiempat(p,l) endfor
Parameter Keluaran Prosedur untuk menghitung luas segiempat dengan rumus luas = panjang x lebar procedure HitungLuasSegiempat(input panjang,lebar : real, output luas : real) { Menghitung luas segi empat dengan rumus L = panjang x lebar } { K.Awal : panjang dan lebar sudah terdefinisi nilainya } { K.Akhir : luas segiempat tercetak} DEKLARASI { tidak ada } ALGORITMA luas panjang * lebar
Parameter Keluaran Pemanggilan prosedur HitungLuasSegiempat program Segiempat { Menghitung luas n buah segiempat } DEKLARASI i, n : integer p, l, NilaiLuas : real procedure HitungLuasSegiempat(input panjang,lebar : real, output luas : real) { Menghitung luas segi empat dengan rumus L = panjang x lebar } ALGORITMA read(n) for i = 1 to n do read(p, l) HitungLuasSegiempat(p,l,NilaiLuas) write(NilaiLuas) endfor
Parameter Masukan/Keluaran Prosedur untuk menghitung x = x + 1 seperti prosedur Inc(x)dalam pemrograman Pascal procedure Inc(input/output x : integer) { Menaikkan nilai x sebesar 1 } { K.Awal : x sudah terdefinisi sebelumnya } { K.Akhir : nilai x bertambah 1} DEKLARASI { tidak ada } ALGORITMA x x + 1
Parameter Masukan/Keluaran Pemanggilan prosedur Inc program Cetak0Sampai10 { Mencetak nilai dari 0 sampai 10 } DEKLARASI x : integer procedure Inc(input/output x : integer) { Menaikkan nilai x sebesar 1 } ALGORITMA x 0 repeat write(x) Inc(x) until x > 10
Pemanggilan Prosedur Call by value Call by reference Pemanggilan prosedur yang hanya mempunyai parameter input Call by value Pemanggilan prosedur yang mempunyai parameter input/output Call by reference
Contoh : Call by value procedure pass_val(input j : integer) DEKLARASI { tidak ada } ALGORITMA j j + 1 write(j)
Pemanggilan prosedur pass_val program callbyvalue DEKLARASI i : integer procedure pass_val(input j : integer) ALGORITMA i 6 write(i) pass_val(i)
Contoh : Call by reference procedure pass_ref(input/output j : integer) DEKLARASI { tidak ada } ALGORITMA j j + 1 write(j)
Pemanggilan prosedur pass_ref program callbyreference DEKLARASI i : integer procedure pass_val(input/output j : integer) ALGORITMA i 6 write(i) pass_ref(i)
Skema Umum Prosedur Rekursi procedure C(input x : x_type) { prosedur yang memanipulasi nilai x } { K. Awal : x terdefinisi nilainya } { K. Akhir : kumpulan aksi yang memanipulasi nilai x dilakukan } DEKLARASI { variabel lokal, jika ada } ALGORITMA if P(x) then M(x) { basis } else S1(x) C(F(x)) { rekurens } S2(x) endif