Subprogram

Jika anda diperintahkan untuk memasak masakan tertentu tentu saja anda tidak akan mendengar semua cara memasaknya kecuali anda baru belajar memasak. Kita bisa menyederhanakan perintah memasak dengan mengajarkan atau memberitahukannya terlebih dahulu pada orang yang akan beri perintah. Kita cukup katakan, "masaklah makanan A". Kita perlu menyebut langkah-langkah seperti memotong sayur, menyalakan kompor, menambahkan bumbu dan lain-lain; karena orang yang kita beri perintah sudah paham langkah-langkahnya.
Dalam pemrograman, kita juga bisa menyederhanakan sekumpulan perintah atau statement menjadi sebuah prosedur atau fungsi. Prosedur dan fungsi disebut juga subprogram. subprogram bisa digunakan dengan memanggilnya di program utama atau prosedur lainnya. Prosedur bisa digunakan berkali-kali sehingga penulisan program akan jadi lebih singkat dibandingkan dengan meletakkan semua statement/pernyataan dalam kode program. write, readln, dll; adalah contoh prosedur yang sudah ada dalam pascal. Selain menggunakan prosedur yang ada, kita bisa membuat prosedur buatan kita sendiri. Berikut ini adalah contoh prosedur sederhana dan pemanggilannya.

program prosedurku;
uses crt;

procedure tuliskata(s :string);
begin
    write('Katakan ', s);
end;

begin
    clrscr;
    tuliskata('hai');
    readln;
end.

Subprogram bisa memiliki "parameter" atau bisa juga tidak memiliki parameter. Pada contoh di atas parameternya adalah s. Berdasarkan letaknya, parameter prosedur dan fungsi bisa terbagi 2 yaitu :
  1. Parameter Formal (formal parameter) : Parameter yang dideklarasikan dibagian blok fungsi.
  2. Parameter Aktual(actual parameter) : Parameter yang sebenarnya / parameter yang dilewatkan saat fungsi dipanggil.
Parameter formal kode program di atas adalah "s" dengan tipe data string. Pada pemanggilan fungsi "tulis kata" parameter diganti dengan kata "hai" yang akan disimpan sebagai nilai parameter yang digunakan dalam fungsi. 
Prosedur tidak memiliki nilai kembalian, berbeda dengan function yang punya nilai yang dikembalikan di tempat pemanggilannya.

program fungsiku;
uses crt;
var i: integer;
function tuliskata( s :string): integer;
begin
    write(s);
    tuliskata:=length (s);
end;

begin
    clrscr;
    i:=tuliskata('hai ');
    write(i);
    readln;
end.


Kode program di atas menggunakan fungsi yang bernama tuliskata. Function / fungsi di atas mengembalikan panjang "parameter s" yang memiliki tipe data string ke variabel i.Berdasarkan nilai atau data yang disimpan dalam parameter, parameter dibagi 2, yaitu :
  1. PARAMETER  PASS BY VALUE : Parameter yang diberikan ke fungsi adalah ‘Nilainya’, tidak pernah menspesifikasikan variabelnya. Bila ada perubahan pada parameter formal, tidak akan mempengaruhi nilai pada parameter actual.
  2. PARAMETER  PASS BY REFERENCEMemanipulasi nilai dari dalam fungsi. Setiap perubahan terhadap parameter formal akan memepengaruhi nilai pada parameter aktual. Parameter formal diberi symbol ‘&’. Cara ini adalah cara efektif yang memungkinkan sebuah fungsi mengembalikan lebih dari satu nilai.
jika parameter formal atau parameter yang terdapat pada subprogram menggunakan var, maka parameter tersebut disebut pass by reference. Jika tidak ada kata var maka itu disebut pass by value. Parameter tanpa var akan menyalin nilai variabel sehingga nilai variabel tidak akan berubah jika nilai parameter diubah dalam function atau procedure.

Program subprogram;
uses crt;
var a, b:integer;

//parameter pass by value
procedure tukar(x, y : integer);
var tmp:integer;
begin
    tmp:=x;
    x:=y;
    y:=tmp;
end;

//program utama
begin
    clrscr;
    a:=1;
    b:=2;
    tukar(a, b);
    writeln('a : ', a);
    writeln('b : ', b);
    readln;
end.
Bandingkan hasilnya dengan contoh di bawah ini!

Program subprogram;
uses crt;
var a, b:integer;

//parameter pass by reference
procedure tukar(var x:integer; var y : integer);
var tmp:integer;
begin
    tmp:=x;
    x:=y;
    y:=tmp;
end;

//program utama
begin
    clrscr;
    a:=1;
    b:=2;
    
    tukar(a, b);
    writeln('a : ', a);
    writeln('b : ', b);
    readln;
end.


Parameter yang menggunakan var akan menyalin alamat variabel, dan perubahan terhadap parameter tersebut akan mengubah nilai variabel . Btw, variabel tmp pada kode program di atas disebut sebagai variabel lokal, karena penggunaannya hanya sebatas untuk function atau procedure yang ditempatinya.

1 comments:

Klik di sini untuk berkomentar
Anonymous
admin
September 5, 2021 at 11:29 AM ×

saya perlu listing array,if,while,for to do tolong kirim

Jawab
avatar