Objektif:
1.
2.
3.
| Pertemuan 3
42
P3.1 Teori
Prosedur
Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai
subprogram (program bagian). Procedure diawali dengan kata cadangan Procedure di dalam
bagian deklarasi prosedur. 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.
Struktur prosedur terdiri dari 3 bagian yaitu :
o Judul
o Deklarasi
o Deskripsi/Badan Prosedur
procedure NAMA_PROSEDUR;
{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi
awal, kondisi akhir dan proses }
{ Kondisi awal : keadaan sebelum prosedur dilaksanakan }
{ Kondisi akhir : keadaan setelah prosedur dilaksanakan }
(* DEKLARASI *)
{ Semua nama yang dipakai prosedur didefinisikan di sini dan
hanya berlaku lokal }
(* DESKRIPSI *)
begin
{ badan prosedur, berisi semua langkah atau aksi }
end;
43
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.
Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang disertakan di
dalam prosedur, yaitu:
Prosedur dengan Parameter Masukan / Nilai
Parameter masukan adalah parameter yang nilainya berlaku sebagai masukan untuk prosedur.
Pada parameter masukan, nilai parameter aktual diisikan ke dalam parameter formal yang
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.
Struktur Prosedur dengan parameter masukan sebagai berikut :
procedure NAMA_PROSEDUR(parameter : tipe_param);
{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi
awal, kondisi akhir dan proses }
{ Kondisi awal : keadaan sebelum prosedur dilaksanakan }
{ Kondisi akhir : keadaan setelah prosedur dilaksanakan }
(* DEKLARASI *)
{ Semua nama yang dipakai prosedur didefinisikan di sini dan
hanya berlaku lokal }
(* DESKRIPSI *)
begin
{ badan prosedur, berisi semua langkah atau aksi }
end;
44
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.
Struktur Prosedur dengan parameter masukan sebagai berikut :
procedure NAMA_PROSEDUR(var parameter : tipe_param);
{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi
awal, kondisi akhir dan proses }
{ Kondisi awal : keadaan sebelum prosedur dilaksanakan }
{ Kondisi akhir : keadaan setelah prosedur dilaksanakan }
(* DEKLARASI *)
{ Semua nama yang dipakai prosedur didefinisikan di sini dan
hanya berlaku lokal }
(* DESKRIPSI *)
begin
{ badan prosedur, berisi semua langkah atau aksi }
end;
Prosedur Rekursif
Di dalam pascal diperkenankan memanggil procedurenya sendiri. istilah ini disebut
sebagai recursion. Dalam penggunaanya membutuhkan memory yang besar. Karena pada
setiap pemanggilan
45
Function
Blok fungsi hamper sama dengan blok prosedur, hanya fungsi harus dideklarasikan
dengan tipenya. Tipe deklarasi ini menunjukan tipe hasil dari fungsi. Tipe tersebut
ditulis pada akhir deklarasi fungsi yang didahului dengan titik koma, sebagai berikut :
Function identifier( daftar-parameter): type;
Contoh :
Function factorial (var fak,hasil: integer) : integer;
Function dengan parameter nilai
Parameter dalam function dapat dikirimkan secara nilai atau secara acuan. Penulisan judul
function yang menggunakan parameter secara Nilai adalah :
Function besar(a,b : real) : real;
Function dengan parameter acuan
Penulisan judul function dengan menggunakan parameter secara acuan adalah sama dengan
procedure yaitu ditambah Var pada deklarasi parameter. Dengan demikian nilai parameter
acuan ini dapat digunakan sebagai hasil balik.
Sintaks :
Function jumlah(var a,b : integer) : integer;
Function tanpa parameter
Suatu function tanpa parameter berarti nilai balik yang akan dihasilkan merupakan nilai
yang sudah pasti. Jika pada
input pada
function dan function akan memberikan hasil balik sesuai dengan parameter
yang diberikan sehingga bisa diatur dari program pemanggil. Sedang pada function tanpa
parameter hasil dari function tidak dapat diatur. Sehingga function tanpa parameter jarang
digunakan.
Function Rekursi
Rekursi adalah dimana suatu function memanggil dirinya sendiri. Proses dapat dilihat pada
contoh berikut. Dimana fungsi faktor dipanggil oleh dirinya sendiri.
46
47
program procedure_memanggil_procedure_yang_lain;
uses crt;
procedure satu(a1: integer);
begin
writeln(' nilai a =',a1:2,' ada diprocedure
end;
procedure dua(a2: integer);
begin
writeln(' nilai a =',a2:2,' ada diprocedure
satu(a2);
end;
procedure tiga(a3: integer);
begin
writeln(' nilai a =',a3:2,' ada diprocedure
dua(a3);
end;
procedure empat(a4: integer);
begin
writeln(' nilai a =',a4:2,' ada diprocedure
tiga(a4)
end;
{modul Utama}
var
a : integer;
begin
clrscr;
write('nilai a=');readln(a);
empat(a);
readln;
end.
satu');
dua');
tiga');
empat');
48
Prosedur tersarang
program contoh_procedure_tersarang;
uses crt;
procedure satu;
{deklarasi procedure satu}
procedure dua;
begin
{awal procedure dua}
writeln('procedure dua ada di procedure satu');
end;
{akhir procedure dua}
procedure tiga;
begin
{awal procedure tiga}
writeln('procedure tiga ada di procedure satu');
end;
{akhir procedure tiga}
begin
{awal procedure satu}
writeln(' procedure satu');
dua;
{memanggil procedure dua}
tiga;
{memanggil procedure tiga}
end;
{akhir procedure satu}
{modul utama}
begin
clrscr;
writeln(' modul utama');
satu;
{memanggil procedure satu}
readln;
end.
Prosedur rekursif
program procedure_memanggil_dirinya_sendiri;
uses crt;
var
I : integer;
procedure rekursi;
begin
writeln('pemangilan procedure ke-',i:5);
i:=i+1;
if i < 5 then rekursi;
end;
{modul utama}
begin
clrscr;
i:=1;
rekursi;
readln;
end.
49
50
Function Rekursif
program function_memanggil_funnction_yg_lain;
uses crt;
function faktor(bilangan : integer) : real;
begin
if bilangan=0 then
faktor:=1
else
faktor:=faktor(bilangan-1)*bilangan;
end;
var
n : integer;
begin
write('berapa faktorial =');readln(n);
writeln(N:5,' faktorial =',faktor(n):9:0);
readln;
end.
51
P3.3 Latihan
Kerjakan tugas-tugas di bawah ini sebelum praktikum dimulai.
1.
2.
Buatlah algoritma untuk membuat bentuk belah ketupat dari deretan angka
berdasarkan batas nilai yang dimasukkan melalui piranti masukan dengan
menggunakan Prosedur!
Contoh:
Masukkan batas nilai: 4
Hasil belah ketupat deretan angka:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
2.
Munir R, Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung:
Informatika, 2003.
3.
52