RECORD
Definisi Record Record adalah kumpulan elemen –elemen data yang digabungkan menjadi satu kesatuan. Masing2 elemen data disebut field. Field data tersebut dapat memiliki tipe data yg sama atau berbeda. Field – field tersebut digabungkan menjadi satu record dengan tujuan untuk memudahkan.
Deklarasi Record Bentuk Umum: type <NamaRecord> = record <DataField-1>:<type1>; <DataField-2>:<type2>; … <DataField-N>:<typeN>; var <Namavariabel>:<NamaRecord>;
Deklarasi record pada umumnya diawali dengan kata baku type,namun anda juga dapat mendeklarasikan record langsung dengan menggunakan kata baku var seperti berikut : var <NamaRecord>: record <DataField-1>:<type1>; <DataField-2>:<type2>; … <DataField-N>:<typeN>; end;
Contoh : type Mahasiswa = record Nim : string[10]; Nama : string[20]; Alamat : string[30]; IPK : real; var Mhs : Mahasiswa;
Pendeklarasian record selalu diawali oleh nama record, tanda sama dengan (=) dan kata baku record serta diakhiri oleh kata baku end. Field – field dari record tersebut diletakkan diantara kata baku record dan end. Di dalam suatu record jika terdapat field-field yang bertipe sama dapat dideklarasikan bersamaan dengan dipisahkan oleh tanda koma (,) sehingga anda tidak perlu menuliskan tipe datanya berulang – ulang.
Pemakaian Record Untuk menggunakan Record tersebut, maka harus ditulis nama record beserta dengan fieldnya yang dipisahkan dengan tanda titik (.). Misal akan menulis NIM seorang mahasiswa ke layar maka penulisan yang benar adalah : Write(Mhs.Nim); atau dapat juga dengan menggunakan kata baku with-do With Mhs do Write (NIM);
Contoh : Record data mahasiswa Uses winCrt ; Type Mahasiswa = Record Nama :string[30]; NIM :string[10]; Alamat :string[50]; IPK :real; end; var Mhs:Mahasiswa; Begin ClrScr; write('Nama :');ReadLn(Mhs.Nama); write('NIM: ');ReadLn(Mhs.NIM); write('Alamat : ');ReadLn(Mhs.alamat); write(' IPK : ');ReadLn(Mhs.IPK); writeLn; writeLn('Nama Anda : ',Mhs.Nama); writeLn('NIM Anda : ',Mhs.NIM); writeLn('Alamat Anda : ',Mhs.alamat); writeLn('IPK Anda : ',Mhs.IPK: 2:2); End.
MODUL
Dalam Pascal disediakan dua pilihan : Apabila program yang dibuat sudah terlalu panjang, maka akan sulit untuk membaca dan mengerti jalannya program tersebut. Sehingga ada baiknya memecahkannya menjadi beberapa bagian (modul) yang tentunya akan memudahkan dalam mencari kesalahan program dan memperbaikinya serta membuat dokumentasinya. Dalam Pascal disediakan dua pilihan : Procedure Function
Procedure Berguna untuk mengumpulkan statement statement yang dapat dijalankan menjadi satu dalam suatu blok dan untuk menjalankannya kembali hanya dengan menuliskan nama procedure yang menampungnya. Selain itu juga banyak dipakai untuk menampung baris-baris perintah yg sering dipakai dalam sebuah program Untuk mendeklarasikan procedure dapat dilakukan dengan dua cara, yaitu : Header procedure tanpa parameter Header procedure dengan parameter
Header Procedure Tanpa Parameter Bentuk Umum : Procedure<NamaProcedure>; Contoh : Procedure BuatKotak; Procedure Input; Procedure Output; Penulisan header procedure tanpa parameter diawali dengan kata baku procedure dan diikuti dengan nama procedure serta diakhiri dengan tanda titik koma (;) Berikut digambarkan struktur blok program beserta procedure tanpa parameter
Program Begin … End. Procedure Begin …. End; <Nama Program> <Nama Procedure>
Contoh uses wincrt; procedure hitung; var p,q,x,y : byte; procedure tambah_kali; begin p := x+y; q := x* y; writeln('x+y =',p); writeln('x*y =',q); end; write('x=');readln(x); write('y=');readln(y); tambah_kali ; end.
Header Procedure dengan Parameter Bentuk Umum : Procedure<NamaProcedure>(<Daftar Parameter>); Contoh : Procedure Hitung (a,b:byte; c:real); Procedure Lingkaran(x,y, jari :integer); Penulisan header procedure dengan parameter hampir sama dengan procedure tanpa parameter yaitu diawali dengan kata baku procedure, lalu nama procedure dan diikuti dengan parameter (yang berada dalam kurung) yang masing-masing dipisahkan dengan koma beserta dengan tipenya yang dipisahkan dengan titik dua (:) serta diakhiri dengan tanda titik koma (;).
Contoh uses wincrt; var p,q,x,y : byte; procedure tambahkali(a,b :byte); begin p:= a+b; q:= a*b; writeln('x+y =',p); writeln('x*y =',q); end; write('x =');readln(x); write('y =');readln(y); tambahkali(x,y); end.
Function Function tidak hanya dapat dipakai untuk mengelompokkan baris-baris perintah seperti halnya procedure, tetapi function itu sendiri dapat menampung nilai yang disimpan pada nama function. Penulisan header function dapat dilakukan dengan dua cara, yaitu : Header function tanpa parameter Header function dengan parameter
Header Function Tanpa Parameter Bentuk Umum Function<NamaFunction>:TipeData; Contoh: Function Hitung : integer; Function : string; Function : boolean; Header function selalu diawali dengan kata baku Function dan diikuti dengan nama function serta tipe datanya yang dipisahkan dengan tanda titik dua (:).
Contoh uses wincrt; procedure hitung; var x,y : byte; function tambah:byte; begin tambah:=x+y; end; function kali:byte; kali :=x*y; write('x =');readln(x); write('y =');readln(y); writeln('x+y=',tambah); writeln('x*y=',kali); end.
Header Function dengan Parameter Bentuk Umum: Function<NamaFunction>(DaftarParameter>):TipeData: Contoh Function Hitung(a,b:byte) :integer; Function CheckPosisi(x,y:integer):boolean; Penulisannya tidak jauh berbeda dengan function tanpa parameter, hanya saja perlu ditambahkan parameter – parameter yang ditulis di dalam kurung ().
Perbedaan function dan procedure : Jika membuat suatu procedure maka harus mendeklarasikan dengan reserved word “Procedure”, sedangkan jika ingin membuat suatu function maka harus mendeklarasikan dengan reserved word “Function” Function harus dideklarasikan dengan tipenya, sedangkan procedure tidak. Hal ini menunjukkan bahwa pada function itu sendiri dapat menampung nilai, sedang procedure tidak.
Persamaan Procedure & Function terletak pada fungsinya, yaitu : Memecah sebuah program besar menjadi beberapa bagian (modul) sehingga memudahkan pembagian tugas jika program tersebut dibuat oleh lebih dari 1 orang. Selain itu juga mempermudah pengecekan kesalahan/error. Jika terdapat perintah-perintah yang sama yang akan dipakai dalam suatu program, maka sebaiknya perintah-perintah tersebut dipisahkan dalam suatu modul program dengan bantuan procedure, sehingga jika ingin memakainya tinggal memanggil nama procedure tersebut. Mempermudah proses dokumentasi.
Variabel dan Konstanta Lokal Ada baiknya membatasi suatu variabel atau konstanta hanya pada batas lokal saja karena beberapa faktor seperti kemudahan dalam mengecek jika terjadi kesalahan, memudahkan pengontrolan, dapat memakai variabel dengan nama yang sama tetapi dengan fungsi atau procedure yang berbeda. Apabila mendeklarasikan variabel atau konstanta lokal di dalam suatu procedure atau function, maka variabel atau konstanta tersebut hanya dapat digunakan pada procedure atau function yang bersangkutan dan tidak dapat digunakan pada procedure atau function lainnya ataupun pada program utama.
Parameter Formal dan Aktual Jika sebuah modul, baik procedure maupun function memiliki parameter yang berada di dalam kurung (), maka parameter tersebut disebut sebagai parameter formal, sedangkan parameter yang terdapat pada baris perintah pemanggil modul tersebut sebagai parameter aktual.
Procedure Hitung(a,b:byte; c:integer); begin … end; {Program Utama} a,b dan c adalah Parameter Formal Contoh : Program HitungLuas Procedure Hitung(a,b:byte; c:integer); begin … end; {Program Utama} Var hasil:byte Begin Hitung(3,7,hasil); end. 3,7 dan hasil adalah Parameter Aktual
Transfer parameter akan dijelaskan sebagai berikut : Program Gambar; Function CheckPosisi(X,Y:byte; Data:string): boolean; begin … end; (Program Utama) Begin If CheckPosisi(3,5,`*`) then Write(`Posisi Anda Benar`); End. Parameter Formal Parameter Aktual
Transfer Parameter Pada saat memanggil suatu modul (procedure/function) dengan parameter sebenarnya telah terjadi pengiriman parameter dari parameter aktual (yang terdapat pemanggil procedure/function) ke parameter formal (yang terdapat pada procedure/function tersebut). Pengiriman parameter tersebut dapat dilakukan dengan dua cara, yaitu Transfer parameter by value (secara nilai) Transfer parameter by location/reference (secara acuan)
Transfer Parameter by Value Nilai yan gtersimpan dalam parameter dikirim ke modul (procedure/function) untuk diolah, tetapi tidak minta hasil olahan tersebut untuk dikembalikan. Dalam mode ini, terjadi aliran 1 arah, yaitu dari pemanggil procedure ke procedure itu.
Transfer Parameter by Location Sering dikenal juga dengan transfer parameter by reference (secara acuan). Dalam kasus ini, yang ditransfer hanya lokasinya saja (dapat berisi data ataupun kosong) untuk diolah, dan meminta hasil olahan tersebut untuk dikembalikan dan disimpan pada lokasi yang telah ditransfer tersebut. Dalam mode ini, dapat terjadi aliran 2 arah dari pemanggil procedure ke procedure itu dan sebaliknya.