PASCAL, Passing by value, Passing by reference

Halo ,,,
pada artikel kali ini, saya akan membahas mengenai Passing parameter yang terdapat pada PASCAL.  Pada PASCAL ada dua macam passing parameter, yaitu Pass By Value dan Pass By Reference. Sesuai dengan namanya, kedua passing parameter ini memiliki fungsi yang berbeda. Untuk lebih jelasnya langsung aja tancap ke TKP.

–> Pass By Value

Bila parameter dikirim secara value (nilai) , parameter formal di prosedur akan berisi nilai yang akan dikirimkan yang kemudian bersifat lokal di prosedur. Bila nilai parameter formal di prosedur tersebut berubah, tidak akan mempengaruhi nilai parameter nyata (nilai parameter nyata tetap, tidak berubah). Pengiriman secara nilai ini merupakan pengiriman searah, yaitu dari parameter nyata ke parameter formal, yang tidak dikirim balik dari parameter formal ke parameter nyata. Pengiriman parameter secara nilai ini juga dapat dikatakan dengan menyalin (copy) nilai variabel dan nilai itu diberikan ke variabel parameter. Prosedur bekerja pada salinan variabel, sehingga tidak mengubah parameter aktualnya.

Karakteristik dari  Pass by Value:

  1. Data yang dikirim dari parameter aktual di blok program utama ke parameter formal  di prosedur adalah nilai dari datanya bukan alamat memori letak dari datanya.
  2. Prosedur/Fungsi yang menerima nilai ini akan menyimpan data tersebut di alamat memori yang berbeda dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi/prosedur tersebut di blok program utama.
  3. Karena terdapat alamat memori yang berbeda, maka perubahan nilai di fungsi tidak akan merubah nilai asli di bagian program yang memanggil prosedur/fungsi tersebut.

Contoh Program Pass By Value:

Ini hasilnya setelah dijalanin:

Dapat dilihat pada gambar di atas,
walaupun didalam procedure telah dilaukan perubahan nilai, namun perubahan nilai tidak bisa dipanggil ke program utama, karena pass by value hanya dapat mengcopy nilai sehingga saat di panggil nilainya tetap memakai nilai diprogram utama.

Pass By Value sebagai parameter masukkan dimana tidak bisa membawa nilai yang telah diubah didalam menuju keluar prosedure, dia hanya berfungsi untuk memasukkan nilai dari program utama ke dalam procedure.

download programnya disini.

–> Pass By Reference

Sedangkan bila pengiriman parameter secara reference (acuan), maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan memperngaruhi nilai parameter nyata. Parameter-parameter ini disebut dengan variabel parameter serta dideklarasikan di deklarasi prosedur dengan menggunakan kata cadangan Var, Berikut format penulisannya:

Procedure nama_procedure (VAR  identifier1, identifier2,  …., identifier3: tipe data)

Identifier konstanta dan literal tidak dapat digunakan dalam parameter, karena kedua identifier tersebut tidak dapat berubah nilainya.

Karakteristik dari Pass by Reference :

  1. Pada saat pengiriman nilai, yang dikirim dari parameter aktual di blok program utama ke parameter formal  di prosedur adalah alamat letak dari nilai datanya bukan.
  2. Prosedur/Fungsi yang menerima nilai ini akan menggunakan alamat memori yang sama dengan nilai aslinya yang digunakan oleh bagian  program yang memanggil fungsi/prosedur tersebut di blok program utama. Karena menggunakan alamat memori yang sama, maka perubahan nilai di prosedur/fungsi akan merubah nilai asli di bagian program yang memanggil prosedur/fungsi tersebut.

Contoh Program Pass By Reference:

Hasilnya setelah dijalankan:

Dapat dilihat perbedaannya dengan pass by value, pada pass by reference, nilai variabel dikirim berdasarkan alamat
sehingga perubahan nilai yang terjadi pada prosecedure dapat berpengaruh
sebagai parameter keluaran, dimana nilai yang berubaha didalam procesure dapat dipanggiil keluar dari perocedure dengan catatan varibel harus dideklarasikan sendiri-sendiri.

Download programnya disini.

Sekian pengertian dari pass by value dan pass by reference pada PASCAL yang saya dapatkan dari kakak-kakak asdos. Maklum dozennya sibuk, jadi diajaris asdosnya.
Jika ada kesalahan, penambahan, kritik, saran, kekurangan, pertenyaan, ayo kita diskusikan dibawah ini,,😀

  1. program segitiga donk mass??

    • program segitiga apa dlu ni mbak?
      luas segitiga, keliling segitiga, segitiga pascal ato segitiga bermuda? hehe

    • lissakrisnaputra
    • August 15th, 2011

    tugas qt lah mass…

    • haha, ane kira syapa… okok
      ini program menghitung luas segitiga dengan pasing by reference,
      program ls_segitiga_reference;
      uses crt;
      var
      t,a: integer;
      l: real;

      procedure luas(var ti, al: integer; var ls: real);
      begin
      writeln(‘Pada saat didalam procedure’);
      ti:=ti+1;
      al:=al+1;
      ls:=(ti*al)/2;
      writeln(‘Tinggi (ti) = ‘,ti);
      writeln(‘Alas (al) = ‘,al);
      writeln(‘Luas (ls) = ‘,ls:0:2);
      end;

      begin
      clrscr;
      writeln(‘Luas Segitiga dengan Passing By Reference’);
      writeln;
      write(‘Masukkan nilai tinggi (t)= ‘);
      readln(t);
      write(‘Masukkan nilai alas (a)= ‘);
      readln(a);
      l:=(a*t)/2;
      writeln(‘Luas segitiga adalah (l)= ‘,l:0:2);
      writeln(‘================================’);
      luas(t,a,l);
      writeln(‘================================’);
      writeln(‘Pada saat dibawa keluar procedure’);
      writeln(‘Tinggi (ti) = ‘,t);
      writeln(‘Alas (al) = ‘,a);
      writeln(‘Luas (ls) = ‘,l:0:2);
      readln;
      end.

      dan ini program menghitung luas segitiga dengan passing by value nya,, semoga bermanfaat yah bro,,,🙂

      program ls_segitiga_value;
      uses crt;
      var
      t,a: integer;
      l: real;

      procedure luas(ti,al: integer; ls: real);
      begin
      writeln(‘Pada saat didalam procedure’);
      ti:=ti+1;
      al:=al+1;
      ls:=(ti*al)/2;
      writeln(‘Tinggi (ti) = ‘,ti);
      writeln(‘Alas (al) = ‘,al);
      writeln(‘Luas (ls) = ‘,ls:0:2);
      end;

      begin
      clrscr;
      writeln(‘Luas Segitiga dengan Passing By Value’);
      writeln;
      write(‘Masukkan nilai tinggi (t)= ‘);
      readln(t);
      write(‘Masukkan nilai alas (a)= ‘);
      readln(a);
      l:=(a*t)/2;
      writeln(‘Luas segitiga adalah (l)= ‘,l:0:2);
      writeln(‘================================’);
      luas(t,a,l);
      writeln(‘================================’);
      writeln(‘Pada saat dibawa keluar procedure’);
      writeln(‘Tinggi (ti) = ‘,t);
      writeln(‘Alas (al) = ‘,a);
      writeln(‘Luas (ls) = ‘,l:0:2);
      readln;
      end.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: