Dasar Struktur Data Ika Menarianti
Persiapan awal Buka program Delphi
Ubah properti milik Form Name : FormBab2 Caption : TestBab2 Perhatikan apa yang berubah ketika properti diubah!
Selanjutnya persiapkan prosedurnya: Klik pada FormBab2 Klik Tab Event pada Object Inspector Klik pada OnCreate Klik ganda pada sel disebelahnya hingga muncul kode berikut: procedure TFormBab2.FormCreate(Sender: TObject); begin end;
Selanjutnya.. Tambahkan komponen Label. Atur Propertinya: Name : LabelInfo Caption : Info Align : alClient Perhatikan apa yang berubah ketika properti diubah!
Selanjutnya..... Simpan dengan cara: Pilih Menu File lalu pilih Save Project As... Ketikkan FBab2 untuk menggantikan Unit1 pada kotak disebelah kanan judul File Name untuk memberi nama file formulir dan klik tombol Ganti project1 dengan PBab2 untuk memberi nama proyek. Setelah itu klik Save.
Struktur Data Primitif Wadah data yang paling sederhana disebut sebagai tipe data primitif atau struktur data primitif. Tipe Data Primitif Tipe Data Keterangan Kebutuhan Memori Shortint Bilangan Bulat -128 s/d 127 1 byte Integer Bilangan Bulat -32767 s/d 32768 2 byte Longint Bilangan Bulat -2147483648 s/d 2147483647 4 byte Byte Bilangan Bulat 0 s/d 255 Word Bilangan Bulat 0 s/d 65535 Real Bilangan real 6 byte Boolean Data logika. Bernilai True atau False Char Menyatakan sebuah karakter
Struktur Data Primitif (2) Pemilihan tipe data dilakukan dengan pedoman: Pilihlah yang membutuhkan memori paling sedikit Semua kemungkinan nilai bisa terakomodasi oleh tipe tersebut.
Enumerasi, Subjangkauan dan Himpunan Enumerasi merupakan salah satu tipe yang dibuat sendiri oleh pemrogram. Tipe ini digunakan pada variabel yang nilai kemungkinannya terbatas atau tidak begitu banyak. Nilai dinyatakan dengan nama pengenal. Menggunakan pengenal diharapkan akan lebih memberikan kejelasan dibandingkan menggunakan kode. Contoh: Type SistemOperasi = (unix, linux, windows_xp, windows_7, mac_os); JenisKelamin = (pria, wanita);
Enumerasi, Subjangkauan dan Himpunan (2) Subjangkauan (subrange) merupakan suatu tipe yang menyatakan suatu jaringan nilai dari suatu tipe yang sudah ada. Jangkauan nilai ditentukan oleh nilai terkecil dan nilai terbesar. Bentuk pendeklarasian: type Nama_type = Nilai_terkecil .. Nilai_terbesar; Contoh: NilaiBulan: 1..12; //subjangkauan integer HurufKapital : ‘A’ .. ‘Z’ ; //subjangkauan char
Enumerasi, Subjangkauan dan Himpunan (2) Himpunan (set) adalah suatu struktur data yang memungkinkan menyimpan sejumlah nilai yang tergolong dalam tipe data primitif. Bentuk pendeklarasian: type Nama_tipe = set of Tipe_elemen; Elemen-elemen himpunan yang dinyatakan denagan [ ]. Misal [1, 2, 3] menyatakan himpunan yeng terdiri elemen 1, 2 dan 3. Sedangkan [ ] dinyatakan himpunan kosong.
Operator untuk memanipulasi himpunan Pembandingan Keterangan + H1 + H2 Operator union ini berguna untuk menggabungkan himpunan H1 dan H2 Contoh: [1, 2, 3] + [3, 4, 5] [1, 2, 3, 4, 5] - H1 – H2 Operator perbedaan/pengurangan berguna untuk mendapatkan himpunan yang berisi elemen-elemen dari H1 yang tidak ada pada H2 [1, 2, 3] - [3, 4, 5] [1, 2] [3, 4, 5] - [1, 2, 3] [4, 5] * H1 * H2 Operator interseksi berguna untuk memperoleh himpunan dengan elemen yang ada pada H1 dan H2 [1, 2, 3] * [3, 4, 5] [3]
Contoh program enum procedure TFormBab2.FormCreate(Sender: TObject); type TSistemOperasi = (unix, linux, windows_xp, windows_7, mac_os); var SisOperasi : set of TSistemOperasi; teks : string; keterangan: string; S : TSistemOperasi; begin SisOperasi := [unix, linux, windows_7];
Selanjutnya..... //Tampilkan isi SisOperasi for S := unix to mac_os do if S in SisOperasi then begin case S of unix : keterangan := 'UNIX'; linux : keterangan := 'LINUX'; windows_xp : keterangan:='WINDOWS_XP'; windows_7 : keterangan:= 'WINDOWS_7'; mac_os : keterangan:= 'MAC OS'; end; teks := teks + keterangan + #13#10; LabelInfo.Caption:=teks; end.
Record Struktur data yang menampung beberapa data yang tipenya dapat berlainan. Ketiga buah field yang terdapat pada record bertipe TRecBuku memiliki tipe data yang berlainan. Field judul dan pengarang bertipe string dan field jumlah bertipe bilangan bulat. Delphi Field : Judul Bertipe TRecBuku Abdul Kadir Field : Pengarang 10 Field : Jumlah
Record (2) Record dapat menampung beberapa data berlainan tipe. Bentuk pendeklarasian: record Field_1 : Tipe_1; Field_2 : Tipe_2; ..... Field_N : Tipe_N; end; Contoh: type TRecBuku = record Judul : String; Pengarang : String; Jumlah : byte; end; Var Buku : TRecBuku
Buku.Judul := ‘Pascal’; Record (3) Untuk mengakses sebuah field dalam variabel bertipe record diperlukan notasi: Variabel.nama_field Contoh: Buku.Judul artinya field judul yang terdapat pada variabel Buku Jika ingin diisikan data ‘Pascal’, pernyataannya: Buku.Judul := ‘Pascal’;
Program Record Gunakan FormCreate untuk menulis program dibawah ini. procedure TFormBab2.FormCreate(Sender: TObject); type TRecBuku = record Judul : String; Pengarang : String; Jumlah : byte; end; var Buku : TRecBuku;
Selanjutnya.. begin //pemberian nilai ke field milik buku Buku.Judul := 'Pascal'; Buku.Pengarang := 'Abdul Kadir'; Buku.Jumlah := 10; //tampilkan isi buku LabelInfo.Caption:= 'Judul : ' + Buku.Judul + #13#10 + 'Pengarang : ' + Buku.Pengarang+#13#10 + 'Jumlah : ' + IntToStr(Buku.Jumlah); end;
Hasilnya...
Array dan String Array adalah struktur data yang berguna untuk menyimpan sejumlah data yang bertipe sama, Array bisa bernilai nilai yang sama (himpunan tidak). Rien Jamain 1 Array PenyanyiJazz Mengandung 5 elemen Nunung Wardiman 2 Angka ini menyatakan indeks bagi elemen array Margie Siegers 3 Syaharani 4 Andien 5
Array dan String (2) Bagian yang menyusun array disebut elemen array. Masing-masing elemen dapat diakses melalui indeks array. Array gambar diatas dibuat dengan cara: type TArrayNama = array [1..5] of string; var PenyanyiJazz : TArrayNama; Kuncinya pada kata array yang diikuti dengan [nilai terkecil ... Nilai terbesar] dan kata of diikuti tipe data elemen.
Array dan String (2) PenyanyiJazz[1] PenyanyiJazz[2] PenyanyiJazz[3] Elemen array diakses dengan: Nama_array[indeks] Rien Jamain PenyanyiJazz[1] Nunung Wardiman PenyanyiJazz[2] Margie Siegers PenyanyiJazz[3] Syaharani PenyanyiJazz[4] Andien PenyanyiJazz[5]
Program Array dan String procedure TFormBab2.FormCreate(Sender: TObject); type TArrayNama = array [1..5] of string; var PenyanyiJazz : TArrayNama; Teks : String; I : integer; begin //pemberian nilai ke array PenyanyiJazz[1] := 'Rien Jamain'; PenyanyiJazz[2] := 'Nunung wardiman'; PenyanyiJazz[3] := 'Margie Siegers'; PenyanyiJazz[4] := 'Syaharani'; PenyanyiJazz[5] := 'Andien';
selanjutnya.. //Tampilkan isi Array Teks := ' '; for I := 1 to 5 do Teks := Teks + 'Penyanyi Jazz [ ' + IntToStr(I)+ ' ] : '+ PenyanyiJazz[I] + #13#10; LabelInfo.Caption :=Teks; end; end. Hasilnya...
Array dan string Array yang dibahas didepan tergolong sebagai array berdimensi satu. Terdapat pula elemen berdimensi dua. Bentuk array berdimensi dua: 1 2 Indeks kolom Indonesia Jakarta 1 Austria Vienna 2 Prancis Paris 3 InfoNegara[3,2] Mesir Kairo 4 Kolom kedua Indeks baris Nama array Baris ketiga
Program Array dua dimensi procedure TFormBab2.FormCreate(Sender: TObject); type TArrayNegara = array [1..4, 1..2] of string; var InfoNegara : TArrayNegara; Teks : String; I : integer; begin //pemberian nilai ke array InfoNegara[1,1] := 'Indonesia'; InfoNegara[1,2] := 'Jakarta'; InfoNegara[2,1] := 'Austria'; InfoNegara[2,2] := 'Vienna';
InfoNegara[3,1] := 'Prancis'; InfoNegara[3,2] := 'Paris'; InfoNegara[4,1] := 'Mesir'; InfoNegara[4,2] := 'Kairo'; //Tampilkan isi Array Teks := ' '; for I := 1 to 4 do Teks := Teks + InfoNegara[I,1] + ' - ' + InfoNegara[I,2] + #13#10; LabelInfo.Caption :=Teks; end; end.
Untuk memudahkan mengolah deretan karakter digunakan tipe data string. Var Nama:string; Variabel Nama mampu menampung string dengan panjang karakter bisa berapa saja. Apabila jumlah maksimal dalam suatu string mencapai N karakter, bisa membatasinya dengan menuliskan String[N]. Alamat : String [65]; Alamat hanya bisa menampung 65 karakter. Untuk mengakses setiap karakter dalam suatu string, gunakan notasi [] seperti pada array. Nama[1] Menyatakan karakter pada posisi kesatu dalam string Nama
Kode program procedure TFormBab2.FormCreate(Sender: TObject); var Nama : String [15]; Teks : String; i : Integer; begin Nama := 'Ika Menarianti'; //Tampilkan per huruf per baris Teks := ' '; for i := 1 to Length(Nama) do Teks := Teks + Nama[i] + #13#10; LabelInfo.Caption:=Teks; LabelInfo.Alignment:=taCenter; end;
LabelInfo.Alignment:=taCenter; Keterangan Fungsi Length digunakan untuk mengetahui jumlah karakter dalam string. LabelInfo.Alignment:=taCenter; Dipakai untuk mengatur agar teks dalam label diatur di tengah.
Berisi alamat variabel x Pointer Pointer adalah suatu tipe data yang digunakan untuk menunjuk ke suatu data. Variabel yang bertipe pointer tidaklah berisi data, melainkan berisi alamat suatu data. POINTER Variabel X 5 Berisi alamat variabel x Data
Penjelasan Dimungkinkan untuk mengakses data pada variabel x melalui pointer. Pointer digunakan sehubungan dengan pembentukan variabel dinamis. Variabel dinamis adalah variabel yang bisa dialokasikan di dalam memori atau dihapus dari memori ketika program dieksekusi.
Mendeklarasikan pointer Tipe pointer dideklarasikan: Type Nama_tipe = ^pengenal_tipe; Pengenal_tipe dapat berupa tipe-tipe data yang tergolog sebagai struktur data primitif. Tanda ^ mengawali pengenal_tipe. Contoh: TPtrInt = ^Integer; Var PtrX: TPtrInt; PtrInt adalah tipe pointer yang menunjuk ke data bertipe Integer;
TPtrInt = ^Integer; Tanda ^ mendefinisikan pointer Nama tipe pointer Tipe yang ditunjuk pointer Nama tipe pointer Contoh lain: Type TRecBuku = record Judul : String; Pengarang : String; Jumlah : Byte; End; TPtrBuku = ^TrecBuku; Var Novel : TPtrBuku;
Variabel_pointer := @variabel_data Novel adalah variabel pointer yang menunjuk ke tipe record bernama tRecbuku Agar variabel pointer menunjuk ke suatu variabel data maka diperlukan penugasan: Variabel_pointer := @variabel_data Simbol @ berarti alamat. Variabel_pointer diisi dengan alamat variabel_data
Mengakses data via pointer procedure TFormBab2.FormCreate(Sender: TObject); Type TRecBuku = record Judul : String; Pengarang : String; Jumlah : Byte; End; TPtrBuku = ^TrecBuku; Var Novel : TPtrBuku; Buku : TRecBuku;
begin //pemberian nilai ke field milik buku Buku begin //pemberian nilai ke field milik buku Buku.Judul:= 'Badai Pasti Berlalu'; Buku.Pengarang:= 'Marga T.'; Buku.Jumlah := 2; //atur agar novel menunjuk ke buku Novel:= @Buku; //Tampilkan isi Buku melalui novel LabelInfo.Caption:= 'Judul: ' + Novel^.Judul + #13#10 + 'Pengarang: ' + Novel^.Pengarang +#13#10 + 'Jumlah: ' +IntToStr(Novel^.Jumlah); end;
Menggunakan variabel dinamis Variabel dinamis adalah variabel yang bisa diciptakan ketika program dieksekusi. Bagaimana cara menciptakan variabel dinamis? Kuncinya yaitu menggunakan prosedur New Terdapat variabel pointer PtrBaru yang bertipe PtrBuku. Agar tercipta variabel yang dinamis yang kan ditunjuk oleh PtrBaru diperlukan perintah: New(Ptrbaru);
Gambaran variabel dinamis procedure TFormBab2.FormCreate(Sender: TObject); Type TRecBuku = record Judul : String; Pengarang : String; Jumlah : Byte; End; TPtrBuku = ^TrecBuku; Var PtrData: TPtrBuku;
begin //alokasikan memori New(PtrData); //pemberian nilai ke field yang ditunjuk Ptrdata PtrData.Judul:= 'Badai Pasti Berlalu'; PtrData.Pengarang:= 'Marga T.'; PtrData.Jumlah := 2; //Tampilkan data buku melalui PtrData LabelInfo.Caption:= 'Judul: ' + PtrData^.Judul + #13#10 + 'Pengarang: ' + PtrData^.Pengarang +#13#10 + 'Jumlah: ' +IntToStr(PtrData^.Jumlah); //dealokasi memori Dispose(PtrData); end;
Menghapus Variabel Dinamis Bila suatu variabel dinamis tidak diperlukan lagi, memori yang digunakannya bisa dihapus dengan prosedur Dispose. Pemanggilannya: Dispose(Variabel_pointer); Artinya, memori yang ditunjuk oleh Variabel_pointer dihapus.
Gambaran Penghapusan Data Keadaan awal: ? PtrData ? ? Setelah Dispose(PtrData): ? PtrData ? ? Memori untuk data ini didealokasikan atai dibebaskan
Pointer dan Array Dinamis Array juga dapat dipesan secara dinamis. Untuk membuat array dinams digunakan fungsi GetMem Untuk membebaskan memori digunakan prosedur FreeMem
Kode Program procedure TFormBab2.FormCreate(Sender: TObject); Type TRecBuku = record Judul : String [60]; Pengarang : String[60]; Jumlah : Byte; End; TArrayRecBuku=array [1..10000] of TRecBuku; TPtrBuku = ^TArrayRecBuku; Var PtrData: TPtrBuku; i, JumElemen : Longint; Teks :String; begin //alokasikan memori JumElemen:=5; GetMem(PtrData, JumElemen * SizeOf(TRecBuku));
Lanjutan... //pemberian nilai ke field yang ditunjuk Ptrdata PtrData^[1].Judul:= 'Octopussy'; PtrData^[1].Pengarang:= 'Ian Flemings'; PtrData^[1].Jumlah := 2; PtrData^[2].Judul:= 'Badai Pasti Berlau'; PtrData^[2].Pengarang:= 'Marga T.'; PtrData^[2].Jumlah := 4; PtrData^[3].Judul:= 'Struktur Data'; PtrData^[3].Pengarang:= 'Abdul Kadir'; PtrData^[3].Jumlah := 2; PtrData^[4].Judul:= 'Algoritma Pemrograman'; PtrData^[4].Pengarang:= 'Rinaldi Munir'; PtrData^[4].Jumlah := 5;
Lanjutan... PtrData^[5].Judul:= 'Metodologi Penelitian'; PtrData^[5].Pengarang:= 'Moh. Nazir'; PtrData^[5].Jumlah := 6; //Tampilkan data buku melalui PtrData Teks:=' '; for i:=1 to JumElemen do Teks := Teks + 'judul : ' + PtrData^[i].Judul + #13#10 +'pengarang : '+ PtrData^[i].Pengarang +#13#10 + 'Jumlah : ' + IntToStr(PtrData^[i].Jumlah) + #13#10#13#10; LabelInfo.Caption:=Teks; //dealokasi memori FreeMem(PtrData); end;
Catatan Yang perlu diperhatikan dalam menggunakan GetMem dan melibatkan String adalah panjang string harus ditentukan. Perhatikan dua deklarasi berikut: TArrayRecBuku=array [1..10000] of TRecBuku; TPtrBuku = ^TArrayRecBuku; TArrayRecBuku merupakan tipe array dengan jumlah hingga 100.000 elemen. Namun sebenarnya pemesanan memori sesungguhnya tidak sebesar itu, mengingat hal itu hanya berupa tipe.
Perhatikan kode bagian pernyataan: JumElemen:=5; GetMem(PtrData, JumElemen * SizeOf(TRecBuku)); Jumlah memori yang dialokasikan melalui GetMem hanya sebesar JumElemen ukuran tipe TRecBuku. Dengan kata lain, hanya akan ada 5 elemen saja. Pernyataan GetMem(PtrData, JumElemen * SizeOf(TRecBuku)); dapat diliustrasikan sebagai berikut:
Hasil pengalokasikan memori oleh GetMem Field : judul Field : pengarang Field : jumlah 1 Field : judul 2 Field : pengarang 3 Field : jumlah 4 Field : judul 5 Field : pengarang Array PtrData Field : jumlah Field : judul Field : pengarang Field : jumlah Field : judul Field : pengarang Field : jumlah
PtrData^[1].Judul:= 'Octopussy'; Pernyataan seperti: PtrData^[1].Judul:= 'Octopussy'; Dibaca sebagai pengisian string Octopussy ke field judul yang ditunjuk oleh elemen pertama pada array PtrData. Pernyataan: FreeMem(PtrData); Digunakan untuk membebaskan atau mendealokasikan memori yang ditunjuk oleh PtrData
Fungsi Rekursif Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi rekursif banyak digunakan pada pola tertentu, misalnya pohon biner atau menghitung faktorial. Contoh: Faktorial m! Didefinisikan sebagai: 1 jika m=0 1 x 2 x 3 x .. X m jika m > 0 Secara rekursif, persoalan diatas ditulis sebagai berikut: 0! = m Bila m > 0, m! = m x (m – 1 )!
Kondisi pertama digunakan sebagai penghenti rekursi, sedangkan kondisi kedua menggambarkan proses rekursi. Kondisi tersebut dituangkan: Function Faktorial (M : Integer) : Longint; Begin if M = 0 then Faktorial := 1 else Faktorial := M * Faktorial (M – 1); End;
Misal dilakukan pemanggilan: Hasil := Faktorial(4); 24 Hasil:24 4 x Faktorial(3) 6 3 x Faktorial(2) 2 2 x Faktorial(1) 1 1 1 x Faktorial(0) Faktorial(0)
Kode Faktorial Procedure TFormBab2.FormCreate (Sender: Tobject); Function Faktorial (m: Integer):Longint; begin if M = 0 then Faktorial := 1 else Faktorial := M * Faktorial (M-1); end; //Hitung 4! LabelInfo.Caption := ‘4! = ‘ +IntToStr(Faktorial(4));
Pengenalan Objek Objek disebut sebagai instan kelas. Kelas mengandung properti dan metode Kelas adalah suatu wadah yang mengandung data (disebut propeti atau variabel instan) dan prosedur atau fungsi untuk mengakses data (disebut metode)
Variabel Instan Kelas Metode Menyatakan data Berupa fungsi atau prosedur Variabel Instan Kelas Metode Seolah-olah kelas adalah cetakan bagi objek Objek 1 Objek N Objek 2 Instan kelas, dengan sendirinya memiliki variabel instan dan metode
Deklarasi sebuah kelas TipeKelas = Class (Object) private //bagian yang bersifat khusus public //bagian yang bersifat umum end; Private menyatakan area untuk mendeklarasikan variabel instan ataupun metode yang hanya boleh diakses oleh objek secara internal. Public menyatakan area untuk mendeklarasikan variabel instan ataupun metode yang boleh diakses oleh siapa saja.
Membuat kelas dalam unit Kelas dibuat pada sebuah unit. Menyatakan nama unit unit Unit1; Interface Implementation End. Mendeklarasikan kelas Digunakan untuk mendefinisikan detail dari metode Menyatakan akhir unit Untuk membuat unit: Klik Menu file Klik New Klik Unit - Delphi
Tulis kode program ini pada unit unit FBuku; interface uses Sysutils; type TBuku = class (TObject) private Judul : String; Pengarang : String; Jumlah : Integer; public constructor Create (Judul : String =''; Pengarang: String =''; Jumlah : Integer = 0); function Info():String; end;
implementation constructor TBuku implementation constructor TBuku.Create(Judul : String; Pengarang : String; Jumlah : Integer); begin Self.Judul := Judul; Self.Pengarang := Pengarang; Self.Jumlah:= Jumlah; end; function TBuku.Info(): String; Info:= 'Judul: '+ Judul + #13#10 + 'Pengarang: '+ Pengarang + #13#10+ 'Jumlah: '+ IntToStr(Jumlah); end.
Penjelasan program uses Sysutils; Digunakan untuk menyertakan unit Sysutils. Unit ini berisi sejumlah pustaka yang berguna dalam penyusunan unit. Contoh: IntToStr() hanya bisa digunakan Sysutils digunakan.
Nama kelas Objek yang diwarisi type TBuku = class (TObject) private Judul : String; Pengarang : String; Jumlah : Integer; public constructor Create (Judul : String = ''; Pengarang: String = ''; Jumlah : Integer = 0); function Info():String; end; Bersifat khusus (privat). Hanya metode milik kelas Tbuku yang bisa mengakses Menyatakan nilai bawaan Bisa dipakai dimana saja karena bersifat umum (publik)
TBuku.Create Detail dari metode milik kelas diletakkan pada bagian implementation. Nama kelas disebutkan didepan nama metode. Create tersebut milik Tbuku, karena bisa saja ada create untuk kelas lain. Penulisan: constructor TBuku.Create(Judul : String; Pengarang : String; Jumlah : Integer); Menyerupai pendeklarasian kelas yang berupa constructor Create (Judul : String =''; Pengarang: String =''; Jumlah : Integer = 0);
Konstruktor adalah metode yang dipanggil pertama kali ketika kelas instan diciptakan. Nilai bawaan digunakan sebagai nilai yang akan dipakai sekiranya argumen tidak disebutkan ketika konstruktor dipanggil. Nama konstruktor tidak harus berupa Create, tapi create umum dipakai Self.Judul := Judul; Self berarti objek tempat pernyataan berada. Self.Judul dibaca sebagai variabel instan Judul milik objek. Self digunakan karena terdapat dua Judul (judul milik objek dan judul dalam argumen). Self.Judul := Judul berarti “Isikan nilai judul milik argumen kepada judul milik objek”
Menyimpan dan Menambahkan Proyek Jika semua program telah ditulis, compile program! Jika tidak ada kesalahan, simpan dengan nama Fbuku. Tambahkan unit ke dalam proyek Pbab2. Caranya: Klik menu Project Klik Add to Project Pilih Fbuku Klik tombol Open Buka kode milik FBab2 dengan tekan tombol F12 Tambahkan , Fbuku seperti: unit FBab2; Interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FBuku;
Tujuan penambahan ,FBuku untuk memberitahukan bahwa unit FBab2 memerlukan unit Fbuku Penggunaan unit Fbuku dapat dilihat pada kode yang diletakkan pada unit FBab2 yang terdapat pada FormCreate
Kode Program procedure TFormBab2.FormCreate(Sender: TObject); var Buku: TBuku; begin Buku := TBuku.Create('Badai','Marga',4); LabelInfo.Caption:= Buku.Info(); end; end.
Menggunakan Destruktor Destruktor adalah kebalikan dari konstruktor. Kegunaannya untuk melakukan tindakan ketika objek berakhir. Jika kita menggunakan objek maka destruktor bisa meletakkan kode untuk membebaskan memori.
Contoh kode (simpan dengan FBuku2) unit FBuku2; interface uses Sysutils, Dialogs; type TBuku = class (TObject) private Judul : String; Pengarang : String; Jumlah : Integer; public constructor Create (Judul : String =''; Pengarang: String =''; Jumlah : Integer = 0); destructor Destroy; override; function Info():String; end;
implementation uses FBuku, FBab2; constructor TBuku implementation uses FBuku, FBab2; constructor TBuku.Create(Judul : String; Pengarang : String; Jumlah : Integer); begin Self.Judul := Judul; Self.Pengarang := Pengarang; Self.Jumlah:= Jumlah; end; destructor TBuku.Destroy; begin Inherited Destroy; end; function TBuku.Info(): String; Info:= 'Judul: '+ Judul + #13#10 + 'Pengarang: '+ Pengarang + #13#10+ 'Jumlah: '+ IntToStr(Jumlah); end.
Review Dasar Struktur Data
Soal 1 Apa yang dimaksud dengan: Enumerasi Record Pointer Fungsi rekursif Variabel dinamis Konstruktor Destruktor New Dispose FreeMem
Soal 2 Terdapat dua buah himpunan seperti berikut: H1 = [2, 3, 4, 5] Apa hasil operasi berikut? H1 - H2 H2 - H1 H2 + H1 H1 + H2 H1 * H2
Soal 3 Buatlah program untuk mendeklarasikan array Bunga yang akan menampung 5 buah nama bunga, yaitu Mawar, Melati, Kenanga, Arumdalu dan Anthurium. Bagaimana pula pernyataan untuk mengisikan nama bunga tersebut?
Soal 4 Suatu array data diisi dengan: Buatlah program untuk menghitung nilai rata-rata dari kelima elemen tersebut. 70 80 60 76
Soal 5 Type TRecBuku = record Judul : String [60]; Jelaskan maksud program dibawah ini: Type TRecBuku = record Judul : String [60]; Pengarang : String[60]; Jumlah : Byte; End; TArrayRecBuku=array [1..10000] of TRecBuku; TPtrBuku = ^TArrayRecBuku; Var PtrData: TPtrBuku;