TIPE DATA, VARIABLE, dan OPERATOR DELPHI A. TIPE DATA Delphi merupakan bahasa pemrograman tingkat tinggi yang mendukung perancangan terstruktur dan berorientasi Object. Bahasa pemrograman ini berdasarkan Object pascal yang keuntungannya antara lain kodenya mudah dibaca, cepat dikompilasi dan mengunakan file unit yang banyak untuk pemrograman mudular.Penulisannya tidak case sensitive. Berikut dijelaskan struktur dasar bahasa pemrograman Delphi. 1. Struktur Program Delphi Program penyusunan suatu projek Delphi biasanya dibagi dalam modul sourcecode yang disebut Unit. Khusus untuk unit yang berisi program utama disebut dengan nama projek. 2. Struktur Proyek Pada suatu projek yang akan dibangun, terdapat sebuah file program utama yang berisi kode program untuk pengelolaan unit-unit. Kode program utama ini biasanya juga disebut kode projek dan disimpan dalam file berektensi. DPR. 3. Struktur Unit Sebuah Unit berisi tipe-tipe, konstanta-konstanta, variabel, dan rutin (fungsi dan prosedur). Setiap unit didefinisikan dalam file .Pas Sebuah unit dimulai dengan unit heading, yang diikuti dengan bagian interface, implementation, initialization, dan finalization. Bagian initialization, dan finalization bersifat opsional, boleh memiliki deklarasi atau tidak menyertakan, tergantung kebutuhan. 4. Sintaks Dasar Dalam suatu kode program unit atau projek, elemen sintaksis dasar (yang disebut token) bergabung , membentuk ekspresi, deklarasi, statemen. Statemen adalah aksi algoritma yang dieksekusi di dalam program. Ekspresi adalah satuan sintaksis yang ada di dalam statemen dan menunjukkan sebuah nilai. Deklarasi adalah sebuah pengenal/identifier ( Contoh nama fungsi, variabel) yang digunakan dalam ekspresi dan statemen. 5. Tipe Data, Variabel, dan Konstanta Tipe data adalah suatu jenis data, ketika deklarasikan sebuah variabel. Variabel adalah identifier yang nilainya dapat diubah pada saat aplikasi dijalankan. Konstanta adalah identifier yang nilainya telah ditentukan.
6. Macam-Macam Tipe data Beberapa hal tentang pertimbangan penggunaan tipe data dapat Anda simak dalam penjelasan berikut ini. a. 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 data Word (2 byte) atau Integer (4 byte). Akan tetapi, tentu saja, jika bilangan yang diproses melebihi range tipe Byte, atau mempunyai bilangan desimal (pecahan), Anda tidak boleh menggunakan tipe Byte. b. Ketelitian perhitungan Meskipun penghematan memory penting, tetapi kebenaran hasil perhitungan jauh lebih penting. Oleh karena itu, jika ketelitian perhitungan (presisi) paling tinggi. Sebagai contoh tipe data Double mempunyai ketelitian yang lebih baik dibandingkan tipe Single, tetapi menggunakan memory lebih besar.
Borland Delphi 7.0 mempunyai tipe data yang dibagi dalam tujuh kelompok dasar, yaitu integer, real, boolean, character, string, pointer, dan variant . Berikut ini adalah penjelasan mengenai tipe-tipe data tersebut: a. Tipe Integer Tipe Integer fundamental terdiri atas Shortint, Smallint, Longint, Int64, Byte, Word, dan Longword. Tabel 2.1 memperlihatkan range dan format penyimpanan masing-masing tipe data tersebut. Tabel 2.1 Range dan Format Tipe Data Integer Fundamental Tipe Data Range Format Shortint -128…127 8 bit, bertanda Smallint -32768…32767 16 bit, bertanda Longint 32 bit, bertanda 2147483648…2147483647 Int64 -2^63…2^63-1 64 bit, bertanda Byte 0…255 8 bit, bertanda Word 0…65535 16 bit, bertanda Longword 0…4294967295 32 bit, bertanda
b. Tipe Real Tipe data real menyatakan himpunan bilangan yang dapat dinyatakan dengan notasi floating point. Tabel 2.2 memperlihatkan range dan format penyimpanan tipe real fundamental. Tabel 2.2 Range dan Format Penyimpanan tipe Data Real Tipe Range Digit Ukuran Data (Byte) Real48 2.9x10^-39…1.7x10^38 11-12 6 Single 1.5x10^-45…3.4x10^38 7-8 4 Double 5.0x10^-324…1.7x10^308 15-16 8 Extended 3.6x10^19-20 10 4951…1.1x10^4932 Comp -2^63+1…2^63-1 19-20 8 Currency 19-20 8 922337203685477.5808… 922337203685477.5807 c. Tipe Boolean Terdapat empat tipe data Boolean yaitu Boolean, ByteBool, WordBool, dan LongBool. Sebuah variabel Boolean menempati satu byte memori, variabel ByteBool juga menempati satu byte, variabel WordBool menempati dua byte (satu word), dan variabel LongBool menempati empat byte (dua word). Nilai Boolean ditunjukkan dengan true dan false. Tipe ordinal terdiri atas tipe integer, character, boolean, enumerated, and subrange types. Tipe ordinal mempunyai sifat terurut. Tabel 2.3 Hubungan tipe Boolean dengan ByteBool, WordBool, dan LongBool Boolean False < True Ord (False) = 0 Ord (True) = 1 Succ (False) = True Pred (True) = False
ByteBool, WordBool, LongBool False <> True Ord (False) = 0 Ord (True) <> 0 Succ (False) = True Pred (False) = True
d. Tipe Character Tipe character fundamental adalah AnsiChar dan WideChar. Nilai AnsiChar adalah karakter berukuran byte (8 bit) yang diurutkan menurut himpunan character lokal, yang mungkin berupa multibyte. Karakter WideChar menggunakan lebih dari satu byte untuk menyatakan setiap karakter. Dalam implementasi ini, karakter WideChar berukuran word (16
bit) yang diurutkan berdasarkan himpunan karakter Unicode. Karakter Unicode 256 pertama berkaitan dengan karakter ANSI. Tipe character generic adalah char, yang ekivalen dengan AnsiChar. Karena implementasi char cenderung berubah, disarankan menggunakan fungsi standar SizeOf daripada menggunakan konstanta yang sulit dikodekan ketika menulis program yang memerlukan penanganan karakter dengan ukuran yang berbeda-beda. e. Tipe String Tipe string merepresentasikan rangkaian karakter. AnsiString, yang seringkali disebut dengan long string, adalah tipe yang dipilih untuk sebagian besar pemakaian. Tipe string dapat dicampur pada penerapan nilai dan ekspresi. Kompiler ini secara otomatis membentuk konversi yang diperlukan. Tetapi string yang dilewatkan by reference pada fungsi atau prosedur haruslah tipe yang sesuai. String dapat berlaku secara eksplisit menjadi tipe string yang berbeda. Delphi mendukung tipe string yang didefinisikan seperti pada Tabel 2.4 . Tabel 2.4 Macam-Macam Tipe Data String Tipe Data Panjang Kebutuhan Dipakai untuk Maksimum Memori ShortString 255 karakter 2 sampai 256 byte Kompabilitas AnsiString -2^31 4 byte sampai 2GB 8 bit (ANSI) character, DBCS karakter ANSI, MBCS ANSI, dll WideString -2^30 4 byte sampai 2GB Unicode characters, multi user server and aplikasi multi karakter language f.
Tipe Pointer Pointer adalah sebuah variabel yang menunjukkan sebuah alamat memori. Ketika sebuah pointer berisi alamat variabel lainnya, dapat dikatakan ia menunjuk ke lokasi variabel tersebut di memori atau ke data yang disimpan di sana. Dalam kasus sebuah array atau tipe terstruktur lainnya, pointer berisi alamat elemen pertama dalam struktur tersebut. Jika alamat tadi telah diambil, maka pointer tersebut mengandung alamat elemen pertama tersebut. Pointer dipakai untuk mengindikasikan jenis data yang disimpan pada alamat yang dikandungnya. Penggunaan umum tipe pointer dapat merepresentasikan sembarang data, meskipun lebih banyak tipe pointer dikhususkan untuk mengacu pada tipe data tertentu. Pointer menempati empat byte memori.
g. Tipe Variant Kadang-kadang diperlukan memanipulasi data yang tipenya berubah-ubah atau tidak dapat ditentukan pada saat kompilasi. Dalam kasus demikian, satu pilihannya adalah dengan menggunakan variabel dan parameter bertipe variant, yang menyatakan nilai yang bisa berubah saat runtime. Variant menawarkan fleksibilitas lebih tetapi membutuhkan memori yang lebih besar dibanding variabel biasa, juga operasi menggunakannya menjadi lebih lambat. Secara default, variant dapat berisi semua tipe data, kecuali record, set, array statik, file, class, class reference, dan pointer. Dengan kata lain, variant dapat berisi sembarang tipe data yang bukan tipe data terstruktur dan pointer.
B. Variabel Variabel adalah suatu tempat yang dialokasikan dalam memory yang diberi nama (sebagai pengganti) untuk menanmpung suatu data. Perbedaan antara variabel dan konstanta adalah seperti berikut ini. 1. Konstanta digunakan pada saat kompilasi program, sedangkan variabel digunakan pada saat pelaksanaan program. 2. Konstanta tidak dapat berubah pada saat program berjalan, sedangkan variabel dapat berubah atau diubah nilainya. 1. Nama Variabel
Setiap variabel pasti mempunyai nama, yang sering disebut sebagai Identifier. Identifier sebetulnya tidak terbatas pada nama variabel, melainkan termasuk nama konstanta, function, procedure, field, type, property, unit, program, library dan package. Dalam menggunakan nama variabel, sebaiknya digunakan nama yang sesuai dengan data yang dikandungnya serta mudah diingat. Beberapa aturan yang berlaku pada penggunaan nama variabel adalah seperti berikut ini. 1. Harus dimulai dengan karakter alfabet (huruf) atau garis bawah. 2. Harus unik (tidak boleh ada yang sama) pada ruang lingkup (scope) yang sama. 3. Panjangnya boleh berapa saja, tetapi hanya 255 karakter pertama yang dianggap sebagai nama variabelnya. Jadi, karakter ke 256 dan seterusnya diabaikan. 4. Beberapa karakter tidak diperbolehkan dipakai, misalnya karakter yang dipakai sebagai operator (+, -, *, /, <, >, dan lain - lain), titik dua, titik koma, dan lain - lain. Nama variabel juga tidak boleh sama dengan procedure atau function yang terdapat dalam Delphi (reserve words). 2. Ruang Lingkup Variabel
Ruang lingkup variabel (variable scope) adalah ruang atau daerah di mana variabel yang dibuat dapat dikenali (dapat dipakai). Ruang lingkup variabel biasanya juga berhubungan dengan umur (waktu hidup) variabel. Ada variabel yang dapat dikenal di seluruh bagian program (project) dan hidup selama program masih berjalan, ada juga variabel yang hanya dikenal hanya
pada procedure atau function tempat variabel tersebut dideklarasikan dan hidup hanya selama procedure atau function tersebut sedang berjalan.
Secara umum, suatu variabel dapat dikanali pada bagian variabel tersebut dideklarasikan, jadi ruang lingkup variabel adalah pada lingkup variabel tersebut dideklarasikan, seperti pada tabel berikut. Tempat Deklarasi
Ruang Lingkup
Tampat deklarasi program, function atau procedure
Mulai dari posisi deklarasi sampai akhir blok (program, function atau procedure), termasuk semua blok yang berada dalam blok (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 implementation sebuah unit, tetapi bukan di dalam blok function atau procedure
Mulai dari posisi dideklarasikan sampai akhir unit, termasuk dalam function atau procedure dalam unit tersebut.
Pada saat definisi tipe record
Mulai dari posisi dideklarasikan sampai akhir definisi tipe record
3. Ruang Lingkup Global dan Lokal
Secara umum, nama variabel atau identifier dibagi dalam dua kategori, yaitu lokal dan global. Variabel atau identifier yang mempunyai ruang lingkup yang sempit, terutama ruang lingkup function dan procedure, disebut lokal dan yang mempunyai ruang lingkup yang luas, misalnya ruang lingkup unit, disebut global.
C. OPERATOR Dalam melaksanakan proses pengolahan data, Delphi menyediakan berbagai operator dengan hirarki atau urutan proses pelaksanaan yang berbeda untuk beberapa operator yang dilibatkan dalam suatu proses. Berikut ini hirarki operator yang dimiliki Delphi. Urutan 1 2 3 4
Operator @, not *, /, div, mod, and, shl, shr, as +, -, or, xor =, <,>, <=, >=, <>, in, is
Apabila terdapat ekspresi A + B / C, maka operasi yang akan dikerjakan terlebih dahulu adalah B / C, setelah itu hasilnya ditambahkan dengan A. Urutan proses tersebut terjadi karena operator pembagian mempunyai urutan proses pelaksanaan yang lebih tinggi dari penjumlahan. Namun jika bentuk ekspresi diubah menjadi (A + B) / C, maka operasi yang akan dikerjakan terlebih dahulu adalah (A+B), lalu hasilnya dikalikan dengan C. Hal ini menunjukkan bahwa tanda kurung dapat digunakan untuk mendahulukan proses. Bila ada proses yang terdiri dari beberapa operator yang mempunyai urutan proses yang sama, maka urutan proses yang akan dikerjakan dimulai dari kiri ke kanan. a. Operator Pemberian Operator pemberian (assignment) adalah operator yang dituliskan dengan notasi “:=” (titik dua sama dengan) dan berfungsi untuk memasukkan atau memberikan suatu nilai atau data ke dalam sebuah variabel, dengan sintaks sebagai berikut : Nama_Variabel := Ekspresi ; Contoh : Harga Jumlah HTotal
: = 100; : = 20; : = Harga * Jumlah ;
b. Operator Aritmatika Berikut ini adalah operator aritmatika yang dapat digunakan untuk mengerjakan proses operasi aritmatika. Operator
Fungsi
* / + Div
Perkalian Pembagian real Penjumlahan Pengurangan Pembagian integer Sisa hasil pembagian
Mod
Tipe yang Diperoses Integer, Real Integer, Real Integer, Real Integer, Real Integer
Tipe Hasil Proses Integer, Real Integer, Real Integer, Real Integer, Real Integer
Integer
Integer
Contoh : Angka1 : = 15 * 2; Angka2 : = 18 / 2; Angka3 : = 5 + 2; Angka4 : = 5 – 2; Angka5 : = 10 Div 3; Angka6 : = 10 mod 3;
{Hasil 30} {Hasil 9} {Hasil 7} {Hasil 3} {Hasil 3} {Hasil 1}
Hasil pengerjaan 10 div 3 menghasilkan nilai 3 dengan pembulatan ke bawah, dan 10 mod 3 menghasilkan nilai 1 karena sisanya 1. Sedangkan untuk operasi perpangkatan, Anda dapat menggunakan rumus sebagai berikut : Ab = exp ( b * Ln (A)) Contoh : Angka1 : = 5; Angka2 : = 2; Hasil1 : = exp (Angka1 * Ln (Angka2)); Hasil2 : = exp (Angka2 * Ln (Angka1));
c. Operator Relasi
{Hasil 32 dari 25} {Hasil 25 dari 52}
Operator relasi berfungsi untuk membandingkan suatu nilai (ekspresi) dengan nilai (ekspresi) yang lain dan menghasilkan suatu nilai logika (boolean) yaitu True atau False. Kedua nilai yang dibandingkan harus memiliki tipe data yang sama. Berikut ini adalah operator relasi yang disediakan oleh Delphi. Operator = <> < > <= >=
Operasi Sama dengan Tidak sama dengan Lebih kecil Lebih besar Lebih kecil atau sama dengan Lebih besar atau sama dengan
Tipe Hasil Proses Boolean Boolean Boolean Boolean Boolean Boolean
d. Operator Logika Operator logika dibagi menjadi dua kelompok : Operator bit dan operator boolean. Operator bit berhubungan dengan pergeseran atau pembandingan pada level bit. Operator boolean digunakan untuk menyatakan satu atau lebih data atau ekspresi logika yang akan menghasilkan nilai logika (boolean) yang baru True atau False. Operator And Or Not Xor Shl Shr
Keterangan Dan Atau Tidak Exclusive Or Geser ke kiri Geser ke kanan
Tipe Data Integer Integer Integer Integer Integer
Tipe Hasil Boolean Boolean Boolean Boolean Boolean
Integer
Boolean
Operator boolean selalu memberikan hasil true atau false, sedangkan operasi bit melakukan operasi bit per bit pada nilai tipe integer. Operator Boolean : Operator And Or Not Xor
Keterangan Dan Atau Tidak Exclusive Or
Tipe Data Booloean Booloean Booloean Booloean
Tipe Hasil Booloean Booloean Booloean Booloean
Operator logika And hanya akan menghasilkan nilai True jika semua ekspresi yang menggunakan operator And bernilai True. Apabila ada satu ekspresi yang bernilai False maka operator logika And akan menghasilkan nilai False. Contoh : X : = (21 > 9) And (19 < 71); X : = (21 < 9) And (19 < 71); X : = (21 > 9) And (19 > 71);
{Hasil X = True} {Hasil X = False} {Hasil X = False}
Operator logika Or akan menghasilkan nilai True jika salah satu dari seluruh ekspresi yang menggunakan operator Or bernilai True. Operator Or hanya akan bernilai False jika semua ekspresi yang menggunakan operator Or bernilai False. Contoh : X : = (21 > 9) Or (19 < 71); X : = (21 < 9) Or (19 < 71); X : = (21 < 9) Or (19 > 71);
{Hasil X = True} {Hasil X = True} {Hasil X = False}
Operator logika Not merupakan operator yang menyatakan kondisi kebalikan dari suatu ekspresi. Contoh : X : = Not (21 > 9) X : = Not (21 < 9) X : = Not (21 = 9)
{Hasil X = False} {Hasil X = True} {Hasil X = True}
Operator logika Xor akan menghasilkan nilai True jika ekspresi yang terletak di kiri operator Xor berbeda dengan ekspresi sebelah kanannya. Operator Xor hampir memiliki fungsi yang sama dengan operator tidak sama dengan. Contoh : X : = (9 < 21) Xor (19 < 71); X : = (9 > 21) Xor (19 > 71); X : = (9 < 21) Xor (19 > 71); X : = (9 > 21) Xor (19 < 71);
{Hasil X = False} {Hasil X = False} {Hasil X = True} {Hasil X = True}