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 Te ori P rosedur diawali dengan kata cadangan P rocedure 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. P erbedaan 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. P ada 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 : je nis hasil; Atau FUNCTION nama (fo rmal parameter : jenis ) : je nis_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 KERJ A 1. Buatlah program dengan menggunakan prosedur untuk menghitung luas persegi panjang tanpa parameter masukan. Simpan file dengan nama NamaAnda_pro se dur1 .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_pro se dur3 .pas 4. Modifikasi program prosedur3 anda dengan menggunakan fungsi.
Tug as 1. Tulislah prosedur yang menghasilkan nilai rata – rata sekumpulan bilangan bulat yang dibaca secara berulang-ulang dari piranti masukan (akhir pembacaan adalah 9999). P rosedur memiliki parameter keluaran, yaitu nilai rata-rata yang dihasilkan. 2. Modifikasi tugas 1 dengan menggunakan fungsi!
4
BAB III PEMB AHASAN 1. Cara
penyelesaian
program
pertama
menggunakan
prosedur
tanpa
parameter masukan : Program Luas_ Persegi_P anjang; uses crt; procedure hitungluas; var P , L : real; begin clrscr; writeln('
P rogram Luas P ersegi P anjang
');
writeln; write('Masukan P anjang :');readln(P); write('Masukan Lebar :');readln(L); writeln; writeln('Luas Persegi Panjang : ',P * L:0:2); end; {program utama} Begin; clrscr; hitungluas; readkey; end. P rogram 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. P ada 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 P rosedur2 ; 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 P anjang =’); readln(P); Writeln(‘masukan nilai Lebar
=’); readln(L);
Hitungluas (P,L); Writeln(‘P ersegi 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. P ada
program utama, ada variabel globalnya yaitu P untuk panjang dan L untuk lebar. Ada juga inputan untuk memasukan nilai panjang dan lebar. P ada
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 P anjang :');readln(P ); write('Masukan Lebar :');readln(L); hitungluas(P,L,hasil); writeln('Luas P ersegi Panjang : ',hasil:0:2); readkey; end.
Pada program diatas, pernyataan hitungluas(a,b:real; var c:real); merupakan parameter
keluaran. P arameter 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 P anjang =’); readln(P); Writeln(‘masukan nilai Lebar
=’); readln(L);
Writeln(‘P ersegi 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 HitungL uas(P ,L : integer) :integer;. Hasil luas didapatkan saat program membaca H itungLuas := P * L;, dimana penulisan statment Writeln(‘P ersegi dengan panjang
=’,P,’dan lebar
=’,L,’memiliki luas
=’,HitungLuas(P,L)); akan memunculkan output luas hasil perkalian P dan L.
9
TUGAS : 1. Cara penyelesa ian tugas pertama dengan menggunakan prosedur program mencari_ rata2_procedure; uses crt; var Rata:real; procedure Rata_R ata(R ata:real); var n,x,i,tota l :intege r; jaw ab: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('Masuka n lagi atau tidak? (y/t) : '); read(jaw ab); end; until (jawab='t') or (i>9998); Rata:=total/i;writeln; Writeln('Rata-rata
total
bilangan
bulat
yang
dimasukkan
',Rata:0:2);rea dln; end; begin Rata_ Rata(Rata); readkey; end.
10
:
Pada
program
pengulangan
yang
ini
kita
akan
menggunakan
membahas
procedure
dan
tentang
program
memiliki parameter
masukan yaitu R ata_Rata(Rata:real);. P arameter 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
pemanggilan
prosedur
menginputkan
data
dalam
perameter
tersebut. deret
Di
yang
yang
sini user diinginkan.
dimasukan
pada
saat
akan diarahkan
untuk
Program
terus
akan
menanyakan user apakan user akan terus melanjutkan penginputan data atau tidak (y/t) hingga batas yang telah ditentukan yaitu sebanyak 9999 kali. P ada saat penginputan data selesai, maka bilangan-bilangan yang dimasukan tadi akan di jumlah kan dan di bagi dengan banyaknya bilangan yang dimasuka n untuk mencari nila i rata-ratanya.
11
2. Cara penyelesa ian tugas kedua dengan mengguna kan fungsi program mencari_ rata2_fungsi; uses crt; var Rata:real; function R ata2:real; var n,x,i,tota l :integer; ulang:char; begin clrscr; writeln('__ __ _=====P rogram Rata-R ata B ilangan B ulat=====___ __ '); writeln; writeln; total:= 0; i:=0; writeln; repeat begin i:=i+1; write('M asukka n bilangan ke-',i,' : ');readln(x); total:=total+x; write('M asukan lagi atau tidak? (y/t) : '); read(ulang); end; until (ulang=' t') or (i>9998); Rata:=total/i;write ln; Writeln('Rata -ra ta : ',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). P ada 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 kebutuha n dan seni memprogra m.
14
BAB V DAFTAR PUSTAKA
•
http://blac klusters oldiers. multiply.c om/journa l/ite m/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&Ite mid= 33
15
BAB VI LAMPIRAN
1. Program P ertama
2. Program K edua
16
3. Program K etiga
4. Program K eempat
17
TUGAS 1. Tugas P ertama
2. Tugas K edua
18
19