Record Dan Pointer
Record Dan Pointer
TYPE
Atau VAR nama_record : record
tipe_record = record
field_1 : tipe_data_1;
field_1 : tipe_data_1; field_2 : tipe_data_2;
field_2 : tipe_data_2;
field_n : tipe_data_n;
field_n : tipe_data_n;
end;
end;
VAR nama_record : tipe_record;
Rekaman Secara Logika
Rekaman
Contoh :
Type Contoh :
Mahasiswa = record Var
Nama : string[20]; Mahasiswa : record
NIM : string[9]; Nama : string[20];
Kelas : string[5]; NIM : string[9];
Umur : integer; Kelas : string[5];
IPK : real; Umur : integer;
End; IPK : real;
Var End;
mhs : mahasiswa;
mhs
Akses Record
1. Langsung
Bentuk Umum
namaVariabel.namafield Contoh
Mhs.nim
1000 10 1000
Variabel Statis Variabel Dinamis
Gambar a Gambar b
gambar a. variabel A adalah peubah statis. Dimana 1000
adalah nilai data yang sesungguhnya & disimpan pada
peubah (lokasi) A.
gambar b. variabel A adalah peubah dinamis. Nilai peubah
ini misalnya 10. Nilai ini bukan nilai data yang
sesungguhnya, tetapi lokasi dimana data yang
sesungguhnya berada. Jadi nilai data yang sesungguhnya
tersimpan pada lokasi 10.
Deklarasi Variabel Pointer
Pendeklarasian variabel pointer tidak jauh berbeda dengan
pendeklarasian variabel biasa, hanya perlu ditambahan
simbol topi (^) dapat dibaca caret sebelum tipe
datanya. Simbol topi tersebut menandakan bahwa
variabel tersebut menunjuk ke lokasi tertentu pada
memori.
Bentuk umum :
Var
namaVariabel :^TipeData;
contoh :
Var
A,B : ^char;
Menciptakan variabel Pointer
Untuk membuat Variabel pointer maka dituliskan
dengan perintah :
A B
New (A); New (B);
Mamasukkan Nilai
Untuk memberi nilai pada variabel A dengan nilai
char, kita gunakan A^ sebagai berikut :
A^ := D; A D B^ := R; B R
A D B R
Menjadi :
A D B
R
A^:= 10;
B^:= 20;
C^:= 40;
d:= 12;
e:= 60;
f:=32;
A := B;
C:=A;
A^:=30;
C^:=15;
variabel pointer bertipe record
Bentuk umum :
Tipe namapointer = ^namarecord;
namarecord = record
field1:tipedata1;
field2:tipedata2;
fieldN:tipedataN;
end;
Var
namavar:namapointer;
contoh
Type
Pointmhs=^mahasiswa
mahasiswa=record
nim:string[10];
nama:string[10];
nuts,ntgs,nuas,na:real;
nh:char;
end ;
var
mhs: Pointmhs;
P1,p2: Pointmhs;
variabel pointer Array Record
Pointmhs=^mahasiswa
type mahasiswa=record
nim:string[10];
nama:string[10];
nuts,ntgs,nuas,na:real;
nh:char;
end ;
mhs=array[1..3] of Pointmhs
P1,p2: Pointmhs;
Contoh programpointer :
uses wincrt;
Type kalimat = string;
pointkal = ^kalimat;
Var nama : pointkal;
Begin
new (nama);
Nama^ := 'Belajar struktur data';
Write(nama^);
End.
Program Pointer Record
uses wincrt;
Type kar = ^catchar;
Catchar = record
Kode : string;
Nama : string;
Gaji : integer;
End;
Var datakar : array [1..5] of kar;
i : byte;
Begin
For i := 1 to 5 do
Begin
New (datakar[i]);
With datakar[i]^ do
Begin
write('input kode :'); Readln(kode);
0 R NIL
Data K
Start Point = ^Data
1 E 0
O Data = Record
2 O 4
M 3 Info : char
P
4 M 6 Next : point
5 K 2 End;
U 6 P 8 Simpul
T 7 T 1
8 U 7
E
9 Info Next
R
Simpul Simpul =^Data
Data = record
info : type data
Info Next :Simpul
Next
end
Peg =^data
Peg
Data= Record
Nama : string[20]
Nip : string[10]
Jabatan : String[10]
Gapok : Real
Next : Peg;
end
Operasi Pointer
Membentuk simpul dalam memori
New(Var Pointer)
Cth :
New (Pegawai) OS
Nama
Nip
Jabatan
gapok
Fisik
Logika
Deklarasi Variabel
Var P1,P2 : Peg
New(p1)
P1
? ? ? ? ?
New(p2)
P2
? ? ? ? ?
Budi 100 staf 1000000
P1
Budi 100 staf 1000000
? ? ? ? ?
Peg =^data
Data= Record
Nama : string[20]
Nip : string[10] Deklarasi Variabel
Jabatan : String[10] Var P1,P2 : Peg
Gapok : Real
Next : Peg;
end
P1
? ? ? ? ?
Peg =^data
Data= Record
Nama : string[20]
Nip : string[10] Deklarasi Variabel
Jabatan : String[10]
Gapok : Real Var P1,P2 : Peg
Next : Peg;
end
P1
P1^.next = P2
P2
? ? ? ? ?
P1^.Next^.Next
?
?
P1^.Next^.Gapok
P1^.Next
P1^.Next^.Jabatan
?
P1^.Next^.Nip
?
P1^.Next^.Nama
?
1000000
P1^.Gapok
staf
100 P1^.Jabatan
P1 P1^.Nip
Budi
P1^.Nama