Pengantar Tipe Data
Data di komputer selain memiliki ukuran juga
memiliki tipe. Penentuan tipe data yang tepat akan menjadikan sebuah program
dapat dieksekusi (running) secara efektif. Bila data diibaratkan dengan orang
(yang tentu saja memiliki ukuran-ukuran), maka orang-orang memiliki tipe
tertentu saja yang cocok untuk bekerja di suatu unit usaha tertentu. Oleh
karena itu, kantor-kantor yang membutuhkan pegawai baru selalu mencantumkan
persyaratan-persyaratan khusus dan melakukan seleksi untuk mendapatkan orang
yang memiliki tipe yang paling cocok dengan apa yang akan dikerjakannya. Di
setiap bahasa pemrograman, disediakan berbagai tipe data dan kita (sebagai
programmer) dipersilahkan memilihnya. Tentu saja, kita akan memilih tipe data
yang sesuai dengan karakteristik data yang akan kita olah.
Setiap data yang dimasukkan ke komputer (nilai
data) harus memiliki tempat penampung secara fisik dan logika. Tempat menampung
fisik misalnya disket, harddisk (memori eksternal) dan sebagainya, termasuk
memori utama (memori internal). Sedangkan tempat menampung secara logika adalah
variabel memori (biasa disebut variabel
saja) dan atribut (selanjutnya disebut field).
Variabel adalah suatu tempat atau wadah penampung nilai data yang bersifat
sementara yang disimpan di memori. Contohnya : Bahasa pemrograman BASIC
mengharuskan untuk membedakan pemberian nama variabel untuk setiap data
(numerik/alphanunerik) dan banyak bahasa
pemrograman lain tidak membedakan nama variabel tetapi harus dideklarasikan,
misalnya : PASCAL.
Dalam Pascal, semua variabel yang akan
digunakan dalam program utama harus ditentukan atau dideklarasikan tipe
datanya. Menentukan tipe data suatu variabel, sekaligus menentukan batasan
nilai variabel tersebut dan jenis operasi yang bisa dilaksanakan terhadap
variabel atau perubah tersebut.
Tipe data dapat didefinisikan dengan
istilah tempat untuk menentukan pemberian nilai terhadap suatu variabel.
Gunanya untuk mendefinisikan objek yang akan diprogram. Tipe data yang kita
pilih akan menentukan hasil proses yang kita lakukan. Misalnya di BASIC:
A$
=”25”
B$
= ”48”
C$
= A$ + B$
PRINT
C$
Maka hasilnya adalah ”2548”. Akan berbeda
jika tulis :
A
= 25
B
= 48
C
= A + B
PRINT
C
Hasilnya
adalah 73.
Jika ditulis A = 25, maka A adalah variabel dan 25 adalah nilai data. Kapan kita gunakan variabel
berjenis numerik dan kapan kita gunakan string disesuaikan dengan kebutuhan
proses kita nantinya. Meskipun nilai datanya berupa angka tetapi jika data
tersebut tidak akan kita proses secara matematis, maka lebih tepat nilai data
tersebut kita tampung di variabel berjenis string. Pemberian nama variabel
harus mengikuti aturan di bahasa pemrograman yang kita gunakan. Umumnya, nama
variabel tidak boleh sama dengan statement (perintah-perintah yang ada di
bahasa pemrograman yang disebut Reserved
Word), harus dimulai dengan huruf dan tidak boleh mengandung operator.
Sebagian hal tentang strukur data telah diuraikan
sebelumnya, pada bagian ini akan diuraikan tentang Tipe Data Abstrak (TDA),
konsep dan peranannya dalam proses perancangan program secara keseluruhan.
Pengertian Tipe Data Abstrak
(TDA)
Tipe data sebuah variabel merupakan kumpulan nilai
yang dapat dimuat oleh variabel tersebut. Misalnya sebuah tipe Boolean hanya
bernilai TRUE atau FALSE, tidak boleh nilai yang lain.
Tipe Data Abstrak adalah suatu model matematika,
disertai sekumpulan operasi terhadap model tersebut. Untuk mempresentasikan
suatu model matematis dari suatu TDA, digunakan struktur data yang berisi
sekumpulan variabel, yang bisa terdiri atas beberapa tipe data dan mempunyai
bermacam-macam jenis dan cara relasi antara setiap variabel.
Ada 3 jenis dasar dari tipe data pada Turbo
Pascal, yaitu :
1. Tipe Data Sederhana
2. Tipe Data Terstruktur
3. Tipe Data Pointer
1. Tipe Data Sederhana
Tipe data
sederhana bisa diartikan bahwa dalam sebuah variabel / perubah hanya menyimpan
sebuah nilai data.
a.
Tipe Ordinal
Karakteristik tipe data ordinal adalah
nilai dari suatu tipe ordinal merupakan himpunan berurutan (ordered set).
-
Tipe Integer
Tipe data integer adalah
bilangan bulat atau tipe data yang nilainya tidak mempunyai titik desimal. Pada
Pascal tipe data numerik ada dua yaitu Integer dan Real. Tanda Plus (+) dan
Minus(-) dapat mendahului bilangan integer.
Contoh konstanta integer
yang sah :
-234
+1098
1234
0
-7890
Contoh konstanta integer
yang tidak sah :
33000 (terlalu besar, maksimum 32767)
12,345 (memakai koma)
-33000 (terlalu kecil, minimum -32767)
24.0 (memakai titik desimal)
Ada 5 (lima) tipe yang termasuk dalam kelompok
ini, yaitu :
Tipe Batas
Nilai Ukuran dalm Byte
Byte 0 ..
255 1
Shortint -127 .. 127 1
Word 0 .. 65535 2
Integer -32767 .. 32767 2
Longint -2147483648
.. 2147483647 4
Tipe data juga menentukan macam operasi yang bisa dilaksanakan.
Operator–operator yang bisa dikerjakan dengan integer adalah : +, -, *, DIV dan
MOD.
Contoh :
Ø 3 DIV 4 akan menghasilkan 0
Karena
bagian pecahan yaitu 0.75 dihilangkan.
Ø 5 MOD 3 akan menghasilkan 1
Karena sisa pembagian 5 dan
3 adalah 2.
-
Tipe Boolean
Tipe data boolean mempunyai
dua nilai, yaitu True (nilai biner 1)
dan False (nilai biner 0).
Contoh mendeklarasikan
variabel x dan y sebagai tipe data boolean.
Var
x, y
: Boolean;
Variabel x dan y dapat
diberikan nilai dengan menggunakan pernyataan penugasan (assignment).
Contoh :
x := True;
y := False;
Variabel dengan tipe
boolean tidak dapat memasukkan nilai dengan menggunakan Readln. Tetapi bisa dideklarasikan
dengan konstantaboolean.
Contoh :
Const
Jawab = True;
sehingga
Writeln(x); (hasil :
True)
Writeln(y,Jawab); (hasil :
FalseTrue)
Pascal mendukung operasi
logika yang dapat dilaksanakan pada nilai boolean. Operasi logika tersebut
adalah NOT, AND, OR dan XOR.
Contoh :
X dan Z mempunyai nilai True dan Y mempunyai nilai False.
True
-
Tipe Char
Tipe char digunakan untuk
mendefinisikan tipe data yang nilainya merupakan himpunan karakter yang dikenal
komputer yaitu yang dinyatakan dalam kode ASCII. Dalam penulisannya, tipe char
ditulis di antara tanda petik, misalnya : ’A’, ’B’, ’a’, ’b’, ’.’, ’3’, ’4’
Contoh pendeklarasian
variabel bertipe char :
Var
X : char;
menyimpan nilai dengan
pernyataan penugasan :
X
:= ’A’;
atau diinput dengan
pernyataan :
Readln(X);
Dalam Pascal terdapat empat
fungsi yang dapat digunakan untuk memanipulasi data bertipe char :
1. Fungsi Ordinal, Ord(kar) dengan kar adalah
data bertipe char. Nilai fungsi bertipe Integer. Contoh : nilai fungsi Ord(’A’)
adalah 65.
’A’ adalah data bertipe
char dengan nilai ordinalitas (urutan) 65 dalam kode ASCII.
2. Fungsi Karakter, Chr(I) dengan I bilangan
bulat positif. Fungsi ini kebalikan fungsi Ord(kar).Contoh : nilai fungsi
Chr(65) adalah ’A’.
3. Fungsi Predesesor, Pred(kar) dengan kar
adalah data bertipe char. Nilai Pred(kar) adalah karakter yang dalam urutannya
mendahului kar. Contoh : Pred(’B’) adalah ’A’.
Nilai yang urutannya paling
awal, tidak mempunyai nilai pendahulunya (predesesor).
4. Fungsi suksesor, Succ(kar) dengan kar
adalah data bertipe Char. Nilai Succ(kar) adalah karakter yang dalam urutannya
terletak sesudah kar.
Contoh :
Succ(’B’) adalah ’C’
Nilai yang urutannya paling
akhir, tidak mempunyai nilai yang mengikutinya (suksesor).
-
Tipe Terbilang (enumerated)
Disebut tipe terbilang
karena semua nilai disebut satu persatu. Bentuk umum deklarasinya :
Type
Pengenal = <tipe>;
Contoh1 :
Type
Toko = (Baru, Ramai, Sukses, Maju)
Var
NamaToko : Toko;
Variabel NamaToko
dapat mewakili salah satu dari pilihan pada tipe data toko.
Cara Penulisan Tipe Terbilang
:
- Dalam tipe terbilang semua data harus
diletakkan di antara tanda kurung.
- Dengan menggunakan deklarasi di atas, bisa
dilihat bahwa :
Pred(Ramai) adalah Baru.
Succ(Ramai) adalah Sukses.
-
Tipe Subjangkauan (Subrange)
Subjangkauan dapat
dibentuk dengan mengambil sebagian dari sembarang tipe ordinal. Penulisan
deklarasi disingkat dengan menulis nilai pertama dari jangkauan, disela dua
titik kemudian nilai akhir dari jangkauan tersebut.
Tipe data oridinal
adalah Byte, Boolean, Char, Integer dan Tipe Data Terbilang.
Bentuk umum
deklarasinya :
Type
Pengenal =
Konstanta1 . . Konstanta2;
dengan :
Pengenal : Nama Tipe Data yang dideklarasikan.
Konstanta1 : Nilai pertama atau batas awal dari jangkauan.
Konstanta2 : Nilai terakhir atau batas akhir dari
jangkauan.
Contoh1 :
Subjangkauan pada Integer dari 1 sampai 100 ditulis.
Type
Nilai = 0 .
. 100;
Contoh2 : Variabel
dari program yang akan mengambil hanya nilai ’A’, ’B’, ’C’, ’D’, ’E’ atau ’F’.
Var
X : ’A’
. . ’F’;
Tipe dasar variabel
X adalah Char.
Contoh3 : Tipe Dasar untuk variabel T adalah Integer,
yang berarti variabel ini kompatibel/sesuai atau dapat dipakai dengan operasi
Integer.
Type
T = 1 .
. 5;
Var
Y, Z : T ;
Subjangkauan dari
tipe data terbilang juga dapat ditulis.
Contoh :
Type
Bulan = (Jan, Feb, Mar, Apr, Mei, Jun, Jul, Agu,
Sep, Okt, Nov, Des);
BulanPanas = Jun . . Agu;
Var
X
:= Bulan;
Y
:= BulanPanas;
Pada bagian program
di atas, variabel X bertipe Bulan yaitu tipe terbilang, variabel Y bertipe BulanPanas
yaitu tipe Subjangkauan. Ini berarti X dan Y
kompatibel, sejak X dan Y mempunyai tipe dasar sama, tetapi Y hanya mengambil
bagian nilai Jun, Jul dan Agu.
b.
Tipe Real
Konstanta bertipe real adalah bilangan
yang berisi titik desimal atau bilangan nyata. Dalam Pascal paling sedikit
harus ada satu digit sebelum dan sesudah titik desimal, tidak boleh ada koma (pembatas desimal adalah
tanda titik bukan tanda koma) dan nilainya dapat positif atau negatif.
Contoh :
Konstanta Real yang Benar :
1234.0
-1234.0
+1234.0
12.34
0.1234
-0.01234
Konstanta Real yang Tidak Benar :
.1234 (tidak
didahului digit) yang benar
0.1234
12,34.0 (dengan koma) yang benar 1234.0
1234 (tidak ada titik desimal) yang benar 1234.0
1234. (tidak ada titik desimal) yang benar 1234.0
Alternatif lain untuk mewakili data real
didasarkan pada notasi scientific. Perhatikan bilangan 1200 yang dalam notasi
scientific disingkat sebagai :
1.2 * 10 3
Dalam Pascal bilangan tersebut dapat
ditulis sebagai 1.2E3 atau sebagai 0.12E4, 12.0E2, 120.0E1 atau 1200.0E0 yang
semuanya sama dengan 1200.
Operator yang dapat dioperasikan pada data
tipe real adalah :
Operator
|
Kegunaan
|
+
-
*
/
|
Penjumlahan
Pengurangan
Perkalian
Pembagian
|
Contoh :
29.0/5.0 =
5.8
25/5 = 5.0
29/5 = 5.8
2. Tipe Data Terstruktur
Pada tipe
data terstruktur, setiap variabel/perubahnya bisa menyimpan lebih dari sebuah
nilai data.
a.
Tipe String
Konstanta string didefinisikan meggunakan
tanda kutip (quote) tunggal diikuti dengan rangkaian karakter kemudian diikuti
lagi tanda kutip tunggal (rangkaian karakter diantara tanda kutip tunggal).
Panjang maksimum konstanta string(atau variabel) adalah 255 karakter dan
panjang minimum adalah zero (0). String yang tidak mengandung karakter disebut
string NULL dan mempunyai panjang zero (0). Tipe string yang tidak dinyatakan
panjang karakternya dianggap mempunyai 255 karakter. Dan jika ingin menempatkan
tanda kutip tunggal di tengah konstanta string, gunakan dua tanda kutip tunggal
berdampingan. Sistem secara automatis akan mengganti dua tanda kutip tunggal
dengan satu tanda kutip tunggal.
Contoh penggunaan tipe string yang benar :
’Masukkan Nama’ (panjang = 13)
’John’’s’ (panjang = 7)
’’ (panjang
= 0, string Null)
Var NIM : STRING[14];
atau
Var NIM : STRING;
Contoh penggunaan tipe string yang tidak benar :
’Masukkan Nama (tanda kutip pada akhir string)
’John’’s’ (gunakan 2(dua)
tanda kutip untuk menyisipkan tanda kutip ke dalam string)
Macam-macam Operasi pada Tipe Data String
NIM pada STMIK Banjarbaru merupakan sebuah
contoh tipe data string yang nilai datanya merupakan kode-kode yang dapat
dijabarkan.
Misalnya NIM = 310113011234.
Nilai data yang bisa dijabarkan menjadi :
a. 4 (empat) karakter pertama menunjukkan
Sekolah Tinggi.
b. Karakter ke 5 dan 6 menunjukkan tahun
masuk kuliah.
c. Karakter ke 7 dan 8 menunjukkan program
studi yang diambil dan
d. 4 (empat) karakter terakhir menunjukkan
nomor urut mahasiswa.
Penjabaran kode tersebut di atas lebih
sulit dilakukan jika menggunakan tipe data numerik.
Bagian dari pemenggalan string disebut Substring. Seperti pada contoh di atas,
Tahun Masuk Kuliah Mahasiswa (karakter ke 5 dan 6) merupakan substring dari
NIM.
Operasi-operasi pada tipe data string
adalah :
1. Pemenggalan
Dilakukan untuk mengambil
bagian (Substring) dari suatu string.
Bentuk Umumnya : SUBSTRING(STRING,POSISI,BANYAK)
Posisi : Letak posisi
karakter awal dimulainya pemenggalan.
Banyak : Banyaknya karakter
yang diambil.
Contoh : NIM
= ’310113011234’
THM = SUBSTRING(NIM,5,2)
Nilai data THM = ’13’
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
||
NIM
|
3
|
1
|
0
|
1
|
3
|
0
|
1
|
1
|
2
|
3
|
4
|
THM
2. Penggabungan (Concatenation)
Merupakan operasi yang
menggabungkan 2(dua) buah string atau lebih. Penggabungan juga dapat dilakukan
terhadap dirinya sendiri.
Bentuk Umumnya : STRING//STRING//...
Contoh : A = ’STMIK’
B = ’BANJARBARU’
C = A//B
D = B//B
Hasilnya adalah : C = ’STMIKBANJARBARU’
D = ’BANJARBARUBANJARBARU’
D =
’BANJARBARUBANJARBARU’
S
|
T
|
M
|
I
|
K
|
B=
|
B
|
A
|
N
|
J
|
A
|
R
|
B
|
A
|
R
|
U
|
A =
S
|
T
|
M
|
I
|
K
|
B
|
A
|
N
|
J
|
A
|
R
|
B
|
A
|
R
|
U
|
A//B =
3. Pencarian Posisi
Dimaksudkan untuk mendapatkan
posisi awal (karakter yang keberapa) suatu substring pada string yang diproses.
Bentuk Umumnya :
INDEX (STRING,SUBSTRING)
Contoh : A = ’STMIK
BANJARBARU’
B = ’ANJAR’
C = INDEX(A,’JARBA’)
D = INDEX(A,B)
E = D+5
Hasilnya adalah : C = 10
D = 8
E =
13
4. Penghitungan Banyak Karakter (Panjang
String)
Banyaknya karakter yanga ada
pada suatu string (disebut juga dengan panjang string) dapat dihitung melalui
sebuah operasi.
Bentuk Umumnya : LENGTH(STRING)
Contoh : A = ’STMIK BANJARBARU’
B = ’SISTEM INFORMASI’
D = LENGTH(B)+C
Hasilnya adalah : C = 16
D
= 32
b.
Tipe Larik (Array)
Tipe data larik atau array adalah tipe data terstruktur yang
mempunyai elemen/komponen atau datanya dalam jumlah yang tetap atau statis
sesuai dengan deklarasi awal dan setiap elemen atau komponen mempunyai tipe
data yang sama dan tersusun dalam bentuk barisan linier berurutan (sequence).
Semua elemen atau komponen array diidentifikasi dengan sebuah nama array.
Posisi masing-masing elemen atau komponen dalam larik/array dinyatakan sebagai
nomor indek.Larik atau Array
merupakan himpunan terurut dan indek merupakan posisi urutan komponen.
Bentuk Umum :
Type
Pengenal
= Array [range_indek] of <tipe_data>;
atau
Var
Pengenal
: Array [range_indek] of <tipe_data>;
Keterangan :
Pengenal = Nama variabel array yang dipakai untuk
mengindentifikasi array.
Range_indek = Batasan indek untuk menentukan jumlah elemen atau komponen array
yang jumlahnya tidak akan berubah (statis)
Tipe_data = tipe data elemen atau komponen array.
Contoh penggunaan tipe data
larik/array :
1.
Untuk menampung angka-angka
yang merupakan nilai mata kuliah dari 10 mahasiswa yang diberi label 1,2,…,10
maka dapat dibuat deklarasi sebagai berikut :
Var
Nilai :
Array [1..10] of Integer;
Nilai adalah array dengan 10 elemen, setiap elemennya
adalah bilangan bulat dan diidentifikasi dengan index 1,2,..,10.
2.
Untuk memberikan keterangan
gambar berupa teks atau kalimat dari 1 roll film isi 34 (dengan bonus 2 di
depan dan 2 di belakang) maka dapat dideklarasikan array berikut :
Var
……………………………………;
Total
isi 1 roll film beserta dengan bonusnya adalah 38 gambar.
3. Untuk keterangan ada tidaknya persediaan
cat 'DULUX' sesuai dengan warnanya di sebuah toko dapat menggunakan tipe data
enumerated buatan user dengan deklarasi :
Type
Warna = ('Merah','Hijau','Kuning','Biru','Ungu');
Var
Stok_dulux :
Array [Warna] of Boolean;
c.
Tipe Data Rekaman (Record)
Seperti pada larik, tipe data rekaman atau record adalah kumpulan
data. Perbedaan antara larik dengan rekaman adalah bahwa dalam larik, semua
elemennya harus bertipe sama, tetapi dalam rekaman setiap elemen dapat
mempunyai tipe data yang berbeda satu sama lainnya.
Bentuk Umum :
Type
Pengenal = Record
Medan1 : Tipe1;
Medan2 : Tipe2;
:
MedanN : TipeN;
End;
Keterangan :
Pengenal = Pengenal yang menunjukkan tipe
data yang akan dideklarasikan.
Medan1,Medan2,..,MedanN = Nama medan yang akan digunakan.
Tipe1,Tipe2,..,TipeN = Sembarang tipe data yang telah
dideklarasikan sebelumnya.
Contoh penggunaan tipe data
larik/array :
1. Type
Tgl_kalender =
Record
Tanggal : 1..31;
Bulan : 1..12;
Tahun : 1900..2000
End;
2.
Type
Siswa = Record
Nama : String[25];
Alamat : String[35];
Kelamin : (L,P);
Kelas : 1..3
End;
d.
Tipe Data Himpunan (Set)
Tipe data himpunan atau set merupakan suatu kumpulan obyek yang
mempunyai tipe data yang sama dan urutan penulisannya tidak diperhatikan dan
setiap obyek di dalam suatu himpunan disebut dengan anggota atau elemen
himpunan.
Set dalam pemrograman sangat mirip dengan himpunan dalam ilmu matematika.
Contoh : A = {1,2,3,4,5}
Pada Pascal , anggota himpunan diletakkan didalam kurung siku [ ].
Bentuk Umum :
Type
Pengenal
= Set of <tipe_data>;
atau
Var
Pengenal
: Set of <tipe_data>;
Keterangan :
Pengenal = Nama variabel yang akan dinyatakan sebagai
tipe himpunan.
Tipe_data = tipe data dari anggota himpunan harus bertipe
ordinal.
Sebuah himpunan dapat juga didefinisikan sebagai grup
dari item-item yang bertipe khusus. Contoh kita dapat menyatakan himpunan dari
mobil, himpunan dari integer atau himpunan dari karakter.
Contoh himpunan dari 10 integer atau bilangan bulat
pertama dinotasikan sebagai : [1,2,3,4,5,6,7,8,9,10]
atau
dengan menggunakan notasi subrange (subjangkauan) sebagai : [1..10].
Cara yang sama menspesikasi himpunan yang mengandung bilangan
integer 1 sampai 10.
[1..5,6..10] atau [1,2,3..8,9,10] atau
[ 1..9,10]
Contoh himpunan karakter huruf kecil yang vokal
dinotasikan sebagai : ['a','e','i','o','u']
Contoh penggunaan tipe data himpunan/set :
Type
NamaHari =
['Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu'];
Huruf = Set of 'A'..'Z';
SetHari = Set of Hari
SetHuruf = Set of Huruf
Ada beberapa operasi terhadap tipe
data himpunan seperti :
·
Operasi Biner yang terdiri atas
3 macam, yaitu :
1.
Interseksi (Set Intersection)
dengan operator *
Himpunan Interseksi didefinisikan sebagai elemen-elemen pada
himpunan yang berada bersamaan pada dua himpunan
Contoh : [1,2,3,4] * [2,4,6]
adalah [2,4]
Sebab 2 elemen tersebut dikandung di dalam kedua himpunan tersebut
yaitu 2 dan 4.
Jika tidak ada elemen-elemen yang berada bersamaan di antara 2
himpunan maka interseksinya menghasilkan Himpunan Kosong / [ ]
Contoh : ['a'..'z'] * ['A'..'Z']
= [ ]
Sebab tidak ada karakter yang bersamaan pada kedua himpunan
tersebut.
2.
Union (Set Union) dengan
operator +
Himpunan Union didefinisikan sebagai elemen-elemen pada himpunan
yang dikandung di dalam salah satu dari kedua himpunan yang mewakili
elemen-elemen pada himpunan yang dikandung di dalam satu atau salah satunya
atau kedua himpunan.
Contoh : [1,2,3,4] + [2,4,6]
= [1,2,3,4,6]
3.
Selisih (Set Difference) dengan
operator -
Himpunan Selisih didefinisikan sebagai elemen-elemen dalam himpunan
pertama yang tidak dikandung di dalam himpunan yang kedua.
Contoh : [1,2,3,4] - [2,4,6]
= [1,3]
Sebab setelah menghapus elemen-elemen yang berada bersamaan pada
pada 2 himpunan, elemen 1 dan 3 masih berada pada himpunan yang sebelah kiri.
Contoh deklarasinya :
Type
NamaHari =
['Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu'];
HimpunanHari : Set of
NamaHari;
Var
Sepekan,HariKerja,AkhirMinggu
: HimpunanHari;
Perhatikan segmen program berikut :
HariKerja :=
['Senin','Selasa','Rabu','Kamis','Jumat'];
AkhirMinggu :=
['Sabtu','Minggu'];
Sepekan := HariKerja + AkhirMinggu;
Hasilnya Sepekan adalah
:
['Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu'];
Contoh lain :
Sepekan := HariKerja * AkhirMinggu;
Menghasilkan isi Sepekan kosong
Sepekan := HariKerja
['Jumat','Sabtu','Minggu'];
Nilai Sepekan
menjadi [''Senin','Selasa','Rabu','Kamis'];
·
Operator hubungan (Relation)
Operator
|
Digunakan untuk
|
=
<>
>=
<=
In
|
Tes untuk kesamaan dua himpunan
Tes untuk ketidaksamaan dua himpunan
Tes apakah semua anggota dari himpunan kedua terdapat didalam
himpunan pertama
Tes apakah semua anggota dari himpunan pertama terdapat didalam
himpunan kedua
Tes keanggotaan suatu himpunan kedua terdapat didalam himpunan
pertama
|
Contoh operator in yang berarti termasuk sebagai
anggota
'a' in ['a','e','i','o','u']
adalah TRUE (Benar)
Contoh :
If karakter in ['a','e','i','o','u']
then
Writeln ('Vokal')
Else
Writeln ('Konsonan');
Cara yang sama atau equivalen:
If
(karakter='a') or (karakter='e') or (karakter='i') or (karakter='o') or (karakter='u') then
Writeln ('Vokal')
Else
Writeln ('Konsonan');
Contoh penggunaan operator hubungan yang lain :
[1,2,3] = [2,1,3] adalah bernilai TRUE,
sedangkan kondisi [1,2,3] = [1,2] bernilai FALSE.
Sebab kedua himpunan tidak mengandung elemen-elemen yang sama
persis.
Kondisi [1,2,3] <> [1,2] bernilai TRUE.
Himpunan A dikatakan merupakan himpunan bagian dari himpunan B, jika
semua elemen pada A juga elemen dari B.
Contoh :
[1,2] merupakan
himpunan bagian dari himpunan [1,2,3]
[1,2,4] < = [1,2,3,4] bernilai TRUE, tetapi
[1,2,4] < = [1,2,3] bernilai
FALSE, sebab himpunan pertama mengandung elemen yang tidak terdapat di dalam
himpunan kedua.
Hubungan : ['A'..'Z'] >=
['A','E','I','O','U'] bernilai TRUE.
3. Tipe Data Pointer
Pada pembahasan tipe-tipe data sebelumnya, untuk
mendeklarasikan suatu variabel maka sifat variabel tersebut adalah variabel
statis.Sedangkan variabel yang bersifat
dinamis disebut Pointer. Variabel pointer mengandung alamat dari data dalam
memori.Pointer digunakan bersamaan dengan dynamic memory allocation atau data
alokasi dinamik yang berarti selama eksekusi, programnya dapat membuat dan
menghapus item data yang diperlukan.
Pointer merupakan suatu variabel yang menyimpan alamat
suatu obyek atau variabel lain berupa data tunggal atau sebuah record/node.
Karenanya, bisa dikatakan bahwa pointer sebenarnya bukan berisi data melainkan
berisi alamat dari suatu data.
Perhatikan ilustrasi berikut :
|
|
|
|
|||||
|
||||
R adalah pointer yang menunjukkan record Dwi, V adalah pointer ke
record Dita. Pointer juga bersifat fleksibel, misalnya dua pointer dapat
menunjuk pada record yang sama, seperti T dan U yang menunjuk ke record Dedi.
Namun pointer juga dapat tidak menunjuk ke suatu record apapun (nil) seperti
pointer S. Dari sifat pointer yang fleksibel,
maka harus berhati-hati dalam memindahkan arah pointer agar jangan sampai ada
record yang hilang. Record Diah merupakan record yang hilang sebab tidak ada
pointer yang menunjuk kepadanya.
Bentuk Umum :
Type
Pengenal = ^simpul;
simpul = Tipe_data;
Keterangan :
Pengenal : Nama pengenal yang
menyatakan data pointer
Simpul : Nama simpul
Tipe_data : Tipe data simpul
yang digunakan
Tanda ^ didepan nama
simpul harus ditulis seperti apa adanya dan menunjukkan bahwa pengenal adalah
suatu tipe data pointer. Tipe data simpul yang dinyatakan dalam tipe bisa
berupa sembarang tipe data, misalnya char, integer atau real.
Contoh : Dua item data real yang dihubungkan dengan var A dan B,
dideklarasikan dengan pointer ke data real.
New(A);
New(B);
Isi
memori tersebut dapat digambar sebagai berikut :
|
|
|
|
Program
kemudian menyerahkan nilai kedua item data tersebut dalam sembarang cara dengan
menggunakan referensi A^ dan B^. Kemudian nilai 2 diberikan ke item yang
ditunjuk dengan A dan menambahkan 1 ke nilai tersebut dan menyimpan hasilnya ke
dalam item data yang ditunjukkan ke B.
A^ := 2.0;
B^ := A^ + 1.0;
Isi memori dapat digambarkan
sebagai berikut :
|
|
B
Contoh :
Diasumsikan bahwa A dan B menunjuk ke item data, seperti ditunjuk contoh
sebelumnya.
Perhatikan
pernyataan berikut : B := A;
Akan menyebabkan A dan B menunjuk ke item
data yang sama seperti ditunjukkan gambar berikut :
|
B
Isi dari B (yang berupa alamat)
yang telah diganti dengan nilai (yang berupa alamat) yang dikandung dalam A.
Item data yang sebelumnya ditunjuk dengan B masih ada, tetapi tidak ada cara
untuk mengakses isi tersebut.
Tugas
- New (NamaA);
New (NamaB);
NamaA^ := ‘Dani’;
NamaB^ := ‘Ani’;
NamaC^ := NamaA;
- New (NamaA);
NamaA^ := ‘Dani’;
New (NamaC);
NamaC^ := ‘Budi’;
NamaA := NamaC;
NamaB := NamaC;
- New (NamaA);
NamaA^ := ‘Dani’;
NamaB := NamaA;
New (NamaA);
NamaA^ := ‘Hadi’;
- Jelaskan mengapa segmen statement berikut ini adalah salah :
- NamaA := ‘Dini’; c. NamaB := NamaA^;
- Writeln(NamaA); d. Readln (NamaB);

0 komentar:
Posting Komentar