1. Tipe Data
===
1. Penggunaan memory dan rentang data
Ada perbedaan pengalokasian atau pemakaian memory untuk satu tipe data dengan tipe data lainnya. Tentu saja yang paling baik adalah sebisa mungkin menggunakan tipe data yang menggunakan memory paling kecil. Misalnya jika Anda memproses data nilai yang mempunyai range (rentang) 0 sampai 100 tanpa desimal (pecahan), maka yang paling tepat adalah menggunakan tipe data Byte (perlu memory 1 byte), dibandingkan kalau Anda menggunakan tipe Word (2 byte) atau Integer (4 byte). Namun tentu saja, jika bilangan yang diproses bisa melebihi range tipe Byte, atau mempunyai bilangan desimal (pecahan), maka Anda tidak boleh menggunakan tipe Byte.
2. Ketelitian penghitungan
1. Pilih menu File, New Ialu Application. Setelah itu, tampilkan form dengan menekan tombol F 12 (jika belum tampil).
2. Tambahkan dua buah object Label (TLabel) dan sesuaikan property Caption-nya
3. Tambahkan dua buah object TEdit dan atur ukuran dan tata letaknya seperti
4. Tekan tombol F12 atau klik ganda pada object TForm (Form1), sehingga muncul jendela editor kode program.
5. Ketik kode programnya seperti pada contoh Lat02 di bawah.
6. Pilih menu File lalu Save Project As atau klik icon Save All. Selanjutnya berilah nama Lat02 untuk menyimpan unit dan PLat02 untuk menyimpan project.
7. Jalankan program dengan memilih menu Run lalu Run atau klik icon Run atau tekan tombol F9. Perhatikan bahwa ketelitian penghitungan tipe data Double lebih baik dari Single.
===
unit Lat02;
interface
uses windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrIs;
type
TForm1= class(TForm);
Label1: TLabel;
Label2: TLabel;
Edit1 TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: Tobject);
private
{ Private declarations public }
public
{ Public declarations }
end;
var
Form1: TForm1
Sgl :single;
Dbl :double;
SSgl, SDbl : string;
implementation
{$R *.dfm) 1
procedure TForm1.FormCreate(Sender: TObject);
begin
Sgl:=1/3;
Dbl:=1/3;
Sgl:=Sgl*10e7;
Dbl:=Dbl*10e7;
str(Sgl:10:20,SSgl);
str(Dbl:10:20,SDbl);
Edit1.Text:=SSgl;
Edit2.Text:=SDbl;
End;
1.1 Tipe Integer
Tipe | Rentang Nilai | Byte |
Byte | 0..255 | 1 |
Word | 0..65535 | 2 |
Longword | 0..4294967295 | 4 |
ShortInt | -128..127 | 1 |
SmallInt | -32768 .. 32767 | 2 |
LongInt | -2147483648...2147483647 | 4 |
Integer | -2147483648..2147483647 | 4 |
Cardinal | 0. . 4294967295 | 4 |
Int64 | -263 . .2 63-1 | 8 |
1.2 Tipe Real
Tipe | Rentang Nilai | Byte |
Real48 | 2.9 x 10-39 ..1.7 x 1038 | 6 |
Single | 1.5 x 10-45 ..3.4 x 1038 | 4 |
Double | 5.0 x 10-314.. 1.7 x 10308 | 8 |
Extended | 3.6 x 10-4951.. 1.1 x 104932 | 10 |
Comp | -263+1 ..263-1 | 8 |
Currency | -922337203685477.5808.. 922337203685477.5807 | 18 |
Tipe Double ekuivalen dengan tipe Real yang umum dipakai. Tipe Real48 digunakan untuk menjaga kompatibilitas dengan versi versi sebelumnya. Tipe Real48 menghasilkan proses yang lebih lambat Tipe Extended menghasilkan ketelitian yang lebih baik, tetapi kurang kompatibilitas jika program nantinya didesain untuk sharing dengan platform lain. Tipe Comp adalah tipe ash yang digunakan CPU Intel yang sebetulnya mewakili tipe integer 64 bit, tetapi dikelompokkan dalam tipe real karena tidak mempunyai sifat ordinal. Comp dipakai untuk menjaga kompatibilitas dengan versi sebelumnya. Sebaiknya gunakan Int64 untuk unjuk kerja yang lebih baik.
Tipe Currency termasuk fixed-point (tidak ditulis dalam a x 10b) yang mempunyai sifat meminimalkan kesalahan penghitungan pembulatan. Tipe ini sangat cocok untuk penggunaan penghitungan yang melibatkan nilai mata uang.
1.3 Tipe Boolean
Tipe data boolean dipakai untuk menyatakan data logika, yaitu True (benar) dan False (salah). Delphi rnempunyai empat tipe boolean seperti berikut ini.
Tipe | Byte |
Boolean | 1 |
ByteBool | 1 |
WordBool | 2 |
LongBool | 4 |
Disarankan yang digunakan adalah tipe Boolean. Tipe yang lain, yaitu ByteBool, WordBool dan LongBool sebaiknya hanya digunakan untuk menjaga kompatibilitas, yaitu jika program akan dihubungkan dengan program dalam bahasa lain atau dengan bagian Windows yang menggunakan tipe yang sama.
1.4 Tipe Character
Tipe data character digunakan untuk menyatakan karakter satu huruf. Delphi menyediakan tiga tipe data character berikut ini.
Tipe | Isi | Byte |
Char | 1 karakter ANSI | 1 |
AnsiChar | 1 karakter ANSI | 1 |
WideChar | 1 karakter Unicode | 2 |
1.5 Tipe String
Tipe data string dipakai untuk menyatakan sederetan karakter yang membentuk satu kesatuan, misalnya nama, alamat, kode barang dan lain-lain. Tipe data string bisa juga diisi karakter kosong atau satu karakter. Delphi mempunyai tiga tipe data string, yaitu seperti berikut ini.
Tipe | Byte | Isi Maksimum |
ShortString | 2 s.d. 256 | 256 karakter |
AnsiString | 4 s.d. 2GB | 231 karakter |
WideString | 4 s.d. 2GB | 230 karakter |
Tipe ShortString disediakan hanya untuk menjaga kompatibilitas dengan versi sebelumnya. AnsiString untuk menyimpan karakter ANSI dan WideString untuk menyimpan karakter Unicode.
Pada saat menulis kode program, Anda bisa menggunakan tipe data String yang umum dipakai. Pada saat dikompilasi, tipe String ini akan otomatis dianggap sebagai AnsiString jika direktif yang dIgunakan adalah {$H+} atau dianggap sebagai ShortString jika direktif yang digunakan adalah {$H-1} Jika tidak menggunakan direktif di atas, maka dianggap defaultnya {$H+}
1.6 Tipe Array
Array adalah variabel tunggal yang dapat dipakai untuk menyimpan sekumpulan data sejenis . Untuk membedakan tempat menyimpan satu data dengan data lainnya, array menggunakan nomor elemen di sebelah kanan nama array. Sebagai contoh, perhatikan potongan program berikut ini.
var
Bulan : array[1..12] of AnsiString;
begin
Bulan[1] := 'Januari';
Bulan[2]:= 'Pebruari';
.....
.....
Edit1.text . Bulan[1];
1.7 Tipe Record
Tipe data record dipakai untuk menyimpan sekumpulan data yang mungkin berbeda tipe, tetapi saling berhubungan. Contoh tipe data record misalnya untuk menampung data barang yang tiap satu data record berisi data kode barang, nama barang dan harga satuan. Perhatikan contoh potongan program berikut ini.
type
RecBrg = record
Kode : Ansistring[6];
Nama : Ansistring[30];
HSatuan : Currency;
end;
var
Barang: recBrg;
begin
Barang.Kode := 'Ps.001';
Barang.Nama := 'PENSIL 2B';
Barang.HSatuan:= 2500;
1.8 Tipe Terenumerasi dan Subrange
Tipe data terenumerasi dan tipe data subrange dipakai untuk menyatakan data berurutan yang bertipe sama. Contoh deklarasi tipe data terenumerasi seperti berikut ini.
type
Warna = (Merah, Biru, Hijau, Kuning, Orange, Hitam Putih);
var
WarnaCat : warna;
Contoh deklarasi tipe subrange seperti berikut ini.
type
warnaku = Biru..Orange;
HurufBesar = 'A'..'Z';
Nilai := 0..100;
var
WarnaCat : Warnaku;
NilaiUjian : Nilai;
NilaiAkhir : HurufBesar;
1.9 Tipe Ordinal
Tipe ordinal terdiri atas tipe integer, character, Boolean, enumerated, and subrange types. Tipe ordinal mempunyai sifat terurut. Tiap anggota ordinal, kecuali urutan pertama, akan mempunyai "Nilai sebelumnya" atau n-1 dan tiap anggota, kecuall yang terakhir, akan mempunyai "nilai sesudahnya" atau n+1.
Data bertipe ordinal akan dapat dioperasikan dengan beberapa function yang dirancang pada tipe ordinal. Sebagai contoh perhatikan tabel di bawah ini, dengan anggapan argumen n adalah suatu bilangan integer.
Function | Hasil | Keterangan |
Ord(n) | n | Misal n=3, hasil=3 |
Pred(n) | n-1 | Misal n=3, hasi 1=2 |
Succ(n) | n+l | Misal n=3, hasil=4 |
High(n) | Nilai tertinggi tipe data n | Misal n adalah integer, maka hasil=2147483647 |
Low(n) | Nilai terendah tipe data n | Misal n adalah integer, maka hasil=-2147483648 |
2. Konstanta
begin
. . .
. . .
JumDisc:= Jumlah * 0.1 + Jumlah * 0.15;
Potongan program di atas boleh ditulis dalam bentuk seperti di bawah ini.
const
DiscAng = 0.1;
DiscTunai = 0.15;
begin
. . .
. . .
JumDisc:=Jumlah * DiscAng + Jumlah * DiscTunai;
Keuntungan penggunaan konstanta antara lain seperti berikut ini.
1. Program lebih mudah dimengerti (terbaca).
2. Menghindarkan salah ketik, karena jika Anda salah mengetik nilainya, maka pada saat kompilasi tidak terdeteksi kesalahan. Sedangkan jika Anda salah mengetik nama konstanta, maka pada saat kompilasi akan terdeteksi kesalahannya.
3. Jika dalarn satu program nilai konstanta dipakai berulang kali, maka jika ada perubahan data nilai konstanta, cukup yang diubah adalah pada deklarasi konstantanya saja.
3. Variabel
Variabel adalah suatu tempat yang dialokasikan dalarn memory yang diberi nama (sebagai pengenal) untuk menampung suatu data. Perbedaan antara variabel dan konstanta adalah seperti berikut ini.
1. Konstanta dipergunakan pada saat kompilasi program, sedangkan variabel digunakan pada saat pelaksanaan program. Jadi, pada saat kompilasi Delphi akan mengganti semua konstanta dengan nilai konstantanya, sehingga hasil kompilasi sudah berupa nilai konstantanya, sedangkan variabel tidak diganti, pada hasil kompilasi tetap berupa nama variabelnya. Pada saat program dijalankan, barulah Delphi dapat mengambil nilai dari suatu variabel, sedangkan konstanta sudah berupa nilainya.
2. Konstanta tidak dapat berubah pada saat program berjalan, sedangkan variabel dapat berubah atau diubah nilainya. Untuk mengubah nilai konstanta, maka harus diubah pada deklarasi konstanta dalarn kode programnya dan harus dikompilasi lagi.
3.1 Nama Variabel
Setiap variabel pasti mempunyai nama, yang sering disebut sebagai Identifier. Identifier sebetuInya tidak terbatas pada nama variabel, melainkan termasuk nama konstanta, function, procedure, field, type, property, unit, program, library dan packages. Dalam menggunakan nama variabel, sebaiknya digunakan nama yang sesuai dengan data yang dikandungnya serta mudah diingat.
Gunakan nama variabel yang singkat tapi jelas, misalnya NamaSiswa, Alamat, GajiPokok dan lain-lain. Penulisan huruf besar dan kecilnya diatur supaya mudah dibaca. Anda tidak perlu mengkhawatirkan konsistensi penulisan huruf besar kecilnya, karena Delphi akan menganggap sama antara huruf besar dan kecil.
Beberapa aturan yang berlaku pada penggunaan nama variabel adalah seperti berikut ini.
1. Harus dimulai dengan karakter alfabet (huruf) atau bawah
2. Harus unik (tidak boleh ada yang sarna) pada ruang lingkup (scope) variabel yang sama.
3. Panjangnya boleh berapa saja, tetapi hanya 255 karakter pertama yang dianggap sebagai nama variabeInya. Jadi, karakter ke-256 dan seterusnya diabaikan.
4. Beberapa karakter tidak diperbolehkan dipakai, misainya karakter yang dipakal sebagai operator (+, -, *, /, c, -- dan lain-lain), titik dua, korna dan lain-lain. Nama variabel juga tidak boleh sama dengan nama procedure atau function yang terdapat pada Delphi (reserved words).
3.2 Ruang Lingkup Variabel
Tempat Deklarasi | Ruang Lingkup |
Tempat deklarasi program, function atau procedure | Mulai dari posisi deklarasi sampai akhir blok (program, function atau semua blok yang berada dalarn blok procedure), termasuk (sub-blok). |
Bagian interface sebuah unit | Mulai dari posisi dideklarasikan sampai akhir unit. Juga termasuk program lain atau unit lain yang menggunakan unit sekarang. |
Bagian implementa tion sebuah unit, tetapi bukan di dalam blok function atau procedure | Mulai posisi dideklarasikan sampai akhir unit, termasuk dalarn function atau procedure dalam unit tersebut. |
Pada definisi tipe record | Mulai posisi dideklarasikan sampai akhir definisi tipe record |
3.3 Ruang Lingkup Global dan Lokal
5. Simpan unit dengan nama Lat03 dan simpan project dengan nama PLat03.
6. Jalankan program. Cobalah klik dan klik ganda secara berulang pada form dan perhatikan caption (judul) form. Dapat Anda lihat variabel tidak saling mengganggu.
unit Lat03;
interface
uses
windows, Messages, SysUtils, Variants, Classes, Graphics, controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormClick(Sender: Tobject);
procedure FormDblClick(Sender: Tobject);
private
{Private declarations}
public
{ Public declarations}
end;
var
Form1: TForm1;
A : string; //deklarasi global
implementation
{$R *.dfm}
procedure TForm1.FormClick(Sender: Tobject);
var A : string; //deklarasi lokal
begin
A:='Isi variabel A lokal'; //isi variabel lokal
Form1.Caption:=A; //cetak variabel lokal pada caption
end;
procedure TForm1.FormDblClick(Sender:Tobject);
begin
Form1.Caption:=A; //cetak variabel global pada caption
end;
begin //program utama, dijalankan pertama
A:='Isi variabel A global'; //kali mengisi variabel global,
end. //tetapi belum dicetak pada caption
4. Operator
Operator | Hierarki |
@, not first | Tertinggi |
*,/, div, mod, and, shl, shr, as | Kedua |
+,-,or, xor | Ketiga |
=,<>,<,>,<=,>=,in,is | Keempat |
4.1 Operator Penugasan (Assignment)
Operator penugasan (assignment) disimbolkan dengan tanda titik dua diikuti tanda sama dengan dan ditulis berdempetan tanpa spasi. Operator penugasan berfungsi untuk memasukkan suatu data ke dalarn suatu variabel. Bentuk penulisannya seperti berikut ini.
Contoh:
Nama :='Budi';
Bilangan:= 0;
Harga :=500;
Banyak:= 5;
Jumlah:= Banyak * Harga;
4.2 Operator Aritmatika
Operator | Operasi | Tipe Diproses | Tipe Hasil |
* | Perkalian | Integer Real | Integer Real |
/ | Pembagian | Integer Real | Real Real |
Div | Pembagian bulat | Integer | Integer |
Mod | Sisa pem bagian | Integer | Integer |
+ | Penambahan | Integer Real | Integer Real |
- | Pengurangan | Integer Real | Integer Real |
Sebagai contoh, perhatikan potongan program berikut ini
A:= 2 * 3; //hasilnya 6
A:= 2 * 3; //hasilnya 6
A:= 5 / 2; //hasilnya 2.5
A:= 5 div 2; //hasilnya 2
A:= 5 mod 2; //hasilnya 1
A:= 5 + 2; //hasilnya 7
A:= 5 2; //hasilnya 3
Lalu bagaimana dengan operasi pangkat? Delphi secara tradisi memang tidak menyediakan operator untuk pemangkatan. Sebagai gantinya Anda dapat menggunakan rumus matematika a^x = exp(x*ln(a)) atau jika hanya pangkat 2, misalnya a^2, maka dapat ditulis a*a. Perhatikan potongan program berikut ini.
A:=2;
B:=3;
C:=exp(B*ln(A)); //C berisi 8
D:=exp(B*ln(5)); //D berisi 125
Untuk lebih mudah mengingat, rumus untuk menulis pangkat menjadi exp(
4.3 Operator Relasi
Operator relasi atau pembandingan digunakan untuk membandingkan suatu ekspresi atau data dengan ekspresi atau data lain. Hasil penggunaan operator relasi adalah data logika (boolean) benar atau salah. Tentu saja, antara dua ekspresi atau data yang dibandingkan harus mempunyai tipe yang sama. Tabel operator relasi yang disediakan Delphi adalah seperti berikut ini
Operator | Keterangan |
= | Sama dengan |
<> | Tidak sama dengan |
< | Lebih kecil |
> | Lebih besar |
<= | Lebih kecil atau sarna dengan |
>= | Lebih besar atau sama dengan |
Beberapa contoh penggunaan operator relasi dapat Anda lihat seperti di bawah ini.
A := 2 > 3; //A berisi False
A := 2 + 2 > 3; //A berisi True
A := 3 > 2 + 2; //A berisi False
A := 3 >= 3; //A berisi True
Dari contoh di atas terlihat bahwa operator relasi hierarkinya lebih rendah dari operator aritmatika, sehingga operator aritmatika selalu dijalankan lebih dahulu sebelum operator relasi.
4.4 Operator Logika
Digunakan untuk mengekspresikan satu atau lebih data atau ekspresi logika (boolean), menghasilkan data logika (boolean) baru. Tabel operator logika dengan hierarki dari atas ke bawah adalah seperti berikut ini.
Operator | Keterangan |
Not | Tidak |
And | Dan |
Or | Atau |
Xor | Exclusive Or |
Operator logika Not dipakai untuk menghasilkan nilai kebalikan dari suatu ekspresi atau data logika. Operator Not mempunyai hierarki paling tinggi di antara operator logika lainnya. Tabel hasil ekspresi logika Not dapat Anda lihat seperti pada tabel berikut ini.
Ekspresi | Hasil |
Not True | False |
Not False | True |
Tes:= Not(5 > 4) //Tes berisi False
Tes:= Not(5 = 4) //Tes berisi True
Operator Logika And
Operator logika And akan menghasilkan niial boolean True hanya jika dua buah ekspresi di kiri dan kanan operator Anda bernilai True. Tabel hasil ekspresi logika And dapat Anda lihat seperti pada tabel di bawah ini
Ekspresi | Hasil |
False And False | False |
False And True | False |
True And False | False |
True And True | True |
Tes:= (5 < 4) And (3 < 2); //Tes berisi False
Tes:= (5 <> 2); //Tes berisi False
Tes:= (5 > 4) And (3 < 2); //Tes berisi False
Tes:= (5 > 4) And (3 > 2); //Tes berisi True
Operator Logika Or
Operator logika Or akan menghasilkan nilai boolean True jika salah satu dari dua buah ekspresi atau kedua ekspresi di kiri dan kanan operator Or bernilai True. Jadi operator Or akan menghasilkan nilai False hanya jika kedua ekspresi di kiri dan kanan operator Or semuanya bernilai False. Tabel hasil ekspresi logika Or adalah seperti berikut ini.
Ekspresi | Hasil |
False Or False | False |
False Or True | True |
True Or False | True |
True Or True | True |
Tes := (5 < 4) Or (3 < 2); //Tes berisi False
Tes := (5 <> 2); //Tes berisi True
Tes := (5 > 4) Or (3 < 2); //Tes berisi True
Tes := (5 > 4) Or (3 > 2); //Tes berisi True
Operator Logika Xor
Operator logika Xor akan menghasilkan nilai True jika ekspresi di sebelah kiri Xor berbeda dengan ekspresi di sebelah kanannya. Jadi, operator logika Xor dapat diartikan "jika beda" akan bernilai True. Tabel hasil ekspresi logika Xor adalah seperti berikut ini.
Ekspresi | Hasil |
False Xor False | False |
False Xor True | True |
True Xor False | True |
True Xor True | False |
Tes := (5 < 4) Xor (3 < 2); //Tes berisi False
Tes := (5 <> 2); //Tes berisi True
Tes := (5 > 4) Xor (3 < 2); //Tes berisi True
Tes := (5 > 4) Xor (3 > 2); //Tes berisi False
- Sekarang, Anda bisa pasang iklan disini!
- Mau Tukeran Link Dengan Blog Ini? (Pengunjung Blog Ini Lebih dari 100/hari)
- Cek Jumlah Pengunjung
|