Rabu, 30 Desember 2015

Free Pascal - Referensi Tipe Data Secara Umum


Bahasa pemrograman Free Pascal sebenarnya memiliki banyak tipe data. Namun, beberapa tipe data yang digunakan secara umum meliputi Integer, Subrange, Boolean, Strings, dan Arrays. Yang saya maksud "umum" di sini merupakan tipe data yang kebanyakan orang tahu. Atau bisa dibilang, semua bahasa pemrograman memiliki tipe data ini, kecuali Subrange. Padahal, di dalam bahasa Free Pascal sendiri terdapat banyak sekali tipe data yang dalam satu kategori integer saja masih terdapat banyak jenis (sub-tipe). Sebagai contoh, di dalam satu kategori integer terdapat sub-tipe integer, shorint, smallint, longint, dst.

Integer

Integer memiliki sub-tipe data yaitu byte, shortint, smallint, word, integer, cardinal, longint, longword, int64, dan qword. Tipe-tipe tersebut digunakan sesuai keperluannya. Adapun spesifikasi masing-masing tipe data ada di bawah.
Tipe DataBatasanUkuran (byte)
Byte0..2551
Shortint-128..1281
Smallint-32768..327672
Word0..655352
Integersmallint atau longint2 atau 4
Cardinallongword4
Longint-2147483648..21474836474
Longword0..42949672954
Int64-9223372036854775808..92233720368547758078
QWord0..184467440737095516158

Penggunaannya secara umum sebagai berikut.

program FreePascal; // Nama program "FreePascal"
var angka: Integer; // Definisi variabel angka berupa integer
begin // __main__ dalam Free Pascal
  angka := 1; // Definisi isi variabel angka menjadi 1
  writeln(angka); // Cetak keluaran dari variabel angka
end. // EOF dalam Free Pascal (baris akhir berkas)
Apabila yang didefinisikan keluar batasan (lihat tabel) maka akan muncul pesan warning dengan isi "Warning: range check error while evaluating constants". Sebagai contoh, asumsikan penggunaan tipe data Byte dengan masukan -2. Maka keluaran akan menjadi 254. Bagaimana bisa? Batasan pada Byte yaitu 0 hingga 255. Apabila masukan keluar dari batas misal -2, maka dari 0 mundur 2 angka. Diketahui nilai maksimal dari Byte yaitu 255. Dari angka 0 mundur 1 angka, sehingga menjadi 255. Dari 255 mundur lagi 1 angka, sehingga menjadi 254. Atau, pada tipe data Byte dengan masukan 258. Maka, keluaran akan menjadi 2. Karena, batasan Byte dari 0 hingga 255. Masukan berupa 258 yang melebihi 3 angka dari batas (258-255 = 3). Karena keluar batas maksimal, maka kembali ke batas minimal yaitu 0 lalu ditambah sisanya. Karena kembali ke 0 telah memakan 1 angka, maka sisanya 2.

Lebih mudahnya seperti ini:
min = Minimum.
max = Maximum.
input = Masukan.
result = Keluaran.

input > max? result = |max + ( 1 - input )|
input < min? result = |max + ( 1 + input )|

Contoh, tipe data Byte dengan batasan 0..255. Lalu diberikan masukan -19 dan 289.
-19 < 0 maka result = |255 + ( 1 + (-19) )| = |255 - 18| = |237| = 237
289 > 255 maka result = |255 + ( 1 - 289 )| = |255 - 288| = |-33| = 33

Kesimpulan, rumus pencarian masukan apabila melebihi batasan sebagai barikut:
result = |max + (1 +- input)|
Keterangan:
result = keluaran
max = batasan maksimum tipe data
input menjadi positif (+) apabila input < min
input menjadi negatif (-) apabila input > max

Strings

Strings bisa juga disebut tipe data untuk huruf atau karakter. Di dalam Strings, terdapat sub-tipe data juga. Adapun penjelasannya, saya tulis di bawah. Sebenarnya, tidak perlu lagi melakukan definisi besaran dari Strings. Namun, jika tidak didefinisikan, Strings bisa memuat unlimited data (ansistring). Jika kita tidak ingin itu terjadi, cukup definisikan maksimal dari Strings tersebut. Secara umum, Strings didefinisikan seperti ini:
var teks: String;

Short Strings

Short Strings merupakan Strings yang besarnya kurang dari 255. Definisinya:
ShortString = String[255];
Kode tersebut dibaca "Tipe data String dengan maksimum 255 karakter".
Short Strings memakan memori sebanyak 0 byte.

Ansistrings

Ansistrings dapat memuat data hingga tidak terbatas. Ansistrings juga dapat diubah menjadi Short Strings oleh compiler apabila perlu. Untuk penggunaannya, cukup definisikan di variabel.
var teks: AnsiString;
Peringatan! AnsiStrings tidak direkomendasikan untuk kebutuhan kecepatan dan keringanan kode.
AnsiStrings memakan memori sebanyak "Panjang Karakter + 1 + 16 byte". Dengan catatan 16 byte dari Free Pascal 2.7.1.

UnicodeStrings

Seperti namanya, UnicodeStrings digunakan untuk bermain Unicode. Contoh penggunannya:
var unicode: UnicodeString;
begin
  unicode := 'at a: '#$0040' '#$0041; // Unicode ditulis dengan #$unicode
  writeln(unicode);
end.
UnicodeStrings memakan memori sebanyak "2 x Panjang Karakter + 1 + 16 byte". Dengan catatan 16 byte dari Free Pascal 2.7.1.

WideStrings

Pada dasarnya, WideStrings sama saja dengan UnicodeStrings. Namun, jika menggunakan ini di Windows, maka akan bekerja dengan windows function yang kemudian dapat digunakan bersama OLE automation.
Peringatan! AnsiStrings tidak direkomendasikan untuk kebutuhan kecepatan dan keringanan kode.
WideStrings memakan memori sebanyak "2 x Panjang Karakter + 1 + 16 byte". Dengan catatan 16 byte dari Free Pascal 2.7.1. Di Windows, WideStrings memakan memori sebanyak 0 byte.

Constant Strings

Sebenarnya ini merupakan String, namun penggunaannya untuk mendefinisikannya dengan kutip satu (single-quotes). ASCII code dapat digunakan di dalam Constant Strings.
S := 'Just a Char! With ASCII: '#145;

PChar

Tipe data ini sebenarnya tidak jauh beda dari Strings. Namun, ia memiliki index karakter yang dimulai dari 0. Normalnya, apabila kita mengambil index 0 dari Strings, maka akan muncul error. Tapi, tetap saja huruf pertama dimulai dari index 1.
PChar memakan memori sebanyak "Panjang Karakter + 1".

Subrange

Subrange bisa dibilang berupa jarak atau batasan. Di dalam Free Pascal, tipe data ini sering digunakan di dalam switch-case.Maka dari itu saya anggap umum. Seperti namanya, subrange merupakan jarak (kita sebut saja barisan). Semisal saya membuat Array dengan index dari 1 hingga 10. Maka tampilan pseudo-code-nya seperti ini:
var barisan: Array[1..10] of Integer = (1,2,3,4,5,6,7,8,9,10);
Barisan  (1,2,3,..,10) disebut sebagai tipe data Enumeration. Adapun Subrange yaitu pada Array[1..10]. Atau sebut saja begini, Enumeration merupakan barisan yang harus didefinisikan secara manual. Sementara Subrange merupakan barisan yang didefinisikan secara otomatis dengan titik sebanyak dua kali (..) sebagai identifier jarak.

Boolean

Ada beberapa tipe boolean di dalam Free Pascal. Namun, secara umum memang boolean lah yang digunakan. Boolean memiliki definisi 0 untuk nilai salah (false). Dan semua yang bukan 0 (nol) merupakan definisi untuk nilai benar (true).

Arrays

Arrays bisa dibilang merupakan barisan data yang memiliki nilai index atau kunci serta memiliki isi sebanyak jumlah index.

Statis

Untuk Static Arrays penggunaannya seperti yang telah ditulis di dalam pembahasan Subrange.
var barisan: Array[1..10] of Byte;
Dari kode di atas, kita dapat menyimpulkan untuk membuat sebuah Array haruslah mendefinisikan tipe data apa yang ada di dalam Array tersebut. Sebagai contoh dari data di atas, kita dapat baca "variabel barisan dengan tipe data Array yang membuat tipe data Byte".

Dinamis

Jika definisi Array statis menggunakan Subrange, di dalam dinamis cukup tuliskan Array saja.
var barisan: Array of Byte;
Untuk membuat data secara otomatis, gunakan method SetLength.
SetLength(barisan, 1000);
Artinya, buat Array dengan index berjumlah 1000. Adapun index yang dibuat yaitu 0..999. Ingat! Array selalu dimulai dengan index 0 apabila tidak didefinisikan secara jelas.

Penutup

Secara umum, di dalam Free Pascal, yang paling sering digunakan yaitu Integer, String, Subrange, Enumerator, dan Array. Pembahasan yang saya buat hanya memuat tipe data secara umum, namun sudah cukup banyak dan panjang penjelasannya. Untuk lengkapnya, akan segera saya tulis.
Tulisan yang saya buat bisa saja terdapat kesalahan atau ketidaktahuan saya dengan materi sehingga miss. Saya dengan senang hati menerima koreksian serta kritik/saran dari Anda. Jika ada kesalahan, maka akan segera saya revisi. Saya hanyalah orang biasa yang mencoba menjadi penulis. Jika ada kesalahan mohon dimaklumi dan dimaafkan. Terima kasih.

Tulisan Lainnya:

  • Free Pascal - Memulai Masuk ke Dunianya Free Pascal merupakan salah satu bahasa pemrograman favorit dalam kompetisi yang menggunakan bahasa pemrograman. Syntax kode-nya mudah dibaca sehingga bahasa ini menjadi pilihan di Indonesia. Katanya, Free Pascal mudah dip… Baca
  • Free Pascal - Referensi Tipe Data Secara Umum Bahasa pemrograman Free Pascal sebenarnya memiliki banyak tipe data. Namun, beberapa tipe data yang digunakan secara umum meliputi Integer, Subrange, Boolean, Strings, dan Arrays. Yang saya maksud "umum" di sini merupakan… Baca
  • Free Pascal - Tips untuk Kode yang Lebih Baik Di dalam bahasa pemrograman apapun, dikenal dengan faster code dan smaller code. Adapun tujuannya yaitu untuk mendapatkan kompleksitas kode yang baik sehingga ukuran kode ringan serta cepat. Berikut ini tips yang diberikan… Baca

0 komentar :

Posting Komentar

Komentar saya buka untuk umum termasuk Anonim. Gunakanlah bahasa Indonesia yang baik dan benar.