BAB I TUJUAN DAN LANDASAN TEORI 1. Tujuan 1. Dapat memahami konsep prosedur dan fungsi. 2. Mampu membuat prosedur dan fungsi baik dengan parameter maupun tanpa parameter. 3. Mampu membedakan kapan menggunakan prosedur dan fungsi. 2. Landasan Teori Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya. Prosedur banyak digunakan pada program yang terstruktur, karena : 1. Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur. 2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan. Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block. Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja. Bentuk Umum header suatu procedure adalah : PROCEDURE nama; Atau PROCEDURE nama (formal parameter : jenis); Jika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus dituliskan pada bagian deklarasi. Contoh : Misal akan dibuat suatu procedure untuk menentukan bilangan bulat terbesar diantara tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut : 1
PROCEDURE maksimum; VAR max : integer; BEGIN IF a > b THEN max := a ELSE max := b; IF c > max THEN max := c; WRITELN(max); END. Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya atau jenis hasilnya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Pada bahasa Pascal dikenal beberapa fungsi, misalkan : abs, pred, sqrt, sqr, succ dan sebagainya. Fungsi-fungsi tersebut biasanya dikenal dengan Built in Function. Sedangkan function yang akan bicarakan disini adalah fungsi yang kita buat sendiri. Berbeda dengan procedure, function merupakan modul program yang menghasilkan suatu kuantitas. Hal ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis data dari kuantitas yang dihasilkan. Secara umum bentuk header suatu function adalah : FUNCTION nama : jenis hasil; Atau FUNCTION nama (formal parameter : jenis ): jenis_hasil; Contoh : Akan dibuat suatu fungsi dengan nama MAX yang dapat menentukan integer terbesar di antara dua integer. Function MAX (x,y : integer) : integer; Begin If x < y then MAX := y ; Else MAX := x; End; Contoh : Function Hitung(Var A,B : integer): integer; Begin 2
Hitung := A + B; End; Var X,Y : integer; Begin Write( Nilai X? ); Readln(X); Write( Nilai Y? ); Readln(Y); Writeln; Writeln(X, +,Y, =,Hitung(X,Y)); End. Hasilnya : Nilai X? 2 Nilai Y? 3 2 + 3 = 5 3
BAB II LANGKAH KERJA 1. Buatlah program dengan menggunakan prosedur untuk menghitung luas persegi panjang tanpa parameter masukan. Simpan file dengan nama NamaAnda_prosedur1.pas 2. Modifikasi program diatas dengan menggunakan parameter masukan. Simpan file dengan nama NamaAnda_prosedur2.pas 3. Modifikasi soal diatas dengan menggunakan parameter keluaran. Simpan file dengan nama NamaAnda_prosedur3.pas 4. Modifikasi program prosedur3 anda dengan menggunakan fungsi. Tugas 1. Tulislah prosedur yang menghasilkan nilai rata rata sekumpulan bilangan bulat yang dibaca secara berulang-ulang dari piranti masukan (akhir pembacaan adalah 9999). Prosedur memiliki parameter keluaran, yaitu nilai rata-rata yang dihasilkan. 2. Modifikasi tugas 1 dengan menggunakan fungsi! 4
BAB III PEMBAHASAN 1. Cara penyelesaian program pertama menggunakan prosedur tanpa parameter masukan : Program Luas_Persegi_Panjang; uses crt; procedure hitungluas; var P, L : real; begin clrscr; writeln(' Program Luas Persegi Panjang '); writeln; write('masukan Panjang :');readln(p); write('masukan Lebar :');readln(l); writeln; writeln('luas Persegi Panjang :',P* L:0:2); end; {program utama} Begin; clrscr; hitungluas; readkey; Program diatas sebenarnya tidak terlalu berbeda jauh dengan program tanpa menggunakan prosedur, karena prosedur diatas masih merupakan contoh yang paling sederhana dari prosedur dan tidak terdapat banyak perubahan dari program yang tidak menggunakan prosedur. Pada program diatas, HitungLuas merupakan nama prosedur yang digunakan. Pada tampilan output, program akan mengarahkan user untuk memasukan Panjang dan Lebar dari suatu persegi panjang lalu akan dihasilkan Luas dari persegi panjang tersebut. 5
2. Cara penyelesaian program kedua menggunakan parameter masukan : Program Prosedur2 ; Uses crt; Var P : integer; L : integer; Luas : integer; Procedure HitungLuas (P,L : integer) ; Begin Clrscr; Luas := P * L; End; Begin Clrscr; Writeln( masukan nilai Panjang = ); readln(p); Writeln( masukan nilai Lebar = ); readln(l); Hitungluas (P,L); Writeln( Persegi dengan panjang =,P, dan lebar =,L, memiliki luas =,luas); Readkey; End. Pada program diatas, output program akan meminta inputan data panjang dan lebar persegi. Hal tersebut dikarenakan, pada penulisan statement Procedure HitungLuas(P,L : integer); merupakan parameter masukannya. Parameter masukan digunakan untuk menampung nilai yang akan dijadikan masukan (input) ke dalam suatu prosedur, artinya, sebuah prosedur dapat menghasilkan nilai yang berbeda tergantung dari nilai dalam perameter yang dimasukan pada saat pemanggilan prosedur tersebut. Parameter ini diberi tipe datanya, misalkan integer. Di dalam procedure ada rumus untuk menghitung luas persegi panjang. Pada program utama, ada variabel globalnya yaitu P untuk panjang dan L untuk lebar. Ada juga inputan untuk memasukan nilai panjang dan lebar. Pada 6
saat procedure di panggil, HitungLuas(P, L); variabel global P berhubungan dengan variabel lokal P pada procedure. Dan L berhubungan dengan L. Pada saat kita menginputkan data pada program utama, variabel P dan L yang berhubungan akan masuk kedalam rumus luas yang ada pada procedure. Setelah proses perhitungan akan dilakukan dan akan di tampilkan Luas yang diinginkan. 3. Cara penyelesaian program ketiga menggunakan parameter keluaran : Program Luas_Pesegi_Panjang_2; uses crt; var P, L, hasil : real; procedure hitungluas(a,b:real; var c:real); begin c := a * b; end; {program utama} Begin; clrscr; write('masukan Panjang :');readln(p); write('masukan Lebar :');readln(l); hitungluas(p,l,hasil); writeln('luas Persegi Panjang :',hasil:0:2); readkey; end. Pada program diatas, pernyataan hitungluas(a,b:real; var c:real); merupakan parameter keluaran. Parameter keluaran digunakan untuk menampung nilai yang akan dijadikan keluaran (output) yang akan dikirimkan ke bagian yang memanggil prosedur tersebut, umumnya parameter ini digunakan untuk prosedur yang tidak memiliki nilai balik 7
(prosedur). Apabila kita sudah membuat parameter masukan dan parameter keluaran maka kita tidak perlu membuat variabel lokal lagi. Di sini parameter masukannya adalah Luas, dan variabel global yang berhubungan dengannya adalah Luas. Jadi hasil perhitungan Luas di dalam procedure berhubungan dengan Luas procedure yang dipanggil pada program utama akan menampilkan output Luas sebagai hasil perhitungan. 4. Cara penyelesaian langkah kerja ke-4 menggunakan FUNGSI : Program fungsi ; Uses crt; Var P : integer; L : integer; function HitungLuas(P,L : integer) :integer; Begin Clrscr; HitungLuas := P * L; End; Begin Clrscr; Writeln( masukan nilai Panjang = ); readln(p); Writeln( masukan nilai Lebar = ); readln(l); Writeln( Persegi dengan panjang =,P, dan lebar =,L, memiliki luas =,HitungLuas(P,L)); Readkey; End. Program diatas adalah program luas persegi panjang yang telah dimodifikasi menggunakan fungsi. Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya (kalau pada prosedur pada parameter yang dikirimkan secara acuan). Pada program diatas, nama fungsi tersebut adalah HitungLuas dan nilai yang dikirim balik berada pada nama fungsi tersebut. Sehingga nama fungsi ini harus digunakan untuk menampung 8
hasil yang akan dikirimkan dari fungsi. Fungsi tersebut diberi tipe data, function HitungLuas(P,L : integer) :integer;. Hasil luas didapatkan saat program membaca HitungLuas := P * L;, dimana penulisan statment Writeln( Persegi dengan panjang =,P, dan lebar =,L, memiliki luas =,HitungLuas(P,L)); akan memunculkan output luas hasil perkalian P dan L. 9
TUGAS : 1. Cara penyelesaian tugas pertama dengan menggunakan prosedur program mencari_rata2_procedure; uses crt; var Rata:real; procedure Rata_Rata(Rata:real); var n,x,i,total :integer; jawab:char; begin clrscr; writeln(' ======Program Rata-Rata Bilangan Bulat====== '); writeln; writeln; total:=0; i:=0; writeln; repeat begin i:=i+1; write('masukkan bilangan ke-',i,' :');readln(x); total:=total+x; write('masukan lagi atau tidak? (y/t) :'); read(jawab); end; until (jawab='t') or (i>9998); Rata:=total/i;writeln; Writeln('Rata-rata total bilangan bulat yang dimasukkan : ',Rata:0:2);readln; end; begin Rata_Rata(Rata); readkey; 10 end.
Pada program ini kita akan membahas tentang program pengulangan yang menggunakan procedure dan memiliki parameter masukan yaitu Rata_Rata(Rata:real);. Parameter masukan digunakan untuk menampung nilai yang akan dijadikan masukan (input) ke dalam suatu prosedur, artinya, sebuah prosedur dapat menghasilkan nilai yang berbeda tergantung dari nilai dalam perameter yang dimasukan pada saat pemanggilan prosedur tersebut. Di sini user akan diarahkan untuk menginputkan data deret yang diinginkan. Program akan terus menanyakan user apakan user akan terus melanjutkan penginputan data atau tidak (y/t) hingga batas yang telah ditentukan yaitu sebanyak 9999 kali. Pada saat penginputan data selesai, maka bilangan-bilangan yang dimasukan tadi akan di jumlah kan dan di bagi dengan banyaknya bilangan yang dimasukan untuk mencari nilai rata-ratanya. 11
2. Cara penyelesaian tugas kedua dengan menggunakan fungsi program mencari_rata2_fungsi; uses crt; var Rata:real; function Rata2:real; var n,x,i,total :integer; ulang:char; begin clrscr; writeln(' =====Program Rata-Rata Bilangan Bulat===== '); writeln; writeln; total:=0; i:=0; writeln; repeat begin i:=i+1; write('masukkan bilangan ke-',i,' :');readln(x); total:=total+x; write('masukan lagi atau tidak? (y/t) :'); read(ulang); end; until (ulang='t') or (i>9998); Rata:=total/i;writeln; Writeln('Rata-rata :',Rata:0:2);readln; end; begin Rata2; readkey; end. 12
Program sebenarnya tidak terlalu berbeda jauh dengan program pengulangan yang menggunakan procedure, bedanya pada program ini kita menggunakan fungsi sebagai struktur programnya. Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya (kalau pada prosedur pada parameter yang dikirimkan secara acuan). Pada program diatas, nama fungsi tersebut adalah Rata2 dan nilai yang dikirim balik berada pada nama fungsi tersebut. Sehingga nama fungsi ini harus digunakan untuk menampung hasil yang akan dikirimkan dari fungsi. Pada program tugas kedua ini, program akan terus menanyakan user apakan user akan terus melanjutkan memasukan input atau tidak (y/t) hingga batas yang telah ditentukan yaitu sebanyak 9999 kali. Pada saat penginputan data selesai, maka bilangan-bilangan yang dimasukan tadi akan di jumlah kan dan di bagi dengan banyaknya bilangan yang dimasukan untuk mencari nilai rataratanya. 13
BAB IV KESIMPULAN Prosedur artinya menuliskan nama prosedur, mendeklarasikan nama-nama konstanta, peubah dan tipe (jika ada), dan menjabarkan rangkaian aksi yang dilakukan. Parameter adalah nama-nama peubah yang dideklarasikan pada bagian header prosedur. Sebagian besar program memerlukan pertukaran data antara prosedur (atau fungsi) dan titik dimana ia dipanggil. Parameter dibagi menjadi dua yaitu parameter masukan dan parameter keluaran. Fungsi adalah subprogram yang memeberikan/mengembalikan (return) sebuah nilai dari tipe tertentu (tipe dasar atau tipe bentukan). Definisi fungsi di dalam program bersesuian dengan definisi fungsi di dalam matematika. Perbedaan anatara prosedur dan fungsi adalah fungsi digunakan apabila program mengembalikan sebuah nilai, sementara prosedur digunakan bila modul menghasilkan efek netto dari satu atau sekumpulan aksi. Namun di dalam praktek, sering perbedaan antara keduanya tidak jelas, karena sebuah prosedur dapat juga ditulis sebagai fungsi, demikian sebaliknya. Pemilihan apakah sebuah modul direalisasikan sebagai fungsi atau prosedur bergantung pada kebutuhan dan seni memprogram. 14
BAB V DAFTAR PUSTAKA http://blacklustersoldiers.multiply.com/journal/item/2 http://kur2003.if.itb.ac.id/file/if1282_ PemrogramanProsedural_Pertemuan 4_v01.pdf http://www.varia.web.id/2013/05/prosedur-dan-fungsi-padaalgoritma.html http://www.khabib.staff.ugm.ac.id/index.php?option=com_ content&task= view&id=82&itemid=33 15
BAB VI LAMPIRAN 1. Program Pertama 2. Program Kedua 16
3. Program Ketiga 4. Program Keempat 17
TUGAS 1. Tugas Pertama 2. Tugas Kedua 18
19