Prosedur

Prosedur Siap Pakai
Prosedur (procedure) merupakan suatu blok kode program yang disusun untuk menyelesaikan masalah umum. Misalkan dalam bahasa pemrograman pascal dikenal prosedur-prosedur seperti writeln, clrscr, textbackground, textcolor, readln, dsb. Pemanggilan prosedur-prosedur tersebut bervariasi antara satu prosedur dengan prosedur yang lainnya. Misalkan prosedur clrscr yang berfungsi untuk menghapus seluruh tulisan di layar monitor dan meletakkan posisi kursor di X=0 dan Y=0. Prosedur clrscr dalam pemanggilannya tidak membutuhkan parameter; prosedur writeln/write berufungsi untuk mencetak keluaran (output) ke layar monitor. Prosedur writeln/write bisa dipanggil dengan mengikutkan parameter atau tanpa mengikutkan parameter. Sebagai contoh diinstruksikan ke penterjemah (compiler) Pascal untuk memindahkan posisi kursor turun satu baris (Nilai Y Bertambah) dan X tetap di posisi 0 seperti terlihat pada kode berikut:

begin
  writeln;
end.

Pada kode di atas dipanggil prosedur writeln tanpa diikuti parameter. Pascal memahami bahwa bila pemanggilan prosedur writeln tanpa parameter maka posisi kursor di monitor berubah yaitu kursor kembali ke posisi X=0 (Carriage Return) dan Posisi Y tambah Satu – Turun Satu Baris (Line Feed).

Contoh lainnya kita bisa menyuruh prosedur writeln untuk mencetak perkalian 10*10:

begin
   writeln(10*10);
end.

Kode di atas dapat dijelaskan bahwa kita memanggil prosedur writeln dengan mengirimkan parameter perkalian 10*10. Karena prosedur writeln merupakan prosedur yang sudah siap pakai (built in procedure) atau sudah didefenisikan oleh pascal makan detail dari instruksi di dalam prosedur writeln tidak kita ketahui dengan pasti.

Kita juga bisa menyuruh perintah writeln untuk mencetak untaian karakter (string) “Respati Yogyakarta”:

begin
    writeln(‘Respati Yogyakarta’);
end.

Atau gabungan dari nilai dan konstata seperti berikut:
begin
   writeln(10*10,’Respati Yogyakarta’);
end.

Keluwesan prosedur writeln tentu akan sangat membantu dalam pemberian perintah ke komputer.

Prosedur Buatan Pemakai
Pascal memungkinkan programmer untuk membuat prosedur sendiri (user defined procedure). Tata cara (syntax) pendeklarasian prosedur buatan pemakai adalah:

procedure namaprosedur([par1,par2,par3,…parn]);
{deklarasi variabel}
{deklarasi prosedur}
{deklarasi fungsi}
{deklarasi konstanta}
{deklarasi label}

   begin
      <pernyataan>
   end;

Prosedur yang telah dikelarasikan selanjutnya dapat dipanggil dari program utama atau dari prosedur itu sendiri atau prosedur lainnya.

Berikut ini akan dibuat suatu prosedur untuk mencetak alamat Unriyo Yogyakarta:

Program CetakAlamat;
uses crt;
procedure Alamat();
     begin
     writeln(‘Universitas Respati Yogyakarta’);
     writeln(‘Jln.Laksda Adisucipto Km.6,3 Depok, Sleman, Yogyakarta’);
     end;

Begin
     clrscr;
     {Memanggil Prosedur Alamat}
     Alamat();
End.

Prosedur Berparameter
Prosedur yang diberi tugas khusus dapat menerima parameter sesuai dengan kebutuhan. Misalkan terdapat diinginkan prosedur untuk mencetak bilangan 1 s.d N. Disini nilai N tidak pasti, bisa 10, 20, 100. Untuk itu pada saat pemanggilan prosedur kita kirimkan nilai N dan prosedur selanjutnya memproses pencetakan angka 1 s.d N.


Program CetakAngka;
Uses Crt;

Procedure CetakAngka1Sd(N: Byte);
Var
  I: Byte; {Deklarasi Lokal}
 Begin
 For I:=1 To N Do
  writeln(I);
 End;

{Program Utama}
Begin
 {Bersihkan layar}
 clrscr;
 {Panggil Prosedur Cetak 1 s.d 20}
 CetakAngka1SD(20);
{Panggilan Lagi Prosedur Cetak Angka 1 s.d 100}
 CetakAngka1SD(100);
Readln; {Tunggu Penekanan Tombol Enter}
End.

Parameter Nilai dan Parameter Acuan
Secara umum parameter yang dikirimkan ke prosedur merupakan parameter nilai artinya nilai parameter tidak akan berubah setelah pemanggilan prosedur. Bila diinginkan perubahan nilai parameter setelah pemanggilan prosedur, parameter seperti ini disebut parameter acuan.

Buatlah prosedur untuk menghitung jumlah deret berikut:
1/1+1/2+1/3+…1/N
Diinginkan banyaknya N tidak pasti dan sekaligus hasil penjumlahan terlihat setelah pemanggilan prosedur. Dengan demikian dibutuhkan 2 (dua) buah parameter yaitu N (parameter nilai) dan Jumlah(parameter acuan).


Program Jumlah_Deret;
Uses Crt;

Procedur Jumlah (N : Byte; Var Jumlah : Real);
 Var
  I : Byte;
 Begin
   Jumlah:=0;
   For I:=1 To N Do
     Jumlah:=Jumlah + 1/I
 End;

Var
 Cacah_Data : Byte;
 Hasil : Real;
Begin
 clrscr;
 Cacah_Data:=10;
{Panggil Prosedur}
 Jumlah(Cacah_Data,Hasil);
 writeln(‘Jumlah Deret’,Hasil:8:2);
Readln;
End.

Lingkup Variabel
Lingkup variabel (variabel scope) menggambarkan daya akses dari variabel tersebut. Dalam Pascal terdapat 2 (dua) jenis ruang lingkup yaitu ruang lingkup global dan lokal. Ruang lingkup global menandakan bahwa variabel tersebut akan dikenali diseluruh kode program. Ruang lingkup lokal menandakan bahwa variabel tersebut hanya dikenal ditempatnya dideklarasikan.

Misalkan terdapat program seperti berikut:

Var
 IGlobal : Byte;

Procedure LokalSatu;
 Var
  ILokal1 : Byte;
 Begin
  ILokal1:=10;
  Writeln(ILokal1,IGlobal);
 End;

Procedure LokalDua;
 Var
  ILokal2 : Byte;
 Begin
  ILokal2:=20;
  Writeln(ILokal2,IGlobal);
 End;

{Program Utama}
Begin
 IGlobal:=10;
 Lokal;
End.

Pada kode di atas variabel IGlobal akan dikenali di seluruh kode program (baik di Program Utama, Prosedur LokalSatu, Prosedur LokalDua). Sedangkan variabel ILokal1 hanya akan dikenal di prosedur LokalSatu. Begitu juga variabel ILokal2 hanya akan dikenal di prosedur LokalDua.

Kita perhatikan lagi kode program berikut:

Program Lingkup_Lingkup;
Var
 I : Byte;
Procedure Terluar;
 Var
  ITerluar : Byte;
 Procedure Terdalam;
  Var
   ITerdalam : Byte;
  Begin
   ITerdalam:=20;
   writeln(I,ITerluar,ITerdalam);
  End;
 Begin
   ITerluar:=10;
   {Panggil Prosedur Terluar}
 End;

{Program Utama}
Begin
 I :=5;
 Terluar;
End.

Pada kode program di atas I bersifat global artinya akan dikenali di program utama, prosedur terluar dan prosedur terdalam. Variabel ITerluar akan bersifat global di prosedur tersebut sehingga variabel tersebut akan dikenali prosedur-prosedur yang dideklarasikan dalam prosedur tersebut. Namun variabel ITerluar tidak akan dikenali oleh Program Utama. Variabel ITerdalam hanya akan dikenali oleh Prosedur Terdalam.

Prosedur Rekursif
Prosedur yang memanggil dirinya sendiri disebut sebagai prosedur rekursif. Misalkan terdapat kode program seperti berikut ini:

Procedure Cetak;
 Begin
  writeln(‘Respati’);
  {Prosedur Memanggil Dirinya Sendiri}
  Cetak;
 End;

{Program Utama}
Begin
 {Panggil Prosedur}
 Cetak;
End.

Kode program di atas dapat dijelaskan sebagai berikut:
1. Mulai
2. Panggil Prosedur Cetak
3. Cetak string ‘Respati’
4. Panggil Prosedur Cetak
5. Cetak string ‘Respati’
6. Panggil Prosedur Cetak
7. Cetak string ‘Respati’
8. dst

Pemanggilan terhadap dirinya sendiri akan tetap dilakukan Prosedur Cetak karena tidak ada pernyataan yang menghentikan pemanggilan. Pemanggilan ini akan terus berlangsung terus-menerus (continues call).
Untuk mengatasi masalah ini maka perlu dibuat suatu pernyataan yang membatasi pemanggilan prosedur. Misalkan kode program di atas kita ubah seperti berikut ini:


Var
I : Byte;
Procedure Cetak;
 Begin
 IF (I<=5) Then
  begin
  writeln('Respati');
  {Prosedur Memanggil Dirinya Sendiri}
  Cetak;
  I:=I+1;
 end;
 End;

{Program Utama}
Begin
I:=1;
 {Panggil Prosedur}
 Cetak;
End.

Pada kode di atas prosedur Cetak hanya akan dipanggil sebanyak 5x seperti yang dinyatakan dalam kondisi IF (I<=5). Jika I>5 maka prosedur Cetak tidak akan dipanggil lagi. Umumnya ditentukan suatu kondisi yang memberhentikan pemanggilan prosedur pada dirinya sendiri.

Parameter Bertipe Array
Parameter bertipe array dapat dikirimkan ke prosedur dengan sedikit perbedaan dari parameter bertipe konvesional (byte, word, integer, real).

Program Jumlah_Data;
Const
 N=100;
Type
 Data : Array[1..N] Of Single;
Var
 AData : Data;

Procedure Jumlah(DataA : Data,Cacah:Byte)’
Begin
  For I:=1 To N Do
   Jlh:=Jlh+DataA[I];
  writeln(‘Jumlah Data Adalah’,Jlh:12:0);
End;

{Program Utama}
Begin
 {masukkan data}
 AData[1]:=70;
 AData[1]:=65.5;
 AData[1]:=89;
 AData[1]:=77;
 AData[1]:=64;
 AData[1]:=78.5;
 {Panggil Prosedur Jumlah Data}
 Jumlah(AData,6);
 Readln;
End.

Latihan Prosedur
Diketahui data berat mahasiswa Prodi Sistem Informasi seperti dibawah ini:
65,78,58,60,63,56,65,69,77
Buatlah prosedur untuk :
1.menginputkan N Buah data
2.menghitung jumlah, rata-rata dan standar deviasi berat
3.mengurutkan data secara menaik (ascending)
4.mengurutkan data secara menurun (descending)
5.melihat isi array

Untuk menyelesaikan kasus tersebut akan dibuat menu dalam bentuk pilihahan sehingga memudahkan dalam penggunaan program.
Menu Pilihan
1. Input Data
2. Tentukan Jumlah, Rata-Rata dan Standar Deviasi
3. Urutkan Data Secara Menaik
4. Urutkan Data Secara Menurun
5. Tampilkan Isi Array
Pilihan Anda [1..5] :


Program Statistik;
Uses Crt;
Const
 N = 100;

{Deklarasi Prosedur Input Berat}
Procedure Input_Berat(Berat_Mhs : Berat; N : Byte);
Var
 I : Byte;
Begin
  For I:=1 To N Do
   Begin
   write(‘Masukkan Berat Ke’,I,’:’);readln(Berat_Mhs[I]);
  End;
End;

{Program Utama}
Var
 Ulang : Boolean;
Pil : ShortInt;
Begin
 Ulang:=True;
 While (Ulang) Do
 Begin
  clrscr;
  gotoxy(25,1);write(‘M E N U U T A M A’);
  gotoxy(25,2);write(‘————————-‘);
  gotoxy(25,3);write(‘1. Input Data’);
  gotoxy(25,4);write(‘2. Tentukan Jumlah, Rata-Rata, Standar Deviasi’);
  gotoxy(25,5);write(‘3. Urutkan Berat Secara Menurun’);
  gotoxy(25,6);write(‘4. Urutkan Berat Secara Menaik’);
  gotoxy(25,7);write(‘5. Tampilkan Array’);
  gotoxy(25,8);write(‘0. Selesai’);
 pil:=-1;
 while (pil<0)or (pil>5) do
  begin
  gotoxy(25,9);write(‘Pilihan Anda [0..5] : ‘);readln(pil);
  end;
 {Uji Pilihan}
 Case (Pil) Of
 1 : Begin {Input Data Berat}

  End;
 2 : Begin {Tentukan Jumlah, Rata-Rata dan Standard Deviasi}

  End;
 3 : Begin {Urutkan Secara Ascending}

  End;
 4 : Begin {Urutkan Secara Descending}

  End;
 5 : Begin {Tampil Isi Array}

  End;
 0 : Begin {Program Selesai}

  End;
 End; {Akhir Case}
 End;{Akhir While}
End. {Akhir Program}

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: