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.