BAB II Pemrograman Borland Delphi
2.6 Initialization dan Finalization
Initialization adalah bagian yang dijalankan ketika aplikasi atau library (DLL) dipanggil ke memory oleh windows. Delphi menggunakan metode depth-first traversal untuk menjalankan kode initialization, yaitu sebelum blok initalization suatu unit dijalankan, blok initialization setiap unit yang di-uses akan dijalankan terlebih dahulu. Blok initialization setiap unit hanya dijalankan sekali. Bila ada unit lain yang melakukan uses terhadap unit tersebut, kode initialization tidak akan dijalankan lagi.
Finalization adalah bagian yang akan dijalankan ketika keluar dari aplikasi atau ketika library dibuang dari memory. Urutan pemanggilan blok finalization adalah kebalikan dari pemanggilan blok initialization. Sebagai catatan sebuah unit harus memiliki blok initialization untuk dapat memiliki blok finalization. Meskipun demikian bagian blok initialization bisa saja kosong.
Berikut ini contoh yang menggambarkan initialization dan finalization. o Panggil menu File – New – Other
o Pada Page New, pilih Console Application dan tekan tombol OK
o Kemudian pilih menu File-New-Unit sebanyak tiga kali, sehingga kita memiliki sebuah porgam utama dan tiga buah unit. Untuk masing-masing unit, ketikkan kode berikut (halaman berikutnya)
o Compile pgroam tersebut (Ctrl + F9). Untuk menjalankannya masuk ke DOS Window, dan jalankan program tersebut dari DOS Window, sehingga tampilan program bisa terlihat seluruhnya.
program Project1; {$APPTYLE CONSOLE} uses Unit1 in ‘Unit1.pas’, Unit2 in ‘Unit2.pas’, Unit3 in ‘Unit3.pas’; begin Writeln(‘Main Program’); end.
Hasilnya adalah sebagai berikut: unit Unit3; interface implementation initialization Writeln(‘Inizialitation Unit3’); finalization Writeln(‘Finalization Unit3’); end. unit Unit1; interface
uses Unit2, Unit3; implementation initialization Writeln(‘Inizialitation Unit1’); finalization Writeln(‘Finalization Unit1’); end. unit Unit2; interface uses Unit3; implementation initialization Writeln(‘Inizialitation Unit2’); finalization Writeln(‘Finalization Unit2’); end. Initialization Unit3 Initialization Unit2 Initialization Unit1 Main Program Tekan Enter Finalization Unit1 Finalization Unit2
Perhatikan bagian uses list dari Project1.dpr. Terlihat bahwa uses dimulai dari Unit1, diikuti Unit2 dan Unit3. Karena unit1 berada diurutan pertama useslist, maka Porject1 akan meminta Unit1 untuk menjalankan bagian initialization-nya. Tetapi sebelum Unit1 menjalankan initializaton dirinya, Unit1 tersebut akan memeriksa apakah ada uses list. Ternyata ada uses ke Unit2 dan Unit3 secara beruurutan. Maka Unit1 akan meminta Unit2 untuk menjalankan initialization. Ternyata unit2 pun ada uses ke unit3, sehingga unit2 akan meminta unit3 menjalankan initialization. Karena unit3 tidak ada uses ke unit apapun, maka unit3 akan menjalankan bagian initialization-nya dan mengembalikan kendali kepada unit2. Unit2 akan menjalankan initalization dan mengembalikan kendali kepada unit1. Unit1 akan meminta unit3 untuk memanggil initialization.Tetapi karena initialization unit3 sudah pernah dipanggil, maka kendali diberikan kepada unit1. Selanjutnya unit1 akan menjalankan bagian initializationnya, dan mengembalikan kendalai ke project2.
2.7 Konstanta
Konstanta adalah identifier yang bersifat tetap selama program berjalan. Pendefinisian konstanta dilakukan pada blok yang diawali dengan kata kunci
const. Bagian definisi konstanta dapat diletakkan pada bagian interface,
implementation, atau dimana saja dalam kode program. Peletakan konstanta
akan berpengaruh terhadap dikenalnya konstanta dari bagian lain program. Sebagai contoh, misalkan konstanta diletakkan pada bagian interface, maka konstanta tersebut akan dikenal oleh unit lain. Bila diletakkan pada bagian
implementation,maka konstanta tersebut hanya dikenal oleh unit tersebut.
Dikenalinya suatu identifier dari suatu lokasi tertentu dalam program biasa disebut dengan scope.
Delphi secara otomatis akan menentukan tipe konstanta berdasarkan nilai yang didefinisikan untuk konstanta tersebut. Meskipun demikian, kita bisa mendefinsiikan tipe konstanta kita secara eksplisit.
Kita bisa mengisi nilai konstanta dengan ekspresi yang memenuhi syarat tertentu. Ekspresi untuk konstanta biasanya disebut sebagai constant expression. Ekspresi ini mencakup angka, karakter, True, False, atau null, opeartor untuk numerik maupun string, serta bisa juga konstanta lain, asal sudah didefinisikan sebelumnya.
2.8 Variabel
Sebelum suatu variabel dapat digunkan, variabel tersebut harus didefinisikan terlebih dahulu.Untuk mendefinisikan variabel gunakan kata kunci var yang menandai area pendefinisian variabel. Peletakan area pendefinsian variabel ini dapat dilakukan dimana saja dalam program, dan akan berpengaruh terhadap scope-nya.
Setiap variabel yang didefinisikan harus mempunyai tipe. Untuk mendefinsikan tipe satu variabel, gunakan tanda titik dua (:). Berikut ini adalah contoh pendefinisian variabel.
Karena Value dan Sum bertipe sama, penulisannya bisa dilakukan sebagai berikut: unit Unit2; interface const AppCaption = “Programku“; procedure HitungData; implementation const xData = 10; yData = 100; procedure HitungData; const A: real = 10; begin
{Kode untuk hitung data}
end; end. var Value: Integer; Sum: Integer; Line: string;
2.9 Tipe Data
Dalam Delphi ada beberapa kelompok tipe data, yaitu o Boolean
Boolean adalah tipe data yang nilainya adalah True atau False. Dalam Delphi, Tipe data boolena disimpan dengan lebar 1 byte.
Operasi Boolean
Operasi Boolean memerlukan operan dengan tipe boolean (True atau
False) dan menghasilkan nilai boolean juga. Operator yang digunakan
dalam operasi boolean adalah sebagai berikut: Tabel 2.9.1 : Operator Boolean
Operator Operasi Contoh
not Negasi not(A>10)
and Menghasilkan nilai true bila kedua operan
bernilai True. Bila salah satu operan False maka hasilnya pasti False
A and B
or Menghasilkan nilai True bila salah satu operan
bernilai True. Bila keduanya False hasilnya adalah False
A or B
xor Menghasilkan nilai True bila hanya satu
operan yang True. Bila keduanya True atau keduanya False, maka hasilnya False
A xor B
o Integer
Integer adalah bilangan bulat. Dalam Delphi, terdapat beberapa tipe data yang merupakan Integer dan dikelompokkan sebagai generik dan fundamental.
Tabel 2.9.2 : Tipe generik
Tipe Data Range Format
Integer -2,147,483,648 sampai Signed 32-bit
var
Value, Sum: Integer; Line: string;
2,147,483,647
Cardinal 0 sampai 4,294,967,295 Unsigned 32-bit
Tabel 2.9.3 : Tipe Fundamental
Tipe Data Range Format
ShortInt -128 sampai 127 Singed 8-bit
SmallInt -32,768 sampai 32, 767 Singed 16-bit
LongInt -2,147,483,648 sampai
2,147,483,647
Singed 32-bit
Int64 -(2^63)..(2^63)-1 Singed 64-bit
Byte 0 sampai 255 unsinged 8-bit
Word 0 sampai 65,535 unsinged 16-bit
LongWord 0..4294967295 unsinged 32-bit
Operasi Aritmetik
Operasi aritmatik digunakan untuk melakukan penghitungan aritmatik. Operan dan hasil dari operasi arimetik adalah Integer atau Real. Operator yang digunakan dalam operasi aritmatik adalah sebagai berikut:
Tabel 2.9.4 : Operasi Aritmetik
Operator Operasi Tipe Operan Tipe Hasil
+ Penjumlahan Integer, Real Integer, Real
Jika salah satu operan real, maka hasilnya real
- Pengurangan Integer, Real Integer, Real
Jika salah satu operan real, maka hasilnya real
* Perkalian Integer, Real Integer, Real
Jika salah satu operan real, maka hasilnya real
/ Pembagian real Integer, Real Real
div Pembagian
integer
Integer Integer, hasil akan
Mod Pembagian sisa Integer Integer + (unary) Tanda + Integer, Real Integer, Real - (unary) Tanda - Integer, Real Integer, Real
Secara umum, operasi aritmatika terhadap integer akan menghasilkan tipe integer atau kardinal.
Operasi Bitwise
Operasi Bitwise adalah pengoperasian dua operan dengan tipe integer yang dipandang sebagai kumpulan bit.
Tabel 2.9.5 : Operasi Bitwise
Operator Operasi Contoh
not Bitwise not
Untuk setiap bit 0 menjadi 1 dan setiap bit 1 menjadi 0
A := 5; B := not A; A 5 0000 0101 --- not B 1111 1010 = 250
and Bitwise and
Bila dua bit bernilai 1, maka bit hasilnya bernilai 1. Jika salah satu bit bernilai 0,maka bit hasilnya bernilai 0 A := 5; B := 12; C := A and B; A 5 0000 0101 B 12 0000 1100 --- and C 0000 0100 = 4 or Bitwise or
Bila salah satu bit bernilai 1, maka bit hasilnya bernilai 1. Jika kedua bit bernilai 0,maka bit hasilnya bernilai 0 A := 5; B := 12; C := A or B; A 5 0000 0101 B 12 0000 1100 --- or C 0000 1101 = 13
xor Bitwise xor
Bila salah satu bit bernilai 1 dan bit lainnya bernilai 0, maka bit hasilnya bernilai 1. Bila keduanya 0 atau keduanya 1, maka bit hasilnya adalah 0
A := 5; B := 12; C := A xor B; A 5 0000 0101 B 12 0000 1100 --- xor C 0000 1001 = 9
shl Bitwise shift left
Menggeser semua bit ke kiri dari operan pertama sebanyak
A := 5; B := 2;
C := A shl B; A 5 0000 0101
operan kedua ---shl 2 C 0001 0100 = 20 shr Bitwise shift right
Menggeser semua bit ke kanan dari operan pertama sebanyak operan kedua A := 5; B := 2; C := A shr B; A 5 0000 0101 ---shr 2 C 0000 0001 = 1 o Real
Tipe generik Real pada Delphi didefinsikan sebagai Double. o Enumerated
Tipe data Enumerated adalah tipe data yang isinya terbatas pada nilai-nilai yang telah didefinisikan. Untuk mendefinsikan tipe data jenis ini digunakan kurung buka sebagai awal, kurung tutup sebagai akhir, serta setiap nilai yang mungkin dibatasi dengan koma
Contoh: type
TKartu = (Club, Diamond, Heart, Spade); TjenisKelamin = (Pria, Wanita);
Nilai ordinal dari tipe enumerated menunjukkan posisi nilai yang ada pada definisi mulai dari nol. Misalnya Ord(Pria) bernilai nol, dan Ord(Wanita) bernilai 1.
Tipe data ini seringkali berhubugan dengan tipe data set. o Set
Tipe data set adalah kumpulan elemen data yang masing-masing memiliki tipe yang sama. Set merupakan implementasi himpunan data. Untuk mendefinsikannya dapat dilihat pada contoh berikut;
o Char dan Wide Char
Tipe fundamental dari karakter adalah AnsiChar dan WideChar. AnsiChar berukuran 1 byte sedangkan WideChar berukuran lebih dari 1 byte. Char
type
TSetHuruf = set of Char;
var
Vokal: TSetHuruf; Konsonan : TSetHuruf; Angka : TSetHuruf; Kosong: TSetHuruf;
adalah tipe ordinal, sehingga memliki sifat-sifat tipe ordinal, misalnya
di-Increament, decreament, dan dapat menjadi pilihan dalam Case. Untuk
melihat nilai byte dari karakter, dapat menggunakan Ord(x), dimana x adalah char.
o String
Short String : string dengan panjang maksimum 255 karakter
Ansi String/Long String (atau hanya string saja) adlah string yang dialokasikan secara dinamik sesuai kebutuhan. Panjang Ansi String hanya dibatasi oleh memory yang tersedia. Variabel yang bertipe string sendiri sebenarnya adalah sebuah pointer yang berisi alamat di heap memory. Mekanisme alokasi dan dealokasinya dikelola oleh Delphi.