• Tidak ada hasil yang ditemukan

Initialization dan Finalization

Dalam dokumen LSP Telematika. Cover (Halaman 107-115)

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.

Dalam dokumen LSP Telematika. Cover (Halaman 107-115)