100% menganggap dokumen ini bermanfaat (1 suara)
842 tayangan30 halaman

Record Dan Pointer

Rekaman adalah tipe data terstruktur yang berisi kumpulan field dengan tipe data yang berbeda-beda. Rekaman mirip array namun field pada rekaman dapat berisi tipe data yang berbeda, sedangkan pada array harus sama. Rekaman dapat diakses secara langsung maupun menggunakan statement with. Rekaman juga dapat dibuat sebagai array atau menggunakan pointer.

Diunggah oleh

dwikartini06709
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
100% menganggap dokumen ini bermanfaat (1 suara)
842 tayangan30 halaman

Record Dan Pointer

Rekaman adalah tipe data terstruktur yang berisi kumpulan field dengan tipe data yang berbeda-beda. Rekaman mirip array namun field pada rekaman dapat berisi tipe data yang berbeda, sedangkan pada array harus sama. Rekaman dapat diakses secara langsung maupun menggunakan statement with. Rekaman juga dapat dibuat sebagai array atau menggunakan pointer.

Diunggah oleh

dwikartini06709
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 30

RECORD (REKAMAN)

RECORD adalah tipe data terstruktur yang berisikan


sekumpulan field yang masing-masing datanya
memiliki tipe data yang berbeda.

Pada prinsipnya rekaman sama dengan larik namun


perbedaan utama adalah pada larik disusun dari
komponen-komponen yang mempunyai tipe data yang
sama namun pada record boleh disusun dari
komponen yang sama atau yang bebeda.
Bentuk Umum

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

Field 1 Field 2 Fiel d3 ... Field n

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;

nama nim kelas umur ipk

mhs
Akses Record

1. Langsung
Bentuk Umum
namaVariabel.namafield Contoh
Mhs.nim

2. Dengan statement with. Do


Bentuk Umum Contoh
. .
With nama_record do With mhs do
Begin Begin
Field; Field;
End; End;
Array Record
Kita dapat membuat array dengan tipe berupa record. Setiap
elemen pada array dapat mengandung item data dengan tipe yang
bervariasi.
Pendeklarasian Array dengan tipe record adalah sebagai berikut:
Contoh
type mahasiswa=record
nim:string[10];
nama:string[10];
nuts,ntgs,nuas,na:real;
nh:char;
end ;
array_mahasiswa=array[1..3] of mahasiswa
var
mhs:array_mahasiswa;
Pointer
menunjuk ke sesuatu. Dalam variabel
dinamis, nilai data yang ditunjukkan
oleh suatu pointer biasanya disebut
simpul/node.
Array vs Pointer

perbedaan antara variabel bertipe array


dengan varibel bertipe pointer.
Kriteria Array Pointer

Sifat Statis Dinamis

Ukuran Pasti Sesuai kebutuhan

Alokasi variabel Saat program dijalankan Dapat diatur sesuai


sampai selesai kebutuhuan
Ilustrasi :
A 10
A

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

isi dari alamat yang ditunjuk oleh A adalah karakter D


dan si dari alamat yang ditunjuk B adalahkarakter R.
Memindah alamat pointer
Bila dikehendaki pointer B menunjuk ke alamat yang ditunjuk
pointer A, dilakukan dengan pernyataan berikut:
B := A;
Semula

A D B R

Menjadi :
A D B
R

Pointer B tidak lagi menunjuk karakter R tetapi isi alamat oleh


pointer A yaitu karakter D. sekarang pointer A dan B menunjuk
elemen atau alamat yang sama.
Bila isi dari alamat pointer A diganti maka
pointer B juga menunjuk isi yang berubah
pula
Misalkan :
A^ := x; A x B
R

Untuk menghapus variabel pointer


digunakan perintah berikut:
Dispose (P);
Gambarkan bentuk alamat pointernya
Var
A,B,C: ^integer;
d,e,f : integer;

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);

write('input nama :'); Readln(nama);


write('input gaji :'); Readln(gaji);
writeln;
End;
End;
For i := 1 to 5 do
Begin
With datakar[i]^ do
Begin
Writeln(i:2, kode:2, nama:2, gaji);
End;
End;
End.
Data : array[1..] of char Info Next

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

P1.Nama = Budi P1^.Nama = Budi


P1.Nip = 100 P1^.Nip = 100
P1.Jabatan=staf P1^.Jabatan=staf
P1.Gapok = 100000 P1^.Gapok = 100000
(Variabel Statis) P1^.Next = nil
(Variabel Dinamis)
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

Budi 100 staf 1000000


P2

? ? ? ? ?
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

Budi 100 staf 1000000


P2 = P1
P2

? ? ? ? ?
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

Budi 100 staf 1000000

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

Anda mungkin juga menyukai