DAFTAR ISI
KATA PENGANTAR
iCurriculum Vitae Penulis
iiUcapan Terima Kasih
iiiDAFTAR ISI
ivBAB 1 PENGANTAR DELPHI
1.1. MENGENAL DELPHI 01
1.2. PRODUK DARI DELPHI 02
1.3. KEBUTUHAN INSTALASI DELPHI 03
BAB 2 LINGKUNGAN KERJA DELPHI
2.1. MENGENAL IDE DELPHI 04
2.2. MENU DAN TOOLBAR 05
2.3. COMPONENT PALETTE, FORM DESIGNER, DAN OBJECT INSPECTOR 05
2.4. OBJECT TREEVIEW 08
2.5. CODE EDITOR 08
2.6. OBJECT REPOSITORY 10
2.7. DELPHI HELP 11
2.8. FILE‐ FILE SOURCE PENTING DELPHI 12
BAB 3 DASAR PEMROGRAMAN DELPHI
3.1. DELPHI PASCAL 13
3.2. DELPHI OBJECT PASCAL 45
3.3. EXCEPTION 55
3.4. DEBUGGING DAN EXCEPTION 58
3.5. CLASS REFERENCE 58
BAB 4 LATIHAN PEMROGRAMAN DELPHI
4.1. LATIHAN 01 : APLIKASI SEDERHANA 60
4.2. LATIHAN 02 : MENGGUNAKAN KONDISIONAL 62
4.3. LATIHAN 03 : MENGGUNAKAN ITERASI 64
BAB 5 DATABASE DELPHI
5.1. TIPE DATABASE MANAGEMENT SYSTEM 69
5.2. TIPE DATABASE DELPHI 73
5.3. MEKANISME DATA AKSES 74
5.4. ARSITEKTUR DATABASE DELPHI 75
BAB 6 DATABASE LOKAL
6.1. APLIKASI MYBASE 74
6.3. MENGAKSES FIELD DATASET 77
6.4. NAVIGASI DATASET 77
6.5. MEMBUAT FILE DATA PACKET 79
6.6. DATA CONTROL 81
6.7. FIELD 84
6.8. MODIFIKASI DATA 86
6.9. VALIDASI DATA 91
6.10. INDEKS 91
6.11. FILTER DAN RANGE 93
6.12. PENCARIAN DATA 96
6.13. AGGREGATE 98
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
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 antarauserdengan perangkat keras (hardware) komputer. Tanpa perangkat lunak (software), perangkat keras (hardware) dari suatu komputer tak lebih dari suatu benda mati yang tidak dapat dimanfaatkan olehuser.
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 olehSoftware Engineer.
bahasa pemrograman ini relative mudah dipelajari dan digunakan. Delphi mendukung berbagai fasilitas yang tidak dimiliki oleh bahasa pemrograman lain, misalnya fasilitas source completion, tool database desktop, xml converter, Microsoft Office Component Connector, Corba, BDE, dan masih banyak lagi. Delphi adalah salah satu aplikasi pemrograman yang menarik. Delphi bukan hanya digunakan untuk perancangan aplikasi desktop ataupun console, tetapi juga web development. Oleh karena fungsinya sangat beragam, Borland Delphi dikenal sebagai bahasa pemrograman Rapid Application Development (RAD).
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 membutuhkandatabase? Delphi juga dapat menangani kebutuhandatabaseAnda secara langsung, dengan dukungandatabase desktop. Pembuatanreportjuga dapat ditangani secara langsung oleh Delphi. Dalam hal pembuatanreport, 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.Toolini 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) .
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.
Integrated Development Environment atau IDE adalah sebuah lingkungan terintegrasi yang digunakan pada proses pengembangan perangkat lunak (software). Delphi menyediakan IDE untuk digunakan oleh Software Engineerdalam 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 penulisanskrip program(kode program).
Gambar 2‐ 1.IDE Delphi
2.2. Menu dan Toolbar
Window utama Delphi terdiri atasmenu,toolbar, danComponent Palette. Menu yang ada dalam Delphi berisi sejumlah besar perintah yang sebagian diantaranya mempunyai shortcut key yang dapat dipergunakan untuk akses cepat menggunakankeyboard.
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, yaituStandard Toolbar,View Toolbar,Desktop Toolbar,Debug Toolbar, sertaInternet Toolbar. Di bawah ini daftarshortcutyang sering digunakan dalam bahasa pemrograman Delphi.
Shortcut Keterangan
F1 Bila Anda membutuhkan bantuan dalam membuat aplikasi, tombol ini akan menghubungkan Anda denganHelpDelphi.
F12 Shortcutini berguna untuk pindah dariformke editor kode dengan cepat.
Shift + F12 Shortcutini berguna untuk menampilkan form yang sedang Anda kerjakan dalam aplikasi.
Ctrl + F12 Menampilkan semuaunityang ada pada suatu proyek. F11 Berguna untuk mengaktifkanObject Inspector.
Ctrl + F11 Membukafileproyek dengan cepat. Shift + Ctrl + F11 MenampilkanWindow 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 suatuForm. 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 daritab standardadalah komponenButton,Edit,Label,RadioButton, dan masih banyak lagi.
2.3.2. Form Designer
Bahasa pemrograman Delphi adalah sebuah IDE yang bertujuan untuk pembuatan aplikasi visual. Aplikasi visual adalah aplikasi yang memerlukan interaksi dariusermelalui 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 merancangform secarauser‐ friendly dan tentu saja harus mudah dimengerti olehuser. Adapun fasilitas yang disediakan oleh Delphi dikenal dengan istilahForm Designer.
Form designer adalah form tempat untuk mengatur komponen sesuai dengan kebutuhan tampilan program yang akan dibuat. Cara meletakkan komponen ke dalamformada beberapa macam, yaitu : Clickkomponen padacomponent palette, kemudianclickataudragpadaForm.
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 kembalistatus click, tekan tombol panah pada bagian kiri component palette.
Gambar 2‐ 4. Form Designer
2.3.3. Object Inspector
Object Inspectordipergunakan untuk mengubah nilaipropertydari objek yang terseleksi yang ada dalam Form Designer.Object Inspectorterdiri atas 2 (dua)page.
Pagepertama adalahProperties, berguna untuk mengaturpropertykomponen 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.
2.4. Object Treeview
Object Treeview secara default berada di sisi kiri desktop. Object Treeview menampilkan hubungan parent‐ childantar komponen dalam bentuk hirarki.Object Treeview, Form Designer,danObject Inspector saling tersinkronisasi, sehingga bila fokus kita ubah dalam Form Designer maka fokus dalam Object TreeviewdanObject Inspectorjuga 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.
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 bentuktree. Pada bagian kanan adalahCode Editor. Dengancode editor, kita dapat membuka lebih dari satu file text, yang masing‐ masing dapat di pilih dengan page selector. Pada bagian bawah code editor terdapatstatus baryang 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 dalamcode editorsebagai berikut ini.
2.5.1. Code Insight
Code Insight tool digunakan untuk menampilkan window popup sesuai konteks. Fitur‐ fitur dalam code editoryang masuk kelompok ini sebagai berikut :
Code Completion, digunakan untuk mempermudahSoftware Engineer dalam menentukanproperty, method, ataupuneventdari objek tertentu yang telah diketikkan.
Code Parameter, digunakan untuk mengetahui parameter apa saja yang dipunyai oleh suatu procedure/functiontertentu.
Tooltip Expression Evaluation. Pada saat program sedang berhenti ketika terjadi proses debugging, gerakkan mouse pointerke suatu ekspresi tertentu, diamkan beberapa lama, maka akan muncul nilai dari ekspresi tersebut.
Tooltip Symbol Insight. Pada saat kita sedang mengetikkan kode program, gerakkan mousedi atas suatuidentifiertertentu, maka akan muncul deklarasi dariidentifiertersebut.
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 beberapatemplatelain melaluiEditor Options.
2.5.3. Class Completion
Class Completion digunakan untuk melengkapi kelas tertentu dan untuk meng‐generatesuatu kerangka kode di bagian implementasi. Untuk melakukannya ketikkan tombolCtrl‐ Shift‐ C. Sebagai contoh, jika kita mendefinisikanproperty test : Integer, maka setelahCtrl‐ Shift‐ Cditekan maka akan di‐generate writedan read spicifier pada bagian private, serta kerangka kode pada bagian implementasi. Fungsi ini sangat membantu bila kita banyak bekerja denganObject Oriented Programming.
2.5.4. Code Browsing
browserdalam internet di mana pada saat kita tahan tombol controlmakaidentifier yang ada di bawah mouse pointer sepertiweb link, sedangkan tombolbrowse back danbrowse forwardmirip tombolback danforwarddalamweb browser.
Untuk memindahkan kursor dari deklarasi procedure/functionmenuju implementasiprocedure/function tersebut, gunakanCtrl‐ UpdanCtrl‐ 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 dalamcode explorer, maka kita akan langsung menuju tempatitemtersebut dalamcode editor.
2.6. Object Repository
Object Repository dalam Delphi berisi kumpulan objek (Form, Dialog, Wizzard, Template, dll) yang dapat memudahkan dalam haldevelopment. 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 adalahformataudata module, kita dapat menambahkannya ke object repositorydengan clickkanan dan pilih menuAdd to Repository. Untuk mengakses item dalam object repository, kita gunakan menuFile – New – Other. Di layar monitor akan muncul objek‐ objek yang dapat dipergunakan kembali.
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 dalamobject repository. Bila terjadi proses compile, perubahan yang terjadi dalamobject 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 repositorykarena 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 helpyang bekerja berdasarkan konteks. Dengan menekan tombolF1, akan diperolehhelptergantung objek/Windowyang aktif.
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 jenisfilesumber utama yang tidak boleh hilang/terhapus, yaitu :
File Project, mempunyai ekstensi *.dpr, File Unit, mempunyai ekstensi *.pas, File Form, mempunyai ekstensi *.dfm.
Bahasa pemrograman yang digunakan dalam Delphi adalah suatu variant dari bahasa Pascal, yang oleh Delphi disebut sebagaiObjectPascal karena variant ini meng‐ implementasiObject Oriented Programming (OOP). Pada bab ini, Delphi ObjectPascal 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.Compilertidak 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, danfieldpadarecord.
Pendefinisianidentifierharus memenuhi ketentuan sebagai berikut :
Panjang nama suatuidentifiermaksimum 63 (enam puluh tiga) karakter. Selebihnya akan diabaikan olehCompiler.
Identifierharus diawali dengan abjad, atau karakter garis bawah (_). Karakter berikutnya bisa abjad, karakter garis bawah, atau angka.
Identifiertidak dapat mengandung karakter spasi ataupun symbol‐ simbol seperti $, #, &, %, dan lain‐ lain.
Namaidentifiertidak boleh sama dengan kata kunci (reserved word). 3.1.3. Kata Kunci(reserved word)danDirective
Kata Kunci Peran dalam Delphi Pascal
and OperasiBooleanAND.
array Untuk mendefinisikanarray.
as Untuk melakukan typecast.
asm Awal dari definisiAssembly.
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 COMautomation).
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
dancase).
end Akhir dari blok.
except Awal dariexception block(untuktry…except).
exports Digunakan untuk meng‐ export procedure, function
atau varibel (dalam DLL).
file Untuk mendefinisikan variable dengan tipefile.
finalization Awal dari perintah yang harus dijalankan pada saat
unit ditutup (pasangan dariinitialization).
finally Kata kunci untuk melindungiresource(try…finally).
for Pengulangan dengan banyaknya pengulangan yang
sudah diketahui.
function Pendefinisian darifunction.
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 perintahassembly.
interface Awal dari bagianinterfacedalam unit.
Kata kunci untuk mendefinisikaninterface.
Is Untuk mengecek tipe kelas.
label Label yang menandai tempat untuk perintahgoto.
library Kata kunci untuk menandai sebuah proyek akan
menghasilkanlibrary(DLL).
mod Pembagian sisa.
nil Pointerkosong.
of Kata kunci yang menjadi pelengkap kata kunci lain tertentu (file, case, array, set, dll).
or OperatorBooleanuntukatau (OR).
out Definisi parameter untuk procedure/function yang
hanya digunakan sebagaioutputsaja.
packed Untuk mendefinisikan tipe record atau array yang
tidak di‐alignmenjadiwordataudouble‐ word.
procedure Pendefinisikanprocedure.
program Pendefinisikanprojectyang merupakan program.
property Atribut dari objek yang dapat memiliki metode
untuk mengaksesnya (SetterdanGetter).
raise Untuk membangkitkanexception.
record Untuk mendefinisikan tiperecord.
repeat Kata kunci untuk pengulangan di mana syarat
berhentinya pengulangan diperiksa di akhir blok.
resourcestring Untuk mendefinisikanresource.
set Untuk mendefinisikan himpunan.
shl Operasibitwiseuntukshift left.
shr Operasibitwiseuntukshift right.
string Untuk mendefinisikan tipe string.
then Untuk mendefinisikan alternative utama dalamif.
threadvar Untuk mendefinisikan variabel local darithread.
to Untuk mendefinisikan pengulangan denganfor
try Untuk melindungi resource (try…finally) atau untuk
menangkanexception (try…except).
type Untuk mendefinisikan tipeidentifier.
unit Untuk mendefinisikan unit.
until Untuk mendefinisikan pengecekan dalam
pengulanganrepeat.
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
ataufield, property, ataupunmethoddari objek.
Berikut ini beberapadirectiveyang ditampilkan dalam urutan alphabet.
NamaDirective PeranDirectivedalam Delphi Pascal
at Untuk mendefinisikan dalam metode mana
perintahraiseakan 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 ataupropertydari objek.
protected Untuk mendefinisikan level aksesprotected
bagi metode ataupropertydari objek.
published Untuk mendefinisikan level aksespublished
bagi metode ataupropertydari objek.
public Untuk mendefinisikan level akses public
ataupropertydari 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 directivedapat dikelompokkan menjadi 3 (tiga) kelompok, yaitu :
Switch directive, yaitu directive yang digunakan untuk menghidupkan atau mematikan fitur khusus yang dimiliki olehcompiler. Untuk setiapdirectiveyang digunakan, biasanya menggunakan tanda“+” atau “on” untuk menghidupkan fitur tersebut, dan menggunakan tanda “‐ “ atau “off” untuk mematikannya. Beberapa directivejenis 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 prosescompile. Contohnya adalah :
{ $I TYPES.INC }
{ $DEFINE DEBUG}
{ $IFDEF DEBUG}
Writeln (‘Debug is on.’) ; // baris ini di-compile { $ELSE}
Writeln(‘Debugis off.’) ; // baris ini tidak di-compile { $ENDIF}
{ $UNDEF DEBUG}
{ $IFNDEF DEBUG}
Writeln(‘Debugis off.’) ; // baris ini di-compile
{ $ENDIF}
Compiler directive dapat dikirimkan melaluicommand line parameter jika Anda menggunakancommand line parameter untuk melakukan compile, bisa juga diletakkan dalam configuration file (file dengan ekstension * .cfg). Semuacompiler directiveyang diletakkan dalam program akan meng‐override compiler directivedari file berekstensi *. cfg maupuncommand 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. Penggunaanunitakan 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 berakhirandcu.
Struktur Unit
Definisi Unit unitNama_Unit; interface
Bagian usesUnit1, Unit2, …, Unit N; interface functionTesting: Integer;
implementation
Uses List varNilai : Integer;
usesUnit A, Unit B, …, Unit Z;
functionTesting : Interger;
begin
result := 0;
end; Bagian initialization
implemen‐ Nilai := 100; tation 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 :
usesSysUtils, Windows;
procedureHapusFile (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 diunit Windowskarenaunitini disebut belakangan dalamuses. Bila yang kita inginkan adalah function DeleteFile yang ada dalam SysUtils, kita dapat menambahkan nama unitSysUtils di depanfunctionDeleteFile sehingga kode tersebut menjadi seperti di bawah ini.
usesSysUtils, Windows;
InitializationdanFinalization
Initialization adalah bagian yang dijalankan ketika aplikasi atau library (DLL) dipanggil ke memory oleh Windows. Delphi menggunakan metode depth‐ first traversaluntuk menjalankan kodeinitialization, 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 melakukanusesterhadap unit tersebut, kode initializationtidak akan dijalankan lagi.
Finalizationadalah bagian yang akan dijalankan ketika keluar dari aplikasi atau ketikalibrarydibuang 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 blokinitializationbisa saja kosong.
Berikut ini contoh yang menggambarkaninitializationdanfinalization.
Kita memiliki 3 (tiga) buah unit dengan nama Unit1, Unit2, dan Unit3. Panggil menuFile‐New‐Other.
PadaPage New, pilihConsole Applicationdan tekan tombolOK.
Kemudian Pilih menuFile‐New‐Unitsebanyak 3 (tiga) kali, sehingga kita mempunyai sebuah program utama dan 3 (tiga) buah unit. Untuk masing‐ masing unit ketikkan kode sebagai berikut ini :
programProject2;
{$APPTYPE CONSOLE} uses
Unit1in‘Unit1.pas’, Unit2in‘Unit2.pas’, Unit3inUnit3.pas’;
begin
Writeln(‘MainProgram’); end.
Writeln(‘Initialization Unit1’); finalization
Writeln(‘Finalization Unit1’); end.
unitUnit2;
initialization
Writeln(‘Initialization Unit2’); finalization
Writeln(‘Initialization Unit3’); finalization
Writeln(‘FinalizationUnit3’);
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 menjalankanfileRunProject.bat yang ada pada direktoricodeuntuk latihan ini.
Hasilnya sebagai berikut ini.
Initialization 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 menjalankaninitializationdirinya, unit1 tersebut akan memeriksa apakah adauses list. Ternyata adauses 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 useske unit apa pun, maka unit3 akan menjalankan bagianinitialization‐ nya dan mengembalikan kendali kepada unit2. Unit2 akan menjalankan initialization dan mengembalikan kendali kepada unit1. Unit1 akan meminta unit3 untuk memanggilinitialization. Tetapi karena initializationunit3 sudah pernah dipanggil, maka kendali diberikan kembali kepada unit1. Selanjutnya unit1 akan menjalankan bagianinitialization‐ nya, dan mengembalikan kendali kepada project2.
3.1.5. Konstanta
diletakkan pada bagian interface, maka konstanta tersebut akan dikenal oleh unit lain. Bila diletakkan pada bagian implementation, maka konstanta tersebut hanya dikenal oleh unit tersebut. Bila diletakkan dalam suatu rutin (procedure ataufunction) maka konstanta tersebut hanya dikenali oleh rutin tersebut. Dikenalinya suatuidentifier dari suatu lokasi tertentu dalam program biasa disebut dengan istilah scope. Berikut ini contoh konstanta.
unitUnit2; interface
const
AppCaption =‘My Program ver 1.0’;
procedureHitungData;
( 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 tipereal.
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, yaituAbs, Chr, Hi, High, Length, Lo, Low, Odd, Ord, Pred, Round, Size Of, Succ, Swap,sertaTrunc. Contohnya sebagai berikut ini.
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)ofByte; 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 terhadapscope‐ 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;
KarenaValuedanSumbertipe 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 contohexpression.
Expression Keterangan
X variabel
@X alamat variabel
17 konstanta bertipeinteger
Jumlah variabel
Hitung(X, B) Pemanggilan fungsi
Char(48) valuetypecast
X=10 ekspresiboolean
notSelesai ekspresiboolean
Expression selalu bisa dibentuk dari expressionlain dengan menggunakan operator, sedangkan ekspresi pembentuknya biasa disebutoperand.
Assignment
Assignmentadalah memasukkan suatu nilai ke dalam suatu variabel.Assignmentmenggunakan operator :=, dan dengan bentuk.
variabel := ekspresi
Variabel bisa dengan tipe data apa pun ,sedangkan ekspresi harus kompatibel dengan variabel yang diberikan. ContohAssignmentsebagai 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,assignmentbukanlah ekspresi(tidak menghasilkan nilai).
Operator
Operator adalah semacam fungsi yang merupakan bagian dari bahasa Pascal yang peran utamanya adalah membentuk ekspresi. Yang termasukoperatoradalah @,not, ^, “, /,div, mod, and, shl, shr, as, +, ‐ ,or, xor, =, >, <, <>, <=, >=,in, sertais.
Operator @, not, ^, adalah operator unary, artinya operator yang operand‐ nya hanya satu. Operator lainnya kecuali + dan – bersifatbinary, 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 olehoperand‐ nya. Sebagai contoh A + B akan menjadi operasi aritmetika penjumlahan bila A dan B adalah IntegeratauReal. Tetapi A + B akan menjadiconcatenation (penyambungan) string bila A dan B bertipe string. Bahkan A + B bisa berarti operasiunion (gabungan) bila A dan B bertipe Himpunan Set. Tetapi perlu diperhatikan juga bahwa bila A adalah Integer dan B adalahstring, maka A + B tidak dapat bekerja (menghasilkancompiler error).
Operator Precedence
Operator Precedence
@, not, ^ pertama (tertinggi, dioperasikan paling awal)
*, /, div, mod, and, shl, shr, as kedua
+, ‐ , or, xor ketiga
=, >, <, <>, <=, >=, in, is keempat (terendah, dioperasikan terakhir)
Untuk mengubahprecedence, kita bisa menggunakan tanda kurung, misalnya : (A+B)*C, makaoperator+ 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. Tipedata String, Array, danRecordakan dibahas secara terpisah.
Boolean
Boolean adalah tipe data yang nilainya adalah True atauFalse. Dalam Delphi Pascal. Tipe data Boolean disimpan dengan lebar 1byte.
OperasiBoolean
Operasi Boolean memerlukan operand dengan tipe boolean (True atau False) dan menghasilkan nilai Booleanjuga.Operatoryang digunakan dalam operasiBooleansebagai berikut.
Operator Operasi Contoh
not negasi. not(C in MySet)
not(A>10)
and conjunction, yaitu menghasilkan
nilai True bila kedua operand bernilai True. Bila salah satu operand False maka hasilnya pastiFalse.
AandB
or disjunction, yaitu menghasilkan
nilai Truebila salah satuoperand bernilai True. Bila keduanya Falsehasilnya adalahFalse.
AorB
xor exclusive disjunction, yaitu
menghasilkan nilai True bila hanya satu operand yang True. Bila keduanya True atau keduanya False, maka hasilnya adalahFalse.
AxorB
Perhatikan ekspresibooleanberikut ini.
(A<>0)and(B<>0)
Oleh karena itu nilai dari variabel B tidak akan diperiksa oleh program (ekspresi (B<>0) tidak dievaluasi oleh program).
Perhatikan juga ekspresibooleandi bawah ini.
(A=0)or(B=0)
Bila nilai dari variabel A adalah 0, maka ekspresi di atas pasti bernilai Truetidak 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 booleandengan operator and dan or kedua operand selalu diperiksa secara lengkap dengan cara mengubahcompiler option.
Operasi Aritmetik
Operasi aritmetik digunakan untuk melakukan penghitungan aritmetik. Operand dan hasil dari operasi aritmetik adalahIntegeratauReal. 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 adalahreal
‐ Pengurangan Integer, Real Integer, Real
Jika salah satu operand adalah real, maka hasilnya adalahreal
* Perkalian Integer, Real Integer, Real
Jika salah satu operand adalah real, maka hasilnya adalahreal
/ Pembagian Real Integer, Real Real
div Pembagian Integer Integer Integer
Hasil akan dibulatkan ke bawah
mod Pembagian sisa Integer Integer
+(unary) Tanda + Integer, Real Integer, Real
Integer
Integer adalah bilangan bulat. Dalam Delphi Pascal, terdapat beberapa tipe data yang merupakan Integer dan dikelompokkan sebagai GenerikdanFundamental. Sebisa mungkin gunakan tipegenerikkarena tipe generikakan dioptimasi berkaitan dengan sistem operasi dan CPU yang dipergunakan.
Tipe Generik
Tipe Data Range Format
Integer ‐ 2,147,483,648 s.d. 2,147,483,647 signed 32‐ bit
Cardinal 0 s.d. 4,294,967,295 unsigned 32‐ bit
Tipe Fundamental
Tipe Data Range Format
Shortint ‐ 128 s.d. 127 signed 8‐ bit
SmallInt ‐ 32,768 s.d. 32,767 signed 16‐ bit
Longint ‐ 2,147,483,648 s.d. 2,147,483,647 signed 32‐ bit
Int64 ‐ (2^63)..(2^63)‐ 1 signed 64‐ bit
Byte 0 s.d. 255 unsigned 8‐ bit
Word 0 s.d. 65,535 unsigned 16‐ bit
Longword 0.4294967295 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 rangeinteger, maka nilaiintegerakan berputar kembali ke nilai awal dari range.
Berikut ini kita akan bereksperimen dengan bilanganintegeruntuk memahami perilakuinteger. Buat sebuah aplikasi console baru. (Pilih menuFile‐ New‐ Other, lalu pilihConsole Application). Ketikkan kode dalam program sehingga program kita akan menjadi seperti berikut ini.
programProject2; {$APPTYPE CONSOLE}
uses
SysUtils;
varByte1, Byte2: Byte; ShInt1: ShortInt; Int1, Int2: Integer; Card1 : Cardinal; IntA: Int64; begin
Writeln(‘Eksperimen dengan Integer’); Writeln(‘---‘); Byte1 := 20;
Writeln(‘Byte1= ‘, Byte1);
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 denganrange‐ 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(unsigned32‐ bit), maka nilai tersebut akan berada di luarrange Cardinal (negatif), sehingga terjadi perputaran kembali ke nilai maksimumCardinal, dan menyebabkan nilai akhir kembali bernilai 4 milyar.
Operasi Bitwise
Operasi Bitwise (Bitwise Operation) adalah meng‐ operasikan 2 (dua)operand dengan tipeinteger yang dipandang sebagai kumpulanbit. Perhatikan contoh berikut (A, B, dan C adalahByte).
A := 5; B := 12; C := A and B;
Berapa nilai C ? Nilai C dapat ditentukan dengan menggunakan bitwise operation, yaitu dengan memandang A dan B sebagai kumpulanBit. Karena A dan B bertipeByte, maka panjangnya adalah 8Bit.
A 5 0000 0101
B 12 0000 1100
---and
C 0000 0100 = 4
Setiapbityang bersesuaian dioperasikan dengan operasilogicand, yaitu bila keduabitbernilai satu maka nilaibithasilnya adalah 1. Selain itu, bernilai nol. Jadi, nilai C adalah 4.
Secara lengkap, operatorbitwisesebagai berikut.
Operator Keterangan Contoh
not bitwisenegasi
untuk setiap bit 0 menjadi 1 dan setiap bit 1 menjadi 0.
Bila duabitbernilai 1, makabit hasilnya bernilai 1. Jika salah satu bitbernilai 0 maka hasilnya bernilai 0.
Bila salah satu bit bernilai 1, maka bit hasilnya bernilai 1. Jika keduanya 0, maka bit hasilnya bernilai 0.
Bila salah satubitbernilai 1 danbitlainnya bernilai 0, makabithasilnya adalah 1. Bila keduanya 0 atau keduanya 1, makabithasilnya adalah 0.
shi bitwiseshift left
Menggeser semuabitke kiri darioperandpertama sebanyakoperandkedua. shr bitwiseshift right
Menggeser semua bit ke kanan dari operand pertama sebanyakoperandkedua.
A := 5;
Tipe fundamental bilanganrealdalam Delphi Pascal sebagai berikut.
Tipe Data Ukuran (byte) Range Significant Digits
real48 6 2.9 x 106^‐ 39 s.d. 1.7 x 10^38 11‐ 12
comp 8 ‐ 9,223,372,036,854,775,808 s.d.
9,223,372,036,854,775,807
19‐ 20
currency 8 ‐ 922337203685477.5808 s.d.
922337203685477.5807
19‐ 20
Tipe genericRealpada Delphi 7 didefinisikan sebagaiDouble.
Tipeextendedmenawarkan presisi lebih tinggi tetapi agak kurang portable.
TipeComp (Computational)adalahnativeIntel CPU dan direpresentasikan sebagaiInteger 64 bit.
Tipe Currency adalah fixed‐ floating point data type yang digunakan untuk meminimalkan error pembulatan. Tipe ini direpresentasikan sebagai Integer 64 bit yang berskala dan hanya mempunyai 4 (empat)digitdi belakang koma.
ChardanWide Char
Enumerated
Tipe data Enumerated adalah tipe data yang isinya terbatas pada nilai‐ nilai yang telah didefinisikan. Untuk mendefinisikan tipe dan jenis ini digunakan kurung buka sebagai awal, kurung tutup sebagai akhir, serta setiap nilai yang mungkin dibatasi dengan tanda koma.
Contohnya sebagai berikut.
type
TKartu = (Club, Diamond. Heart, Spade); TJenisKelamin = (Pria, Wanita);
Set
Tipe data set adalah kumpulan elemen data yang masing‐ masing mempunyai tipe yang sama. Set merupakan implementasi dari himpunan data. Untuk mendefinisikannya dapat dilihat pada contoh berikut ini.
type
TSetHuruf =set ofChar; var
Vokal : TSetHuruf; Konsonan : TSetHuruf; Angka : TSetHuruf; Kosong : TSetHuruf;
Untuk mengisi suatu set, dapat dilakukan secara langsung dengan menyebutkan tipe yang mungkin dan dibatasi oleh kurung kotak ([…]). Setiap elemen set dibatasi oleh koma. Setiap variabel yang didefinisikan sebagai set selalu dapat diisi dengan nilai kosong yang didefinisikan sebagai [ ]. Perhatikan contoh berikut ini.
Operasi dalam Set (himpunan) sebagai berikut.
Operator Fungsi TipeOperand Tipe Hasil
+ Gabungan. Tipe set yang kompatibel. Set
‐ Selisih. Tipe set yang kompatibel. Set
* Irisan. Tipe set yang kompatibel. Set
In Anggota dari. Operand kiri adalah
elemen yang akan
diperiksa. Operand kanan adalah set yang akan diperiksa.
Perhatikan juga contoh berikut.
type
TSetHuruf = set of Char; var
Alfabet := Vokal + Konsonan + Angka Kosong := Vokal + Konsonan; HasilBoolean :=‘A’ in Vokal;
AlfabetBukanAngka := Alfabet–Angka; end;
3.1.10. Tipe Data String
Delphi Pascal mendukung beberapa macamstring, yaituShort String,Ansi StringatauLong String,Wide String, danNull‐ terminated String. Indeksstringdimulai dari 1 (satu).
Short String
Short string adalah string dengan panjang maksimum 255 (dua ratus lima puluh lima) karakter. Pendefinisian dari Short String dapat dilakukan dengan 2 (dua) cara, yaitu dengan Short string dan dengan string [x], di mana x adalah panjang maksimum dari string. Pendefinisian dengan Short string adalahstringdengan panjang maksimum 255 karakter danmemoryyang dialokasikan sejumlah 256byte. Untuk pendefinisian dengan string [x] diterjemahkan sebagai panjang maksimum dari string adalah x sedangkanmemoryyang dialokasikan adalah x+1. Indeks ke 0 daristringakan menyimpan panjangstring. Short stringhanya digunakan untukbackward compatibility. Perhatikan contoh bawah ini.
var
S : ShortString;(panjang maks 255 karakter, 256 byte)
S1 : string[10]; (panjang maks 10 karakter, 11 byte)
Len : Integer;
Wide String
Wide String mirip dengan Ansi String hanya setiap karakternya disimpan sebagai Wide Char (16 bit karakter Unicode). Perilaku Wide String sangat mirip dengan Ansi String. Perbedaannya hanya pada ukuran setiap karakternya.
Null‐ terminated String
Null‐ terminated stringadalah kumpulan karakter bukannull (#0)yang diakhiri oleh karakternull. Karakter null pertama dalam string ini akan dianggap sebagai akhir dari string. Null‐ terminated string banyak dipakai untuk meng‐ akses Windows API. Implementasi pemrograman dengan menggunakan Null‐ terminated String adalah dengan menggunakan variabel bertipe PChar (Pointer of Char), atau menggunakan array of char. Selain itu, Anda juga bisa menggunakan typecast terhadap variabel tipe string, atau menggunakanfunction StrPCopy.
3.1.11. Pencabangan dan Pengulangan
Pencabangan adalah mengontrol program sehingga perintah yang dijalankan mengikuti alur tertentu berdasarkan suatu kondisi tertentu. Yang termasuk dalam pencabangan adalah perintahif – then – else, dan perintahcase.
Elemen program lain yang juga sangat penting adalah pengulangan atau loop.Loopadalah pengulangan perintah sesuai dengan kondisi tertentu. Dalam object Pascal terdapat 3 (tiga) macam loop, yaitu : for, while, danrepeat, yang masing‐ masing mempunyai ciri tersendiri.
If, Then, Else
Salah satu kata kunci yang mempunyai peran sangat besar dalam pemrograman adalah kelompok kata kunciIf, Then, Else. Kata kunci ini digunakan untuk melakukan suatu proses tertentu bila kondisi tertentu dipenuhi, dan menjalankan proses lain jika kondisi tidak terpenuhi.
Bentuk dasarnya adalah
if<ekspresi Boolean>then<statement> [else<statement>];
Ekspresi adalah sekumpulan perintah dalam object Pascal yang memberikan nilai tertentu. Ekspresi Booleandalamifdi atas adalah ekspresi yang hasilnya adalah tipe dataBoolean (True atau False).
Statement adalah sekumpulan perintah dalam object Pascal yang me‐ representasikan aksi tertentu dan akan dijalankan. Sekumpulanstatementyang diawali oleh begindan diakhiri olehenddisebut statement block, dan selalu dapat dianggap sebagaistatementtunggal.
Kata kuncielse <statement>,bersifatoptional,artinya boleh tidak dikutsertakan. Sebelum kata kuncielse tidak ada titik koma. Kita buat sebuah contoh berikut ini.
ifa>0thenx := 100elsex := 200;
Case
Kalau if‐ then‐ else adalah pencabangan yang mempunyai dua alternatif, makaCase adalah pencabangan yang mempunyai lebih dari dua alternatif. Bentuknya sebagai berikut ini.
case<expression>of
Expression adalah suatu ekspresi yang menghasilkan nilai ordinal, sedangkan casevalue adalah nilai konstan yang akan dibandingkan dengan nilai ekspresiordinaltersebut.
Contoh adalah :
Label1.Caption :=‘Special Character’; end;
Berikut ini adalah contoh lain yang akan menggunakancase.
Variabel Nilai adalah nilai ujian yang akan diperiksa untuk menghasilkan nilaiindex.
varNilai : Byte; begin
caseNilai of
0..34 : Label1.Caption := ‘Nilai E’; 35..54 : Label1.Caption := ‘Nilai D’; 55..74 : Label1.Caption := ‘Nilai C’; 75..84 : Label1.Caption := ‘Nilai B’; else
Label1.Caption:= ‘Nilai A’; end;
end.
For
Loop jenis ini dilakukan untuk pengulangan dengan banyaknya pengulangan yang sudah diketahui. Format dariloopjenis ini sebagai berikut.
for <nilai_awal> to <nilai_akhir>do <statement>
Untukforyang nilai akhir lebih kecil dari nilai awal, gunakan bentuk berikut ini.
for <nilai_awal> downto <nilai_akhir> do <statement>
… end;
Nilai_awal dan Nilai_akhir adalah ekspresi dengan tipeInteger.
Contoh penggunaanforsebagai berikut.
var
Writeln(‘Iteration value : ‘ + IntToStr(X); Inc (X, 10);
end; end.
While
Loop jenis ini digunakan untuk melakukan pengulangan selama suatu kondisi tertentu terpenuhi. Bentuknya sebagai berikut.
while<kondisi>do begin <statement>
Writeln(‘Iterasi ke ‘ +IntToStr(I)); Dec(I);
end;
Memo1.Lines.Add(‘Selesai’); end;
Repeat
repeat
Memo1.Lines.Add(‘Iterasi ke‘ +IntToStr(I)); Dec(I);
untilI = -1;
Memo1.Lines.Add(‘Selesai’); end;
3.1.12. Array
Arrayadalah kumpulan data yang bertipe sama dengan banyaknya elemen tetap. Secara internal, seluruh elemen array tersimpan dalam memori yang contiguous, di mana setiap elemen akan langsung diikuti oleh elemen berikutnya. Untuk meng‐ akses array, dipergunakan indeks yang berada dalam kurung kotak([]), misalnya A[0], A[100], dst.
Keuntungan terbesar ketika kita menggunakan array adalah akses elemenya yang sangat cepat. Secara internal, alamat elemen ke n dari array dapat dihitung dengan n dan ukuran dari array tersebut, oleh karena itu O(A[n]) = 1. Kerugiannya adalah bila kita ingin menyisipkan data ke dalam array atau ingin menghapus elemen array, maka kita harus menggeser semua elemennya. Delphi menyediakan beberapa tipearray, yaitustatic array, dynamic arraysertaopen array.
Array Statis (Static Array)
Array statisadalaharrayyang banyaknya elemen tetap selama program berjalan karena ditentukan pada saat deklarasi. Indeks dari array statis bisa berupaInteger, Char, atau tipe ordinal lainnya. Memori yang dialokasikan untuk array statisadalah banyaknya elemen dikalikan ukuran elemen. Mendefinisikan array statis berukuran besar sebagai variabel lokal procedure/function tidak dianjurkan karena menyebabkan borosnya penggunaan stack.
Pendefinisian Array Statis
Bentuk umum dariarray statisadalah :
<NamaArray> =array[Tipe Indeks]of<Tipe Dasar>;
Perhatikan contoh di bawah ini.
type
ArrayChar =array[Char]ofInteger; // Array #0 s.d. #255 dari Integer ArrayByte =array[Byte]ofChar;
// Array 0 s.d. 255 dari Char
ArrayInt =array[ShortInt]of string; // Array -128 s.d. 127 dari string
Sebagai contoh lain, untuk mendefinisikan array yang terdiri atas 5 (lima) elemen integer, kita dapat melakukannya dengan cara sebagai berikut :
var
MyArray :array[0..4]ofinteger
Untuk mengaksesnya, gunakan cara sebagai berikut ini.
var
MyArray :array[0..4]ofinteger
begin
Array Dinamis (Dynamic Array)
Array dinamis adalah array yang banyaknya elemen dapat diubah pada saatruntime. Indeks dari array dinamis selalu diawali dengan 0, dan banyaknya elemen dapat ditentukan dengan menggunakan SetLength.
Mendefinisikan Array Dinamis
Pendefinisian arraydinamis mirip denganarray statis tetapi tidak menyebutkan tipe indeks‐ nya. Sintaks pendefinisianarraydinamis sebagai berikut ini.
type
<NamaTipe> =array of<Tipe Dasar>; var
Tipe dasar adalah tipe elemenarray, bisa tipe elementer sepertiInteger, Byte, Double, String,atau Recordjuga bisa tipe lain seperti TObject (dan turunannya).
type
TMyIntegerArray = array of Integer; TMyFloatArray = array of Double;
var
A :array of string; B :array ofboolean; C :array ofTComponent;
Pada awalnya variabel array dinamis berisinil, di mana banyaknya elemen dari array dinamis adalah 0 (tidak mempunyai elemen), sehingga kita perlu memanggil procedure SetLength untuk menentukan berapa ukuranarraydinamis yang diinginkan.
varX :array ofInteger; vSize : Integer;
Array Terbuka (Open Array)
Array Terbuka adalah parameter dalam procedure atau function yang dapat dilewati oleh array statis ataupun array dinamis. Array statis yang dilewatkan pun tidak tergantung dengan tipe indeknya. Batas indeks minimum array terbuka adalah 0, meskipun variabel array yang dilewatkan batas minimumnya bukan 0. Batas maksimumnya tergantung ukuranarrayyang dilewatkan.
Perhatikan contoh kode berikut ini.
functionArray2Str(vNamaArray : string; vArray : array of integer) :string; vari : Integer;
vLow : Integer; begin
result :=‘ ‘;
fori := Low(vArray) toHigh(vArray)do begin
result := result+Format(‘%s[ %d] : %d’, [ vNamaArray, i, vArray[ i]]); result := result+#13#10;
end; end;
Pada contoh di atas, parameter vArray adalah array terbuka sehingga bisa dilewati oleh array statis dengan berbagai tipe indeks.
3.1.13. Record
sebuah tipe data bentukan berjenis record, kemudian baru kita mendefinisikan variabel yang bertipe record tersebut. Awal definisi data record ditandai dengan kata kunci record dan diakhiri dengan kata kunciend. Berikut ini contoh penggunaan tipe datarecord.
type
TMyRecord =record Nama :string; Alamat :string; Kota :string; KodePos :string[ 5]; end;
var
MyRecordVar : TMyRecord;
begin
MyRecordVar.Nama := ‘Diego Maradona’;
MyRecordVar.Alamat := ‘Jalan Gunung Merapi No.99’; MyRecordVar.Kota := ‘Buenos Aires’;
MyRecordVar.KodePos := ‘56777’; end;
Kata Kunci With
Bila kita berbicara tentang record, maka mau tidak mau kita harus berbicara sebuah kata kunci, yaitu with. Meskipun demikian penggunaan kata kunci ini tidak terbatas untuk penggunaan record saja. Kata kunci ini digunakan untuk mempermudah pemrograman dengan menggunakan record. Untuk mempermudah pembahasan, kita tulis ulang contoh yang telah dibahas di atas, sebagai berikut.
MyRecordVar.Nama :=‘Diego Maradona’;
MyRecordVar.Alamat := ‘Jalan Gunung Merapi No.99’; MyRecordVar.Kota :=‘Buenos Aires’;
MyRecordVar.KodePos := ‘56777’;
Dengan menggunakan kata kunciwith, kita dapat menyederhanakan perintah di atas sebagai berikut ini.
withMyRecordVardo begin Nama := ‘Diego Maradona’;
Alamat := ‘JalanGunung MerapiNo.99’; Kota:= ‘Buenos Aires’;
KotaPos :=‘56777’; end;
3.1.14. Pointer
membangun struktur data dan dapat dimanfaatkan untuk mengelola memori secara akurat. Di sisi lain, dalam penggunaan pointer, sangat mudah terjadi salah pakai yang bisa menimbulkan error yang sulit dicari penyebabnya, yaituaccess violation.
Dasar‐ dasar penggunaan Pointer
Seperti telah dijelaskan sebelumnya,pointer adalah tipe data yang dapat menunjuk ke lokasi tertentu di memori. Untuk mendefinisikan sebuah variabel pointer, kita bisa menggunakan <tipe data> atau bisa menggunakanPointer. Perhatikan contoh berikut ini.
var p1 : ^Integer; // pointer to integer p2 : ^Real; // pointer to real number p3 : Pointer // untyped pointer
Variabel p1 adalah variabel dengan tipepointer to integer, artinya nilai yang ditunjuk oleh p1 adalah nilai bertipe integer. Variabel p2 adalah pointer to real, artinya nilai yang ditunjuk oleh variabel ini adalah bilangan real. Sementara variabel px adalah untyped pointer, artinya tipe yang ditunjuk oleh variabel pointer ini tidak ditentukan. Variabel bertipe untyped pointer akan kompatibel dengan variabel pointer bertipe apa pun. Menggunakanuntyped pointerpada umumnya lebih fleksibel tetapi kurang aman.
3.1.15. Function dan Procedure
FunctiondanProcedureadalah suatu blok program yang dapat dipanggil oleh bagian lain dalam program. Setelah dipanggil, function akan mengembalikan nilai, sedangkanprocedure tidak. Karena menghasilkan nilai, function bisa menjadi bagian dari suatu ekspresi, dan bisa juga nilainya di‐assign‐ kan ke suatu variabel tertentu. Procedure tidak menghasilkan nilai, sehingga tidak dapat menjadi bagian dari suatu ekspresi. Demikian juga, proceduretidak dapat di‐assign‐ kan ke variabel. Berikut ini contoh pemanggilan functiondanprocedure.
X := (MyFunction(Y)+A)*B; MyFunction(P);
MyProcedure(X);
Functionbisa dipanggil sepertiprocedure(tanpa perlu dipergunakan nilainya), seperti contoh di atas. Pendeklarasian Function
Deklarasi untukfunctionsebagai berikut ini.
function<NamaFunction>(<Parameter>) : <Tipe Hasil>; <directives>;
<localDeclarations>; begin
<Pernyataan–pernyataan> end;
Nama Function mengacu pada ketentuan identifier. Parameter berbentuk daftar nama parameter dan tipenya akan dibahas secara khusus. Tipe hasil adalah semua tipe data yang mungkin. Directives mencakupcalling conventions, forward declaration, sertaoverloading.
Contoh pendeklarasian darifunctionsebagai berikut ini.
functionMyFx : Integer; begin
Result := 17 end;
Result adalah variabel yang sudah terdefinisi secara internal untuk menyimpan hasil keluaranfunction. Tipe variabelresultsama dengan deklarasi tipe hasilfunction.
Kita juga dapat menggunakan namafunctionuntuk mengembalikan hasil, seperti terlihat pada contoh di bawah ini.
functionMyFx : Integer; begin
MyFx := 17; end;
Pendeklarasian Procedure
Seperti telah disebutkan di atas, perbedaan antara function dan proceduresangatlah tipis. Deklarasinya pun sangat mirip seperti terlihat di bawah ini.
function<NamaProcedure>(<Parameter>); <directives>; <localDeclarations>;
begin
<Pernyataan–pernyataan> end;
Nama Procedure mengacu pada ketentuan identifier. Parameter berbentuk daftar nama parameter dan tipenya akan dibahas secara khusus. Directivesmencakupcalling conventions,forward declaration, serta overloading.
Local declarationadalah deklarasiconstant, tipe data, variabellocal, ataupunfunctiondanprocedure.
Contoh dariproceduresebagai berikut ini.