DAFTAR ISI - PEMROGRAMAN DELPHI

BAB 1 PENGANTAR DELPHI

1.1. MENGENAL DELPHI

1.2. PRODUK DARI DELPHI

1.3. KEBUTUHAN INSTALASI DELPHI

BAB 2 LINGKUNGAN KERJA DELPHI

2.1. MENGENAL IDE DELPHI

2.2. MENU DAN TOOLBAR

2.3. COMPONENT PALETTE, FORM DESIGNER, DAN OBJECT INSPECTOR

2.4. OBJECT TREEVIEW

2.5. CODE EDITOR

2.6. OBJECT REPOSITORY

2.7. DELPHI HELP

2.8. FILE‐ FILE SOURCE PENTING DELPHI

BAB 3 DASAR PEMROGRAMAN DELPHI

3.1. DELPHI PASCAL

3.2. DELPHI OBJECT PASCAL

3.4. DEBUGGING DAN EXCEPTION

3.5. CLASS REFERENCE

BAB 4 LATIHAN PEMROGRAMAN DELPHI

4.1. LATIHAN 01 : APLIKASI SEDERHANA

4.2. LATIHAN 02 : MENGGUNAKAN KONDISIONAL

4.3. LATIHAN 03 : MENGGUNAKAN ITERASI

BAB 5 DATABASE DELPHI

5.1. TIPE DATABASE MANAGEMENT SYSTEM

5.2. TIPE DATABASE DELPHI

5.3. MEKANISME DATA AKSES

5.4. ARSITEKTUR DATABASE DELPHI

BAB 6 DATABASE LOKAL

6.1. APLIKASI MYBASE

6.2. MENGAKTIFKAN DATASET

76 Page 5

6.3. MENGAKSES FIELD DATASET

6.4. NAVIGASI DATASET

6.5. MEMBUAT FILE DATA PACKET

6.6. DATA CONTROL

6.8. MODIFIKASI DATA

6.9. VALIDASI DATA

6.11. FILTER DAN RANGE

6.12. PENCARIAN DATA

6.13. AGGREGATE

BAB 7 DATABASE RELASIONAL

7.1. APLIKASI DATABASE 100

7.2. AKSESORIS UMUM APLIKASI DATABASE 110

BAB 8 RAVE REPORT

8.1. MENGGUNAKAN RAVE REPORT 115

BAB 9 SQL

9.1. SEKILAS MENGENAI SQL 129

9.2. METODE SQL 129

9.3. IMPLEMENTASI SQL DALAM BAHASA PEMROGRAMAN DELPHI 131

DAFTAR PUSTAKA 136

Page 6

Teknologi informasi pada zaman modern ini berkembang sangat pesat. Tidak hanya pada satu bidang, tetapi juga semua bidang. Merambah dunia usaha, industri, hingga instansi pemerintah. Teknologi informasi terkait erat dengan istilah perangkat lunak (software). Perangkat lunak (software) merupakan jembatan penghubung antara user dengan perangkat keras (hardware) komputer. Tanpa perangkat lunak (software), perangkat keras (hardware) dari suatu komputer tak lebih dari suatu benda mati yang tidak dapat dimanfaatkan oleh user.

Ada banyak perangkat lunak (software) yang digunakan dalam kehidupan sehari‐ hari, seperti Microsoft Word, Adobe Reader, Corel DRAW, dan lain‐ lain. Perangkat lunak (software) tersebut merupakan beberapa contoh dari perangkat lunak aplikasi (application software). Perangkat lunak aplikasi (application software) adalah perangkat lunak (software) yang secara khusus digunakan untuk kebutuhan pengolahan data tertentu sehingga peran dari penggunanya adalah murni sebagai seorang user. Ada pula perangkat lunak (software) yang dapat digunakan sebagai sarana untuk membuat perangkat lunak (software) lainnya atau aplikasi. Perangkat lunak (software) seperti ini dinamakan perangkat lunak bahasa pemrograman (programming language software). Dengan perangkat lunak bahasa pemrograman (programming language software) ini, Software Engineer dapat membuat, merancang, dan mengatur sendiri interface beserta fasilitas perangkat lunak (software) yang akan dibuat. Perangkat lunak (software) yang dapat ditangani oleh perangkat lunak bahasa pemrograman (programming language software) meliputi banyak bidang misalnya aplikasi perkantoran, aplikasi perbankan, aplikasi desain grafis, aplikasi desktop, dan lain‐ lain. Dalam buku ini, perangkat lunak bahasa pemrograman (programming language software) yang dikupas adalah bahasa pemrograman Delphi.

1.1. Mengenal Delphi

Salah satu perangkat lunak bahasa pemrograman (programming language software) yang menduduki peringkat 50 (lima puluh) besar dunia adalah Borland Delphi. Borland Delphi menggunakan bahasa pemrograman Pascal. Bahasa pemrograman ini dipakai pertama kali pada perangkat lunak bahasa pemrograman (programming language software) yang bernama Turbo Pascal. Pascal juga merupakan salah satu produk legendaries dari Borland. Sekitar tahun 90‐ an, Pascal pernah menjadi perangkat lunak bahasa pemrograman (programming language software) popular yang menjadi pilihan dari Software Engineer. Hal ini karena bahasa Pascal mudah dipelajari.

Banyak jenis aplikasi yang dapat dibuat oleh bahasa Pascal. Seiring dengan perkembangan dunia Teknologi Informasi, bahasa pemrograman juga turut berkembang. Yang semula masih menggunakan text mode kemudian berkembang menjadi bahasa pemrograman dengan GUI yang sangat menarik. Perkembangan tersebut tidak lepas dari pengaruh perkembangan sistem operasi (operating system). Dahulu Turbo Pascal digunakan untuk sistem operasi (operating system) yang masih menggunakan DOS (Disk Operating System). Karena Microsoft mulai banyak mengeluarkan varian sistem operasi yang mendukung GUI, seperti Windows 95, Windows 98, sampai dengan Windows Vista, mau tidak mau Borland pun harus menyesuaikan dengan perkembangan tersebut. Pada akhirnya muncullah perangkat lunak bahasa pemrograman (programming language software) yang bernama Borland Delphi hingga Turbo Delphi. Versi terbaru adalah Delphi 2009. Meski ada banyak versi Delphi, teknikal pemrograman yang dibahas dalam buku ini adalah Delphi 7. Versi ini dipilih karena mempunyai fitur dan fasilitas yang mencukupi, kinerja yang bagus pada spesifikasi perangkat keras (hardware) minimum, di samping itu cukup popular dan banyak digunakan oleh Software Engineer.

Sekilas mungkin terlintas pertanyaan di benak Anda. Mengapa Borland Delphi menjadi bahasa pemrograman yang begitu popular ? Jawabannya adalah, Borland Delphi mempunyai banyak fasilitas dan

Page 7 Page 7

Salah satu fasilitas bahasa pemrograman Delphi yang paling banyak digunakan dan paling banyak membantu dalam proses pembuatan program adalah fasilitas source completion. Source completion adalah fasilitas yang disediakan oleh Delphi yang mampu digunakan untuk melengkapi kode yang dituliskan pada kode editor secara otomatis. Dengan fasilitas ini penulisan listing program akan menjadi lebih cepat. Tentu saja hal ini akan semakin menghemat waktu, biaya, dan tenaga.

Anda membutuhkan database? Delphi juga dapat menangani kebutuhan database Anda secara langsung, dengan dukungan database desktop. Pembuatan report juga dapat ditangani secara langsung oleh Delphi. Dalam hal pembuatan report, Delphi telah menyediakan aplikasi tambahan yang dinamakan Quick Report dan Rave Report. Quick Report dan Rave Report adalah tool yang dirancang khusus untuk menangani report. Tool ini sudah ada dalam paket Delphi. Jadi, Delphi merupakan paket bahasa pemrograman yang lengkap dan patut dijadikan pilihan oleh Anda.

1.2. Produk dari Delphi

Sebagai bahasa pemrograman yang bersifat Rapid Application Development (RAD), Delphi telah menghasilkan beberapa aplikasi sebagai berikut ini :  Accounting : Intuit Lacerte, Spryka Desktop Budget .  Business : Atlantis Word Processor, SME:Service Management Enterprise Service management

software.  CodeGear Products : CodeGear Delphi, CodeGear C++ Builder, Borland JBuilder versions 1 and 2.

 Communication : Globestar Systems Connexall (Event Notification and Presence Management Platform).

 Database Management/Development : MySQL Tools (Administrator, Query Browser), TOAD, SQL Maestro

 Email Marketing : Spryka Epostmailer  Engineering Software : Altium Designer/Protel (electronics design), OrcaFlex (offshore structural

analysis).  Image Viewers : FastStone Image Viewer, FuturixImager, Photofiltre, BioniX Wallpaper Changer.

 Internet Messaging : Skype (VoIP and IM), QIP (IM), The Bat! (e‐ mail client), PopTray (e‐ mail checker), FeedDemon (feed viewer), XanaNews, Xnews (newsgroup reader).

 Music Production : FL Studio.  Point of Sale and Retail Management : Infinity RMS by Triquestra International .  Software Development : Dev‐ C++ (IDE), DUnit (unit testing), Help & Manual (help system authoring),

Inno Setup (installer engine), Game Maker .  Web Authoring : Macromedia HomeSite (HTML editor), TopStyle Pro (CSS editor), Macromedia

Captivate (screencast) .  Web Browsers (MSIE shells) : Avant Browser, Netcaptor.

Page 8

 Utilities : Spybot ‐ Search & Destroy, Ad‐ Aware (anti‐ spyware), jv16 PowerTools, Total Commander (file manager), Copernic Desktop Search, PowerArchiver, Beyond Compare(file comparison),

WordWeb (dictionary/thesaurus).

1.3. Kebutuhan Instalasi Delphi

Untuk melakukan instalasi dari Delphi, sistem operasi Window Anda harus telah didukung beberapa aplikasi eksternal Window. Beberapa syarat aplikasi eksternal yang harus dipenuhi sebagai berikut :

 Microsoft .NET Framework 2.0. 

Microsoft Direct Access Object 2.8. 

Microsoft Internet Explorer v6.0 SP1. 

Microsoft XML Core Services (MSXML) v4.0 SP2. 

Microsoft Visual J# .NET v2.0 Redistributable. Jika pada sistem operasi Windows yang Anda gunakan ternyata belum memenuhi syarat aplikasi yang

disebutkan, maka installer Delphi akan meng‐ instalasi‐ nya secara otomatis. Selain itu, instalasi Delphi juga membutuhkan spesifikasi tertentu pada komputer yang Anda gunakan, sesuai dengan kebutuhan minimum Delphi.

Ketentuan sistem minimum komputer yang harus dipenuhi adalah sebagai berikut : 

Intel Pentium atau kompatibel, kecepatan prosesor minimal 1.4 GHz (disarankan 2 GHz).

1 GB RAM (direkomendasikan 2 GB). 

3 GB ruang kosong pada hard disk untuk Delphi. 

750 MB ruang kosong pada hard disk untuk persyaratan. 

DVD‐ RW/ROM Drive. 

Monitor 1024 x 768 piksel atau monitor dengan resolusi lebih tinggi. Berikut ini adalah daftar jenis sistem operasi Windows yang mendukung Delphi :

 Microsoft Windows 2000 (SP4 atau yang lebih tinggi). 

Microsoft Windows XP Home atau Professional (SP3 atau yang lebih tinggi). 

Microsoft Windows Vista SP1 (memerlukan administrator policy). 

Microsoft Windows Server 2003 (SP1). 

Microsoft Windows Server 2008. Setelah memahami dan memenuhi kebutuhan perangkat lunak (software) dan perangkat keras

(hardware) untuk meng‐ instal Delphi, Anda dapat melanjutkannya dengan melakukan instalasi Delphi di komputer.

Page 9

Integrated Development Environment atau IDE adalah sebuah lingkungan terintegrasi yang digunakan pada proses pengembangan perangkat lunak (software). Delphi menyediakan IDE untuk digunakan oleh Software Engineer dalam proses pengembangan dari aplikasi secara cepat dan mudah.

2.1. Mengenal IDE Delphi

IDE adalah bagian dari Delphi yang digunakan untuk menciptakan aplikasi. Dengan IDE secara visual, para Software Engineer dapat merancang tampilan untuk para user interface (antarmuka pengguna) dan melakukan penulisan skrip program (kode program).

Gambar 2‐ 1.IDE Delphi

Pada saat pertama kali dipanggil, akan muncul beberapa tools utama dalam Delphi IDE, yaitu Menu, Toolbar, Component Palette, Object Inspector, Object Treeview, Code Editor, Project Manager, dan beberapa tools lain. Semua fasilitas dan fitur tersebut mempunyai tujuan untuk membuat para pengembang aplikasi dapat mengembangkan aplikasi secara mudah dan cepat.

Page 10

2.2. Menu dan Toolbar

Window utama Delphi terdiri atas menu, toolbar, dan Component Palette. Menu yang ada dalam Delphi berisi sejumlah besar perintah yang sebagian diantaranya mempunyai shortcut key yang dapat dipergunakan untuk akses cepat menggunakan keyboard.

Gambar 2‐ 2. Menu dan Toolbar

Toolbar yang ada dalam bahasa pemrograman Delphi berupa sekumpulan tombol untuk fungsi‐ fungsi yang sering dipergunakan oleh Software Engineer. Toolbar tersebut dikelompokkan dalam beberapa kelompok, yaitu Standard Toolbar, View Toolbar, Desktop Toolbar, Debug Toolbar, serta Internet Toolbar.

Di bawah ini daftar shortcut yang sering digunakan dalam bahasa pemrograman Delphi.

Shortcut

Keterangan

F1 Bila Anda membutuhkan bantuan dalam membuat aplikasi, tombol ini akan menghubungkan Anda dengan Help Delphi.

F12 Shortcut ini berguna untuk pindah dari form ke editor kode dengan cepat. Shift + F12

Shortcut ini berguna untuk menampilkan form yang sedang Anda kerjakan dalam aplikasi.

Ctrl + F12

Menampilkan semua unit yang ada pada suatu proyek.

F11

Berguna untuk mengaktifkan Object Inspector.

Ctrl + F11

Membuka file proyek dengan cepat.

Shift + Ctrl + F11 Menampilkan Window Project Option.

F9 Mengeksekusi program yang sedang Anda kerjakan.

2.3. Component Palette, Form Designer, dan Object Inspector

Component Palette, Form Designer, dan Object Inspector secara bersama‐ sama digunakan untuk membuat tampilan program.

2.3.1. Component Palette

Component palette berisi komponen‐ komponen Delphi (Visual/Non Visual VCL dan CLX) yang dapat digunakan untuk mendesain tampilan program dalam suatu Form. Komponen yang ada dalam komponen palette disusun dan dikelompokkan dalam page sesuai fungsinya. Misalnya tab standard hanya berisi komponen standar yang biasa digunakan dalam pemrograman.

Contoh dari tab standard adalah komponen Button, Edit, Label, RadioButton, dan masih banyak lagi.

Gambar 2‐ 3. Component Palette

Page 11

2.3.2. Form Designer

Bahasa pemrograman Delphi adalah sebuah IDE yang bertujuan untuk pembuatan aplikasi visual. Aplikasi visual adalah aplikasi yang memerlukan interaksi dari user melalui penglihatan visual mereka. Bayangkan apa yang terjadi apabila bentuk form yang dirancang terkesan acak‐ acakan. Oleh sebab itu, bahasa pemrograman Delphi menyediakan fasilitas yang berfungsi untuk memudahkan Software Engineer dalam merancang form secara user‐ friendly dan tentu saja harus mudah dimengerti oleh user. Adapun fasilitas yang disediakan oleh Delphi dikenal dengan istilah Form Designer.

Form designer adalah form tempat untuk mengatur komponen sesuai dengan kebutuhan tampilan program yang akan dibuat. Cara meletakkan komponen ke dalam form ada beberapa macam, yaitu :  Click komponen pada component palette, kemudian click atau drag pada Form.  Double click komponen pada component palette, maka komponen tersebut akan terletak pada

tengah form.  Shift click pada component palette, kemudian click pada form beberapa kali untuk meletakkan

beberapa komponen. Untuk menormalkan kembali status click, tekan tombol panah pada bagian kiri component palette.

Gambar 2‐ 4. Form Designer

Objek yang sudah ada dalam form dapat diatur posisinya sesuai dengan kebutuhan cukup dengan cara click and drag pada objek tersebut. Objek yang terseleksi akan ditandai dengan delapan kotak kecil di bagian tepi dan sudutnya. Beberapa objek dapat diseleksi secara bersamaan. Caranya dengan menekan tombol Shift sambil click pada objek lain, atau dengan menekan tombol Ctrl sambil melakukan drag. Beberapa objek yang terseleksi dapat dipermudah dengan pengaturan posisinya dengan melakukan align . Pilih menu Edit – Align. Fungsi align ini sangat bermanfaat karena dapat memudahkan Software Engineer dalam menyusun tampilan yang rapi.

Page 12

2.3.3. Object Inspector

Object Inspector dipergunakan untuk mengubah nilai property dari objek yang terseleksi yang ada dalam Form Designer. Object Inspector terdiri atas 2 (dua) page.

Page pertama adalah Properties, berguna untuk mengatur property komponen yang sedang aktif.

Gambar 2‐ 5. Object Inspector page Properties

Dan page kedua adalah Events yang berfungsi sebagai trigger/pemicu komponen yang bersangkutan untuk menjalankan perintah tertentu.

Gambar 2‐ 6. Object Inspector page Events

Page 13

2.4. Object Treeview

Object Treeview secara default berada di sisi kiri desktop. Object Treeview menampilkan hubungan parent‐ child antar komponen dalam bentuk hirarki. Object Treeview, Form Designer, dan Object Inspector saling tersinkronisasi, sehingga bila fokus kita ubah dalam Form Designer maka fokus dalam Object Treeview dan Object Inspector juga akan berpindah.

Gambar 2‐ 7. Object Treeview

2.5. Code Editor

Ketika kita menyusun komponen dalam suatu form, Delphi akan membangkitkan kode program dalam bahasa Object Pascal. Kita dapat meng‐ edit kode program dengan menggunakan code editor yang merupakan suatu editor teks yang mempunyai banyak fitur.

Gambar 2‐ 8. Code Editor

Page 14

Salah satu fungsi yang sangat membantu kita dalam menyusun program adalah adanya syntax highlighting yaitu adanya perbedaan style dan warna font untuk kata kunci, identifier, konstanta, dan lain‐ lain. Pada bagian kiri terdapat Code Explorer, yang berisi daftar variabel, procedure, uses list, dan lain‐ lain yang ditampilkan dalam bentuk tree. Pada bagian kanan adalah Code Editor. Dengan code editor, kita dapat membuka lebih dari satu file text, yang masing‐ masing dapat di pilih dengan page selector. Pada bagian bawah code editor terdapat status bar yang berisi informasi tentang posisi kursor (baris dan kolom), status modifikasi file, serta status Insert/Overwrite dari code editor. Di sebelah kanannya terdapat code/diagram selector yang dapat digunakan untuk mengganti tampilan kode menjadi diagram dan sebaliknya.

Fitur‐ fitur lain yang tersedia dalam code editor sebagai berikut ini.

2.5.1. Code Insight

Code Insight tool digunakan untuk menampilkan window popup sesuai konteks. Fitur‐ fitur dalam code editor yang masuk kelompok ini sebagai berikut :  Code Completion, digunakan untuk mempermudah Software Engineer dalam menentukan property,

method, ataupun event dari objek tertentu yang telah diketikkan.  Code Parameter, digunakan untuk mengetahui parameter apa saja yang dipunyai oleh suatu

procedure/function tertentu.  Tooltip Expression Evaluation. Pada saat program sedang berhenti ketika terjadi proses debugging,

gerakkan mouse pointer ke suatu ekspresi tertentu, diamkan beberapa lama, maka akan muncul nilai dari ekspresi tersebut.

 Tooltip Symbol Insight. Pada saat kita sedang mengetikkan kode program, gerakkan mouse di atas suatu identifier tertentu, maka akan muncul deklarasi dari identifier tersebut.

2.5.2. Code Template

Code Template adalah kerangka struktur program yang mempersingkat Software Engineer dalam mengetikkan kode program. Tekan Ctrl‐ J untuk menampilkan daftar Code Template. Kita dapat mendefinisikan beberapa template lain melalui Editor Options.

2.5.3. Class Completion

Class Completion digunakan untuk melengkapi kelas tertentu dan untuk meng‐ generate suatu kerangka kode di bagian implementasi. Untuk melakukannya ketikkan tombol Ctrl‐ Shift‐ C. Sebagai contoh, jika kita mendefinisikan property test : Integer, maka setelah Ctrl‐ Shift‐ C ditekan maka akan di‐ generate write dan read spicifier pada bagian private, serta kerangka kode pada bagian implementasi. Fungsi ini sangat membantu bila kita banyak bekerja dengan Object Oriented Programming.

2.5.4. Code Browsing

Code Browsing digunakan untuk memindahkan kursor ke tempat deklarasi suatu identifier tertentu. Bila mouse pointer digerakkan di atas suatu identifier tertentu, maka akan muncul deklarasi identifier tersebut. Tetapi bila kita tahan tombol Ctrl sambil Anda gerakkan mouse pointer ke identifier tersebut maka identifier tersebut ditampilkan dalam warna biru dengan garis bawah. Click identifier tersebut maka kursor akan menuju deklarasi identifier tersebut. Untuk kembali ke posisi semula dapat menggunakan tombol browse back dan browse forward. Prinsip kerja dari code browsing mirip dengan aplikasi web

Page 15 Page 15

mouse pointer seperti web link, sedangkan tombol browse back dan browse forward mirip tombol back

dan forward dalam web browser. Untuk memindahkan kursor dari deklarasi procedure/function menuju implementasi procedure/function

tersebut, gunakan Ctrl‐ Up dan Ctrl‐ Down.

2.5.5. Code Explorer

Dalam code explorer, daftar isi code editor ditampilkan dalam bentuk diagram pohon (tree diagram). Dengan code explorer navigasi terhadap kode program akan menjadi sangat mudah. Double click item dalam code explorer, maka kita akan langsung menuju tempat item tersebut dalam code editor.

2.6. Object Repository

Object Repository dalam Delphi berisi kumpulan objek (Form, Dialog, Wizzard, Template, dll) yang dapat memudahkan dalam hal development. Dengan Object Repository, modul‐ modul program ataupun proyek yang pernah dibuat dapat dipergunakan kembali (reusable).

Gambar 2‐ 9. Object Repository

Untuk memasukkan proyek kita ke dalam object repository, kita gunakan menu Project ‐ Add to Repository. Bila yang ingin kita tambahkan adalah form atau data module, kita dapat menambahkannya ke object repository dengan click kanan dan pilih menu Add to Repository. Untuk mengakses item dalam object repository, kita gunakan menu File – New – Other. Di layar monitor akan muncul objek‐ objek yang dapat dipergunakan kembali.

Kita dapat mempergunakan objek‐ objek tersebut dalam 3 (tiga) cara, yaitu :

Page 16

2.6.1. Copy

Pilih copy, bila menginginkan proses copy terhadap suatu objek untuk ditempatkan dalam projek. Perubahan apa pun terhadap object repository tidak berpengaruh pada objek dalam proyek, demikian juga sebaliknya, perubahan objek tersebut dalam proyek tidak akan berpengaruh terhadap objek dalam object repository.

2.6.2. Inherit

Pilih inherit, bila menginginkan proses pembuatan turunan dari objek yang ada dalam object repository. Bila terjadi proses compile, perubahan yang terjadi dalam object repository akan berpengaruh terhadap objek dalam proyek. Tetapi perubahan objek dalam proyek tidak akan terpengaruh pada object repository.

2.6.3. Use

Pilih use, bila menginginkan objek dalam object repository menjadi bagian dalam aplikasi. Perubahan terhadap objek dalam proyek akan berpengaruh terhadap objek yang ada dalam object repository karena objek dalam proyek maupun dalam object repository adalah sama. Penggunaan metode ini harus dilakukan dengan terencana dan hati‐ hati.

2.7. Delphi Help

Bahasa pemrograman Delphi menyediakan context sensitive help, yaitu help yang bekerja berdasarkan konteks. Dengan menekan tombol F1, akan diperoleh help tergantung objek/Window yang aktif.

Gambar 2‐ 10. Help Delphi

Page 17

2.8. File‐ file Source Penting Delphi

Dalam setiap bahasa pemrograman, sangat penting untuk mengetahui dengan pasti jenis‐ jenis file sumber (source) yang dibutuhkan untuk membuat aplikasi. Untuk Delphi, ada tiga jenis file sumber utama yang tidak boleh hilang/terhapus, yaitu :  File Project, mempunyai ekstensi *.dpr,  File Unit, mempunyai ekstensi *.pas,  File Form, mempunyai ekstensi *.dfm.

Hirarki tertinggi dari sistem file Delphi terletak pada Project, karena di dalam Project‐ lah unit dan form berada. Tanpa Project, Anda tidak dapat melakukan kompilasi program, tetapi tanpa unit atau form Anda masih dapat mengompilasi program. Untuk pemrograman Delphi berbasis Window, minimal dalam sebuah Project terdapat sebuah unit dan sebuah form.

Page 18

Bahasa pemrograman yang digunakan dalam Delphi adalah suatu variant dari bahasa Pascal, yang oleh Delphi disebut sebagai Object Pascal karena variant ini meng‐ implementasi Object Oriented Programming (OOP). Pada bab ini, Delphi Object Pascal akan dibahas dalam dua sub bab, yaitu sub bab dengan judul Delphi Pascal yang membahas elemen bahasa Delphi yang tidak terkait dengan OOP, dan Delphi Object Pascal yang mempunyai elemen terkait dengan OOP.

3.1. Delphi Pascal

3.1.1. Komentar pada Kode

Komentar adalah tulisan pada kode yang digunakan untuk kepentingan dokumentasi. Compiler tidak akan menerjemahkan komentar. Pada bahasa pemrograman Delphi, komentar ditandai dengan Kurung kurawal { } dan kurung biasa dan tanda bintang (* *) untuk komentar yang bisa lebih dari satu baris, serta garis miring ganda // untuk komentar yang hanya satu baris.

{ Ini adalah Komentar } {

MyProg ver 1.0 Program ini dibuat untuk uji coba saja

} (* Coba-coba *) // Trik ini adalah trik yang sederhana

3.1.2. Identifier

Identifier adalah nama untuk meng‐ identifikasi konstanta, tipe data, variabel, procedure, function, unit, program, dan field pada record.

Pendefinisian identifier harus memenuhi ketentuan sebagai berikut :  Panjang nama suatu identifier maksimum 63 (enam puluh tiga) karakter. Selebihnya akan diabaikan

oleh Compiler.  Identifier harus diawali dengan abjad, atau karakter garis bawah (_).

 Karakter berikutnya bisa abjad, karakter garis bawah, atau angka.  Identifier tidak dapat mengandung karakter spasi ataupun symbol‐ simbol seperti $, #, &, %, dan lain‐

lain.  Nama identifier tidak boleh sama dengan kata kunci (reserved word).

3.1.3. Kata Kunci (reserved word) dan Directive

Kata kunci (reserved word) adalah kata yang memiliki peran khusus dalam bahasa Delphi Pascal. Kata yang termasuk kata kunci tidak boleh menjadi identifier. Selain itu, Delphi juga memiliki sejumlah kata yang termasuk dalam kelompok directive, yaitu kata yang punya “peran khusus” tergantung lokasinya. Ini berarti, meskipun sangat tidak dianjurkan, kita dapat mendefinisikan identifier dengan kata yang termasuk directive, misalnya private, public, dan lain‐ lain. Berikut ini daftar kata yang termasuk kata kunci (reserved word) yang ditampilkan dalam tabel dengan urutan alphabet.

Page 19

Kata Kunci

Peran dalam Delphi Pascal

and

Operasi Boolean AND.

array

Untuk mendefinisikan array.

as

Untuk melakukan typecast.

asm

Awal dari definisi Assembly.

begin

Awal blok.

case Pencabangan dengan banyak alternative. class

Definisi kelas.

const

Definisi konstanta.

constructor Metode khusus untuk membentuk kelas. destructor

Metode khusus untuk menghancurkan kelas. dispinterface

Bentuk khusus interface, yaitu Dispatch Interface (berkaitan dengan COM automation).

div

Pembagian bilangan bulat.

do Awal dari statement yang akan dijalankan (untuk for, while, with, try…except).

downto Untuk for dengan arah pengulangan terbalik. else

Pilihan lainnya dalam suatu pencabangan (untuk if dan case).

end

Akhir dari blok.

except Awal dari exception block (untuk try…except). exports

Digunakan untuk meng‐ export procedure, function atau varibel (dalam DLL).

file Untuk mendefinisikan variable dengan tipe file. finalization

Awal dari perintah yang harus dijalankan pada saat unit ditutup (pasangan dari initialization).

finally Kata kunci untuk melindungi resource (try…finally). for

Pengulangan dengan banyaknya pengulangan yang sudah diketahui.

function

Pendefinisian dari function.

goto Perintah untuk loncat ke label tertentu.

If Pencabangan dengan 2 (dua) alternative. implementation

Kata kunci yang mengawali bagian implementation. initialization

Awal dari sekumpulan perintah yang harus dijalankan ketika suatu unit mulai diakses.

inline Untuk meng‐ akses perintah assembly. interface

Awal dari bagian interface dalam unit. Kata kunci untuk mendefinisikan interface.

Is

Untuk mengecek tipe kelas.

label Label yang menandai tempat untuk perintah goto. library

Kata kunci untuk menandai sebuah proyek akan menghasilkan library (DLL).

mod

Pembagian sisa.

nil

Pointer kosong.

not Operator Boolean untuk negasi (NOT). object

Alternative dari pendefinisian kelas. Page 20 Alternative dari pendefinisian kelas. Page 20

or Operator Boolean untuk atau (OR). out

Definisi parameter untuk procedure/function yang hanya digunakan sebagai output saja.

packed Untuk mendefinisikan tipe record atau array yang tidak di‐ align menjadi word atau double‐ word.

procedure

Pendefinisikan procedure.

program Pendefinisikan project yang merupakan program. property

Atribut dari objek yang dapat memiliki metode untuk mengaksesnya (Setter dan Getter).

raise Untuk membangkitkan exception. record

Untuk mendefinisikan tipe record. repeat

Kata kunci untuk pengulangan di mana syarat berhentinya pengulangan diperiksa di akhir blok.

resourcestring Untuk mendefinisikan resource. set

Untuk mendefinisikan himpunan. shl

Operasi bitwise untuk shift left. shr

Operasi bitwise untuk shift right. string

Untuk mendefinisikan tipe string. then

Untuk mendefinisikan alternative utama dalam if. threadvar

Untuk mendefinisikan variabel local dari thread. to

Untuk mendefinisikan pengulangan dengan for try

Untuk melindungi resource (try…finally) atau untuk menangkan exception (try…except).

type Untuk mendefinisikan tipe identifier. unit

Untuk mendefinisikan unit.

pengecekan dalam

pengulangan repeat.

uses

Untuk mengakses unit lain.

var Untuk mendefinisikan variabel. while

Untuk mendefinisikan pengulangan di mana pengecekan berhentinya pengulangan dilakukan di awal.

with Untuk menyingkat akses terhadap field dari record atau field, property, ataupun method dari objek.

xor Operasi Boolean exclusive or (XOR).

Page 21

Berikut ini beberapa directive yang ditampilkan dalam urutan alphabet.

Nama Directive Peran Directive dalam Delphi Pascal

at Untuk mendefinisikan dalam metode mana perintah raise akan dilakukan.

automated Level akses yang sama dengan public, tetapi memiliki informasi berkaitan dengan Automation Server.

message Untuk mendefinisikan sebuah metode yang akan me‐ respon Windows Message tertentu.

on Untuk memeriksa exception apa yang akan ditangkap.

private Untuk mendefinisikan level akses private bagi metode atau property dari objek.

protected Untuk mendefinisikan level akses protected bagi metode atau property dari objek.

published Untuk mendefinisikan level akses published bagi metode atau property dari objek.

public Untuk mendefinisikan level akses public atau property dari objek.

Compiler Directive

Compiler directive adalah informasi yang diberikan kepada compiler tentang bagaimana compiler akan meng‐ compile program. Compiler directive berbentuk sintaks khusus pada blok komentar yang diawali dengan karakter $. Compiler directive dapat dikelompokkan menjadi 3 (tiga) kelompok, yaitu :  Switch directive, yaitu directive yang digunakan untuk menghidupkan atau mematikan fitur khusus

yang dimiliki oleh compiler. Untuk setiap directive yang digunakan, biasanya menggunakan tanda “+” atau “on” untuk menghidupkan fitur tersebut, dan menggunakan tanda “‐ “ atau “off” untuk mematikannya. Beberapa directive jenis ini dapat dipanggil dalam satu perintah dengan dibatasi oleh tanda koma. Contohnya sebagai berikut :

{ $O } {* $O- *} { $B+, R-, S- }

 Parameter directive, yaitu directive yang menentukan parameter tertentu yang berpengaruh terhadap proses compile. Contohnya adalah :

{ $I TYPES.INC }

 Conditional directive, adalah kompilasi berdasarkan kondisi, di mana kondisi ditentukan oleh keberadaan suatu konstanta tertentu. $DEFINE digunakan untuk menentukan bahwa konstanta

tersebut eksis, sedangkan $UNDEF digunakan untuk menentukan bahwa konstanta tersebut tidak (lagi) eksis. Untuk menentukan conditional compilation‐ nya, gunakan $IFDEF, $IFNDEF, $IF, $ELSEIF, $ELSE, $ENDIF, serta $IFEND. Berikut ini adalah contohnya :

Page 22

{ $DEFINE DEBUG} { $IFDEF DEBUG}

Writeln (‘Debug is on.’) ; // baris ini di-compile

{ $ELSE}

Writeln(‘Debug is off.’) ; // baris ini tidak di-compile

{ $ENDIF} { $UNDEF DEBUG}

{ $IFNDEF DEBUG}

Writeln(‘Debug is off.’) ; // baris ini di-compile

{ $ENDIF}

Compiler directive dapat dikirimkan melalui command line parameter jika Anda menggunakan command line parameter untuk melakukan compile, bisa juga diletakkan dalam configuration file (file dengan ekstension * .cfg). Semua compiler directive yang diletakkan dalam program akan meng‐ override compiler directive dari file berekstensi *. cfg maupun command line.

3.1.4. Unit

Delphi Pascal merupakan bahasa modular sehingga memungkinkan modul program dapat di‐ compile secara terpisah‐ pisah. Modul ini disebut sebagai unit. Penggunaan unit akan membuat program menjadi terstruktur dan memungkinkan reusability kode program dalam projek yang berbeda. Kita dapat membuat sebuah unit yang berdiri sendiri dan dapat dipergunakan oleh proyek apa pun. Ketika program di‐ compile, di‐ run atau sedang dilakukan syntax checking, Delphi akan membentuk sebuah file biner dengan nama yang sama dan berakhiran dcu.

Struktur Unit

Sebuah unit selalu diawali dengan kata kunci unit <Nama Unit> dan diakhiri dengan end. (end dan tanda titik). Nama unit harus sama dengan nama file (tanpa extension) serta mengikuti ketentuan sebagai identifier. Unit akan terbagi menjadi 2 (dua) bagian, yaitu interface dan implementation. Pada bagian akhir implementation, kita dapat menyisipkan blok initialization dan finalization. Blok initialization berisi kode program yang akan dijalankan sesaat setelah unit dimuat ke memory, sedangkan finalization adalah blok yang dijalankan sesaat sebelum unit dibuang dari memory.

Page 23

Definisi Unit

unit Nama_Unit; interface

Bagian

uses Unit1, Unit2, …, Unit N;

interface

function Testing: Integer;

implementation

Uses List

var Nilai : Integer; uses Unit A, Unit B, …, Unit Z; function Testing : Interger;

begin

result := 0; end;

finalization end.

Uses

Kata kunci uses digunakan untuk mendaftarkan unit‐ unit lain yang identifier‐ nya akan digunakan dalam unit yang bersangkutan. Uses bersifat optional dan jika dipergunakan harus berada pada bagian awal interface atau bagian awal implementation. Unit yang disebut terakhir memiliki prioritas paling tinggi untuk digunakan. Perhatikan kode berikut :

uses SysUtils, Windows; procedure HapusFile (NamaFile: string);

begin

DeleteFile(NamaFile);

end;

Function DeleteFile ada di unit SysUtils dan unit Windows. Dalam contoh di atas, delete File yang akan dipanggil adalah delete file yang ada di unit Windows karena unit ini disebut belakangan dalam uses. Bila yang kita inginkan adalah function DeleteFile yang ada dalam SysUtils, kita dapat menambahkan nama unit SysUtils di depan function DeleteFile sehingga kode tersebut menjadi seperti di bawah ini.

uses SysUtils, Windows; procedure HapusFile(NamaFile: string);

begin

SysUtils.DeleteFile(NamaFile); end ;

Circular Reference

Circular Reference, yaitu uses yang berputar (misalnya Unit1 uses ke Unit2, Unit2 uses ke Unit3 dan Unit3 uses ke Unit1), tidak boleh dilakukan dalam bagian interface. Kadang‐ kadang kita menginginkan dua atau beberapa unit yang bersifat saling tergantung satu dengan lainnya. Cara yang paling sederhana adalah dengan Circular Reference pada bagian implementation. Tetapi akan jauh lebih baik jika kita menghindari circular reference, misalnya dengan cara mendefinisikan procedure, function, kelas, atau variabel yang diperlukan oleh unit‐ unit tersebut pada unit lain.

Page 24

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 initialization 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 urutan 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. Kita memiliki 3 (tiga) buah unit dengan nama Unit1, Unit2, dan Unit3.

 Panggil menu File‐ New‐ Other.  Pada Page New, pilih Console Application dan tekan tombol OK.  Kemudian Pilih menu File‐ New‐ Unit sebanyak 3 (tiga) kali, sehingga kita mempunyai sebuah program

utama dan 3 (tiga) buah unit. Untuk masing‐ masing unit ketikkan kode sebagai berikut ini : program Project2;

{ $APPTYPE CONSOLE}

uses

Unit1 in ‘Unit1.pas’, Unit2 in ‘Unit2.pas’, Unit3 in Unit3.pas’;

begin

Writeln(‘Main Program’);

end.

unit Unit1 ;

interface

uses Unit2, Unit3;

implementation initialization

Writeln(‘Initialization Unit1’);

finalization

Writeln(‘Finalization Unit1’);

end.

unit Unit2;

interface

uses Unit3;

implementation

Page 25 Page 25

Writeln(‘Initialization Unit2’);

finalization

Writeln(Finalization Unit2’);

end.

unit Unit3;

interface implementation

initialization

Writeln(‘Initialization Unit3’);

finalization

Writeln(‘Finalization Unit3’);

end.

 Compile program tersebut (Ctrl‐ F9). Untuk menjalankannya masuk ke DOS Windows, dan jalankan program tersebut dari DOS Windows, sehingga tampilan program bisa terlihat seluruhnya. Cara lainnya adalah menjalankan file RunProject.bat yang ada pada direktori code untuk latihan ini.

Hasilnya sebagai berikut ini. Initialization Unit3

Initialization Unit2 Initialization Unit1 Main Program Tekan ENTER.

Finalization Unit1 Finalization Unit2 Finalization Unit3

Perhatikan bagian uses list dari kode yang tercantum dalam Project2.dpr. Terlihat bahwa uses di mulai dari unit1, diikuti unit2, dan terakhir unit3. Karena unit1 berada di urutan pertaman useslist, maka project2 akan meminta unit1 untuk menjalankan bagian initialization‐ nya. Tetapi sebelum unit1 menjalankan initialization dirinya, unit1 tersebut akan memeriksa apakah ada uses list. Ternyata ada uses ke unit2 dan unit3 secara berurutan. 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 apa pun, maka unit3 akan menjalankan bagian initialization‐ nya dan mengembalikan kendali kepada unit2. Unit2 akan menjalankan initialization dan mengembalikan kendali kepada unit1. Unit1 akan meminta unit3 untuk memanggil initialization. Tetapi karena initialization unit3 sudah pernah dipanggil, maka kendali diberikan kembali kepada unit1. Selanjutnya unit1 akan menjalankan bagian initialization‐ nya, dan mengembalikan kendali kepada project2.

3.1.5. Konstanta

Konstanta adalah identifier yang bersifat tetap selama program berjalan. Pendefinisian konstanta pada blok yang diawali dengan kata kunci const. Bagian definisi konstanta dapat diletakkan pada bagian interface, implementation, atau di mana saja dalam kode program. Peletakan konstanta akan berpengaruh terhadap dikenalnya konstanta dari bagian lain program. Sebagai contoh, konstanta

Page 26 Page 26

unit Unit2;

interface const

AppCaption = ‘My Program ver 1.0’; procedure HitungData;

implementation const

XData = 10; YData = 100;

procedure HitungData;

const

A: real = 10;

begin

( Kode untuk Hitung data )

end; end.

Delphi secara otomatis akan menentukan tipe konstanta berdasarkan nilai yang didefinisikan untuk konstanta tersebut. Meskipun demikian, kita bisa mendefinisikan tipe konstanta kita secara eksplisit. Pada contoh di atas, konstanta A dalam procedure HitungData didefinisikan tipenya secara eksplisit sebagai tipe real.

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 nil, operator untuk numeric maupun string, serta bisa juga konstanta lain, asal sudah didefinisikan sebelumnya. Constant Expression tidak dapat melibatkan nilai, variabel, dan pemanggilan function terkecuali beberapa function, yaitu Abs, Chr, Hi, High, Length, Lo, Low, Odd, Ord, Pred, Round, Size Of, Succ, Swap, serta Trunc. Contohnya sebagai berikut ini.

const

const_A = 100; const_B = ‘A’; const_C = 256 – 1 + Const_A; const_D = (2.5 + 1) / (2.5 – 1); const_E = ‘Borland’ + ‘ ‘ + ‘Corporation’ const_F = Chr(32); const_G = Ord(‘Z’) – Ord(‘A’) + 1;

Page 27

3.1.6. Tipe Data

Bagian yang sangat penting dalam pemrograman adalah mendefinisikan tipe‐ tipe data baru sesuai dengan kebutuhan program. Untuk mendefinisikan tipe data baru, gunakan kata kunci type. Seperti halnya const, kata kunci yang menandai area pendefinisian tipe data ini dapat diletakkan di mana saja sesuai kebutuhan. Konsekuensi logis dari peletakkan kata kunci ini adalah pengaruh pada scope‐ nya. Berikut ini contoh pendefinisian tipe data.

type

TMyArray = array (0..19) of Byte; MyData = integer;

3.1.7. Variabel

Sebelum suatu variabel dapat digunakan, variabel tersebut harus didefinisikan terlebih dahulu. Untuk mendefinisikan variabel, gunakan kata kunci var yang menandai area pendefinisian variabel. Peletakkan area pendefinisian variabel ini dapat dilakukan di mana saja dalam program, dan akan berpengaruh terhadap scope‐ nya. Setiap variabel yang didefinisikan harus mempunyai tipe. Untuk mendefinisikan tipe suatu variabel, gunakan tanda titik dua (:). Berikut ini contoh pendefinisian variabel.

var

Value : Integer; Sum : Integer; Line : string;

Karena Value dan Sum bertipe sama, penulisannya bisa dilakukan sebagai berikut.

var

Value, Sum : Integer; Line : string;

3.1.8. Expression, Operator, dan Precedence Expression

Expression (ekspresi) adalah sebuah konstruksi dalam program Delphi yang mempunyai nilai. Berikut ini beberapa contoh expression.

alamat variabel

konstanta bertipe integer

Jumlah

variabel

Hitung(X, B)

Pemanggilan fungsi

Char(48)

value typecast

X=10

ekspresi boolean

not Selesai

ekspresi boolean

A in HimpunanKu

ekspresi boolean

X*Y

ekspresi aritmetik

A+B

ekspresi aritmetik

Page 28

Expression selalu bisa dibentuk dari expression lain dengan menggunakan operator, sedangkan ekspresi pembentuknya biasa disebut operand.

Assignment

Assignment adalah memasukkan suatu nilai ke dalam suatu variabel. Assignment menggunakan operator :=, dan dengan bentuk.

variabel := ekspresi

Variabel bisa dengan tipe data apa pun ,sedangkan ekspresi harus kompatibel dengan variabel yang diberikan. Contoh Assignment sebagai berikut ini.

I := 3; I := I+1; X := Y-Z;

Selesai := (I>10) and (Y<5); Tanda := biasanya disebut assignment operator. Perlu diberikan catatan di sini bahwa dalam bahasa

pemrograman Pascal, assignment bukanlah ekspresi (tidak menghasilkan nilai).

Operator

Operator adalah semacam fungsi yang merupakan bagian dari bahasa Pascal yang peran utamanya adalah membentuk ekspresi. Yang termasuk operator adalah @, not, ^, “, /, div, mod, and, shl, shr, as, +, ‐ , or, xor, =, >, <, <>, <=, >=, in, serta is.

Operator @, not, ^, adalah operator unary, artinya operator yang operand‐ nya hanya satu. Operator lainnya kecuali + dan – bersifat binary, yaitu operator yang mempunyai 2 (dua) operand. Operator + dan – dapat berperan sebagai operator unary atau binary tergantung kepada konteks‐ nya (sebagai media penjumlahan dan pengurangan ataukah sebagai tanda plus dan minus).

Operator unary akan berada di depan operand‐ nya (misalnya –A atau @Test), kecuali operator ^ yang berada setelah operand‐ nya (misalnya P^). Operator yang bersifat binary selalu berada di antara keduanya (misalnya A+10).

Bekerjanya operator sangat dipengaruhi oleh operand‐ nya. Sebagai contoh A + B akan menjadi operasi aritmetika penjumlahan bila A dan B adalah Integer atau Real. Tetapi A + B akan menjadi concatenation (penyambungan) string bila A dan B bertipe string. Bahkan A + B bisa berarti operasi union (gabungan) bila A dan B bertipe Himpunan Set. Tetapi perlu diperhatikan juga bahwa bila A adalah Integer dan B adalah string, maka A + B tidak dapat bekerja (menghasilkan compiler error).

Operator Precedence

Operator precedence adalah hak operator untuk dioperasikan terlebih dahulu. Misalnya ekspresi A+B*C, maka operator * akan dikerjakan terlebih dahulu, baru hasilnya dijadikan operand untuk operator +. Hal ini terjadi karena * mempunyai hak lebih tinggi dibandingkan +. Urut‐ urutan operator precedence sebagai berikut.

Page 29

Operator

Precedence

@, not, ^ pertama (tertinggi, dioperasikan paling awal) *, /, div, mod, and, shl, shr, as

=, >, <, <>, <=, >=, in, is keempat (terendah, dioperasikan terakhir) Untuk mengubah precedence, kita bisa menggunakan tanda kurung, misalnya : (A+B)*C, maka operator +

akan diproses terlebih dahulu.

3.9. Tipe Data dalam Delphi Pascal

Dalam Delphi Pascal ada beberapa kelompok tipe data, yaitu Boolean, Integer, Real, Character, String, Array, Record, Enumerated, Set. Tipe data String, Array, dan Record akan dibahas secara terpisah.

Boolean

Boolean adalah tipe data yang nilainya adalah True atau False. Dalam Delphi Pascal. Tipe data Boolean disimpan dengan lebar 1 byte.

Operasi Boolean

Operasi Boolean memerlukan operand dengan tipe boolean (True atau False) dan menghasilkan nilai Boolean juga. Operator yang digunakan dalam operasi Boolean sebagai berikut.

not (C in MySet) not (A>10)

and

conjunction, yaitu menghasilkan

A and B

nilai True bila kedua operand bernilai True. Bila salah satu operand False maka hasilnya pasti False.

or

disjunction, yaitu menghasilkan

A or B

nilai True bila salah satu operand bernilai True. Bila keduanya False hasilnya adalah False.

menghasilkan nilai True bila hanya satu operand yang True. Bila keduanya True atau keduanya False, maka hasilnya adalah False.

Perhatikan ekspresi boolean berikut ini.

(A<>0) and (B<>0)

Bila nilai dari variabel A adalah 0, maka ekspresi di atas pasti bernilai False tidak peduli nilai dari variabel

B (karena operator and akan menyebabkan nilai False, apabila salah satu operand‐ nya bernilai False). Page 30

Oleh karena itu nilai dari variabel B tidak akan diperiksa oleh program (ekspresi (B<>0) tidak dievaluasi oleh program).

Perhatikan juga ekspresi boolean di bawah ini.

(A=0) or (B=0)

Bila nilai dari variabel A adalah 0, maka ekspresi di atas pasti bernilai True tidak peduli berapa nilai dari variabel B (karena operator or akan menyebabkan nilai True, apabila salah satu operand‐ nya bernilai True). Oleh karena itu nilai dari variabel B tidak akan diperiksa oleh program (ekspresi (B=0) tidak dievaluasi oleh program).

Hal yang dijelaskan di atas terjadi karena (secara default), program Delphi hanya melakukan evaluasi ekspresi logic secara sebagian. Keuntungannya adalah program akan berjalan lebih cepat. Tetapi kita dapat memaksa agar untuk setiap ekspresi boolean dengan operator and dan or kedua operand selalu diperiksa secara lengkap dengan cara mengubah compiler option.

Operasi Aritmetik

Operasi aritmetik digunakan untuk melakukan penghitungan aritmetik. Operand dan hasil dari operasi aritmetik adalah Integer atau Real. Operator yang digunakan dalam operasi aritmetik sebagai berikut.

Operator

Operasi

Tipe Operand

Tipe Hasil

Penjumlahan

Integer, Real

Integer, Real Jika salah satu operand adalah real, maka hasilnya adalah real

Pengurangan

Integer, Real

Integer, Real Jika salah satu operand adalah real, maka hasilnya adalah real

Perkalian

Integer, Real

Integer, Real Jika salah satu operand adalah real, maka hasilnya adalah real

Real div

Pembagian Real

Integer, Real

Pembagian Integer

Integer

Integer Hasil akan dibulatkan ke bawah

Integer +(unary)

mod

Pembagian sisa

Integer

Integer, Real ‐ (unary)

Tanda +

Integer, Real

Tanda ‐

Integer, Real

Integer, Real

Page 31

Integer

Integer adalah bilangan bulat. Dalam Delphi Pascal, terdapat beberapa tipe data yang merupakan Integer dan dikelompokkan sebagai Generik dan Fundamental. Sebisa mungkin gunakan tipe generik karena tipe generik akan dioptimasi berkaitan dengan sistem operasi dan CPU yang dipergunakan.

Tipe Generik Tipe Data

signed 32‐ bit Cardinal

‐ 2,147,483,648 s.d. 2,147,483,647

0 s.d. 4,294,967,295

unsigned 32‐ bit

Tipe Fundamental Tipe Data

signed 8‐ bit SmallInt

‐ 128 s.d. 127

signed 16‐ bit Longint

‐ 32,768 s.d. 32,767

signed 32‐ bit Int64

‐ 2,147,483,648 s.d. 2,147,483,647

signed 64‐ bit Byte

unsigned 8‐ bit Word

0 s.d. 255

unsigned 16‐ bit Longword

0 s.d. 65,535

unsigned 32‐ bit Secara umum, operasi aritmetika terhadap integer akan menghasilkan tipe Integer atau cardinal

(signed/unsigned 32‐ bit). Operasi akan menghasilkan Int64 hanya jika salah satu operand‐ nya adalah Int64.

Bila operasi menghasilkan nilai lebih besar dari range integer, maka nilai integer akan berputar kembali ke nilai awal dari range.

Berikut ini kita akan bereksperimen dengan bilangan integer untuk memahami perilaku integer.  Buat sebuah aplikasi console baru. (Pilih menu File‐ New‐ Other, lalu pilih Console Application).

 Ketikkan kode dalam program sehingga program kita akan menjadi seperti berikut ini.

program Project2; {$APPTYPE CONSOLE}

uses

SysUtils; var Byte1, Byte2: Byte;

ShInt1: ShortInt; Int1, Int2: Integer; Card1 : Cardinal; IntA: Int64;

begin

Writeln(‘Eksperimen dengan Integer’); Writeln(‘----------------------------------‘); Byte1 := 20; Writeln(‘Byte1 = ‘, Byte1); Writeln(‘Byte1*Byte1 = ‘, Byte1*Byte1); Byte2 := Byte1*Byte1; Writeln(‘Byte2 = Byte1*Byte1; Byte2 = ‘, Byte2);

Page 32

ShInt1 := Byte1*Byte1; Writeln(‘ShInt1 = Byte1*Byte1; ShInt = ‘, ShInt1); Writeln;

Int1 := 2000000000; Writeln(‘Int1 = ‘, Int1); Int2 := Int1+Int1; Writeln(‘Int1+Int1 = ‘, Int1+Int1); Writeln(‘Int2 = Int1+Int1; Int2 = ‘, Int2); Card1 := Int1+Int1; Writeln(‘Card1 = Int1+Int1; Card1 = ‘, Card1); IntA := Int1+Int1; Writeln(‘IntA = Int1+Int1; IntA = ‘, IntA); IntA := Int64(Int1)+Int1; Writeln(‘IntA = Int64(Int1)+Int1; IntA = ‘, IntA); readln;

end.

Setelah program di‐ run, hasilnya adalah : Eksperimen dengan Integer

Byte1 = 20 Byte1*Byte1 = 400 Byte2 = Byte1*Byte1; Byte2 = 144 ShInt1 = Byte1*Byte1; Shlnt1 = -112

Int1 = 2000000000 Int1+Int1 = -294967296 Int2 = Int1+Int1; Int2 = -294967296 Card1 = Int1+Int1; Card1 = 4000000000 IntA = Int1+Int1; IntA = -294967296 IntA = Int64(Int1)+Int1; IntA = 4000000000

Byte1 kita isi dengan 20. Byte1*Byte1 bernilai 400. OK, tidak ada masalah. Ketika kita isi Byte2 dengan Byte1*Byte1, ternyata hasilnya adalah 144. Apa yang terjadi ? Karena Byte2 bertipe Byte, range‐ nya adalah 0 s.d. 255. Maka 256 akan menjadi 0, 257 menjadi 1, 258 menjadi 2, dan seterusnya, sehingga 400 menjadi 144. Demikian juga, untuk ShInt1 dengan range ‐ 128 s.d. 127, angka 400 akan berputar 2 kali ke minus 128, sehingga hasil akhirnya adalah ‐ 112.

Kemudian nilai Int1 kita isi dengan 2 milyar, maka 2 milyar + 2 milyar, seharusnya 4 milyar. Tetapi 4 milyar berada di luar range Integer (signed 32‐ bit), maka 4 milyar akan berputar ke nilai minimum Integer sehingga hasil akhirnya adalah ‐ 294967296. Pada saat nilai ini dimasukkan ke Cardinal (unsigned 32‐ bit), maka nilai tersebut akan berada di luar range Cardinal (negatif), sehingga terjadi perputaran kembali ke nilai maksimum Cardinal, dan menyebabkan nilai akhir kembali bernilai 4 milyar.