SlideShare a Scribd company logo
1 of 15
Struktur Data
STMIK Banjarbaru
3
Bab II. TIPE DATA ABSTRAK (TDA)
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
Struktur Data
STMIK Banjarbaru
4
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
Struktur Data
STMIK Banjarbaru
5
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 konstanta boolean.
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.
X and Y or Z
Struktur Data
STMIK Banjarbaru
6
True and False
False or True
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>;
Struktur Data
STMIK Banjarbaru
7
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
Struktur Data
STMIK Banjarbaru
8
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
Struktur Data
STMIK Banjarbaru
9
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 = 310113021234.
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
Struktur Data
STMIK Banjarbaru
10
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 = ’310113021234’
THM = SUBSTRING(NIM,5,2)
Nilai data THM = ’13’
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’
A =
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.
1 2 3 4 5 6 7 8 9 10 11 12
NIM 3 1 0 1 1 3 0 2 1 2 3 4
S T M I K B = B A N J A R B A R U
S T M I K B A N J A R B A R U
Posisi
Struktur Data
STMIK Banjarbaru
11
Bentuk Umumnya : LENGTH(STRING)
Contoh : A = ’STMIK BANJARBARU’
B = ’SISTEM INFORMASI’
C = LENGTH(A)
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.
Struktur Data
STMIK Banjarbaru
12
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)
Struktur Data
STMIK Banjarbaru
13
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.
Struktur Data
STMIK Banjarbaru
14
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
Struktur Data
STMIK Banjarbaru
15
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.
Struktur Data
STMIK Banjarbaru
16
Perhatikan ilustrasi berikut :
R
S
T
U
V
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 :
A
B
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;
Dwi
Diah
Dedi
Ditanil
Struktur Data
STMIK Banjarbaru
17
Isi memori dapat digambarkan sebagai berikut :
A
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 :
A
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
1. New (NamaA);
New (NamaB);
NamaA^ := ‘Dani’;
NamaB^ := ‘Ani’;
NamaC^ := NamaA;
2. New (NamaA);
NamaA^ := ‘Dani’;
New (NamaC);
NamaC^ := ‘Budi’;
NamaA := NamaC;
NamaB := NamaC;
3. New (NamaA);
NamaA^ := ‘Dani’;
NamaB := NamaA;
New (NamaA);
NamaA^ := ‘Hadi’;
4. Jelaskan mengapa segmen statement berikut ini adalah salah :
a. NamaA := ‘Dini’; c. NamaB := NamaA^;
b. Writeln(NamaA); d. Readln (NamaB);
2.0
3.0
2.0
3.0

More Related Content

What's hot

What's hot (19)

04 type of data
04 type of data04 type of data
04 type of data
 
Iii Representasi Pengetahuan
Iii   Representasi PengetahuanIii   Representasi Pengetahuan
Iii Representasi Pengetahuan
 
Tipe Data pada Bahasa Java
Tipe Data pada Bahasa JavaTipe Data pada Bahasa Java
Tipe Data pada Bahasa Java
 
Representasi pengetahuan
Representasi pengetahuanRepresentasi pengetahuan
Representasi pengetahuan
 
Representasi Pengetahuan
Representasi PengetahuanRepresentasi Pengetahuan
Representasi Pengetahuan
 
Tipe data dan variabel
Tipe data dan variabelTipe data dan variabel
Tipe data dan variabel
 
Makalah array
Makalah arrayMakalah array
Makalah array
 
Array
ArrayArray
Array
 
Konsep Oop
Konsep OopKonsep Oop
Konsep Oop
 
Representasi pengetahuan
Representasi pengetahuanRepresentasi pengetahuan
Representasi pengetahuan
 
Makalah array
Makalah arrayMakalah array
Makalah array
 
Materi 7. array
Materi 7. arrayMateri 7. array
Materi 7. array
 
Part 8 pengertian variabel dan cara penulisan variabel pascal
Part 8 pengertian variabel dan cara penulisan variabel pascalPart 8 pengertian variabel dan cara penulisan variabel pascal
Part 8 pengertian variabel dan cara penulisan variabel pascal
 
Pertemuan 5 dan 6 representasi pengetahuan
Pertemuan 5 dan 6 representasi pengetahuan Pertemuan 5 dan 6 representasi pengetahuan
Pertemuan 5 dan 6 representasi pengetahuan
 
ppt Tipe data,variabel, operator
ppt Tipe data,variabel, operatorppt Tipe data,variabel, operator
ppt Tipe data,variabel, operator
 
BAB IV Analisis TB
BAB IV Analisis TBBAB IV Analisis TB
BAB IV Analisis TB
 
Tipe data abstract
Tipe data abstractTipe data abstract
Tipe data abstract
 
Pengenalan pascal
Pengenalan pascalPengenalan pascal
Pengenalan pascal
 
Bab 2. array
Bab 2. arrayBab 2. array
Bab 2. array
 

Similar to Bab ii tipe data abstrak

Pengenalan pascal asli
Pengenalan pascal asliPengenalan pascal asli
Pengenalan pascal asli
Nadya Olivia
 
Paskalis Jabar-TI-3A-TUGAS02-2015020045.pptx
Paskalis Jabar-TI-3A-TUGAS02-2015020045.pptxPaskalis Jabar-TI-3A-TUGAS02-2015020045.pptx
Paskalis Jabar-TI-3A-TUGAS02-2015020045.pptx
sampesireron
 
Struktur Level Data
Struktur Level DataStruktur Level Data
Struktur Level Data
Dimara Hakim
 
Tipe data,var,konstanta
Tipe data,var,konstantaTipe data,var,konstanta
Tipe data,var,konstanta
Alvin Setiawan
 
asjaskjk eakejakj hasjahsjah shajshajsh sajsha j
asjaskjk eakejakj hasjahsjah shajshajsh  sajsha jasjaskjk eakejakj hasjahsjah shajshajsh  sajsha j
asjaskjk eakejakj hasjahsjah shajshajsh sajsha j
ssuser8b0e201
 

Similar to Bab ii tipe data abstrak (20)

Pengenalan pascal asli
Pengenalan pascal asliPengenalan pascal asli
Pengenalan pascal asli
 
Paskalis Jabar-TI-3A-TUGAS02-2015020045.pptx
Paskalis Jabar-TI-3A-TUGAS02-2015020045.pptxPaskalis Jabar-TI-3A-TUGAS02-2015020045.pptx
Paskalis Jabar-TI-3A-TUGAS02-2015020045.pptx
 
Materi Algoritma dan Pemograman oca.pptx
Materi Algoritma dan Pemograman oca.pptxMateri Algoritma dan Pemograman oca.pptx
Materi Algoritma dan Pemograman oca.pptx
 
Materi Algoritma dan Pemograman oca.pptx
Materi Algoritma dan Pemograman oca.pptxMateri Algoritma dan Pemograman oca.pptx
Materi Algoritma dan Pemograman oca.pptx
 
Pertemuan II Algoritma & Struktur Data.pptx
Pertemuan II Algoritma & Struktur Data.pptxPertemuan II Algoritma & Struktur Data.pptx
Pertemuan II Algoritma & Struktur Data.pptx
 
Pengantar Struktur Data dan Tipe-tipe Data (Pertemuan 2 dan 3)
Pengantar Struktur Data dan Tipe-tipe Data (Pertemuan 2 dan 3)Pengantar Struktur Data dan Tipe-tipe Data (Pertemuan 2 dan 3)
Pengantar Struktur Data dan Tipe-tipe Data (Pertemuan 2 dan 3)
 
Algo temu 2 instruksi fundamental
Algo temu 2 instruksi fundamentalAlgo temu 2 instruksi fundamental
Algo temu 2 instruksi fundamental
 
Kontrak Perkuliahan
Kontrak PerkuliahanKontrak Perkuliahan
Kontrak Perkuliahan
 
Struktur Level Data
Struktur Level DataStruktur Level Data
Struktur Level Data
 
Ch 02 variabel
Ch 02   variabelCh 02   variabel
Ch 02 variabel
 
Tipe data,var,konstanta
Tipe data,var,konstantaTipe data,var,konstanta
Tipe data,var,konstanta
 
BAB II ISI MAKALAH REPRESENTASI DATA
BAB II ISI MAKALAH REPRESENTASI DATABAB II ISI MAKALAH REPRESENTASI DATA
BAB II ISI MAKALAH REPRESENTASI DATA
 
asjaskjk eakejakj hasjahsjah shajshajsh sajsha j
asjaskjk eakejakj hasjahsjah shajshajsh  sajsha jasjaskjk eakejakj hasjahsjah shajshajsh  sajsha j
asjaskjk eakejakj hasjahsjah shajshajsh sajsha j
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
bab3_alpro1.pptx
bab3_alpro1.pptxbab3_alpro1.pptx
bab3_alpro1.pptx
 
04. DATA dan VARIABEL Visual Basic Versi 6
04. DATA dan VARIABEL Visual Basic Versi 604. DATA dan VARIABEL Visual Basic Versi 6
04. DATA dan VARIABEL Visual Basic Versi 6
 
Algoritma 1 pertemuan 2
Algoritma 1 pertemuan 2Algoritma 1 pertemuan 2
Algoritma 1 pertemuan 2
 
Elemen Dasar C++
Elemen Dasar C++Elemen Dasar C++
Elemen Dasar C++
 
03 type data
03 type data03 type data
03 type data
 
3 konsep algoritma
3 konsep algoritma3 konsep algoritma
3 konsep algoritma
 

Recently uploaded

,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
furqanridha
 
konsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatankonsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatan
SuzanDwiPutra
 
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
ErikaPutriJayantini
 
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptxAKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
cupulin
 

Recently uploaded (20)

,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
,,,,,,,,,,,,,,,,,,,,,,Swamedikasi 3.pptx
 
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdf
 
SISTEM SARAF OTONOM_.SISTEM SARAF OTONOM
SISTEM SARAF OTONOM_.SISTEM SARAF OTONOMSISTEM SARAF OTONOM_.SISTEM SARAF OTONOM
SISTEM SARAF OTONOM_.SISTEM SARAF OTONOM
 
konsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatankonsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatan
 
MODUL AJAR MATEMATIKA KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR MATEMATIKA KELAS 5 KURIKULUM MERDEKA.pdfMODUL AJAR MATEMATIKA KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR MATEMATIKA KELAS 5 KURIKULUM MERDEKA.pdf
 
Materi Asuransi Kesehatan di Indonesia ppt
Materi Asuransi Kesehatan di Indonesia pptMateri Asuransi Kesehatan di Indonesia ppt
Materi Asuransi Kesehatan di Indonesia ppt
 
Informatika Latihan Soal Kelas Tujuh.pptx
Informatika Latihan Soal Kelas Tujuh.pptxInformatika Latihan Soal Kelas Tujuh.pptx
Informatika Latihan Soal Kelas Tujuh.pptx
 
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
 
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
443016507-Sediaan-obat-PHYCOPHYTA-MYOPHYTA-dan-MYCOPHYTA-pptx.pptx
 
MODUL AJAR IPAS KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 5 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 5 KURIKULUM MERDEKA.pdf
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
 
PPT kerajaan islam Maluku Utara PPT sejarah kelas XI
PPT kerajaan islam Maluku Utara PPT sejarah kelas XIPPT kerajaan islam Maluku Utara PPT sejarah kelas XI
PPT kerajaan islam Maluku Utara PPT sejarah kelas XI
 
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan BerkelanjutanTopik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
 
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptx
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptxPPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptx
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptx
 
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptxAKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
 
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMAS
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMASBAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMAS
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMAS
 
Aksi Nyata profil pelajar pancasila.pptx
Aksi Nyata profil pelajar pancasila.pptxAksi Nyata profil pelajar pancasila.pptx
Aksi Nyata profil pelajar pancasila.pptx
 
Kegiatan Komunitas Belajar dalam sekolah .pptx
Kegiatan Komunitas Belajar dalam sekolah .pptxKegiatan Komunitas Belajar dalam sekolah .pptx
Kegiatan Komunitas Belajar dalam sekolah .pptx
 
Skenario Lokakarya 2 Pendidikan Guru Penggerak
Skenario Lokakarya 2 Pendidikan Guru PenggerakSkenario Lokakarya 2 Pendidikan Guru Penggerak
Skenario Lokakarya 2 Pendidikan Guru Penggerak
 
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi TrigonometriSudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
 

Bab ii tipe data abstrak

  • 1. Struktur Data STMIK Banjarbaru 3 Bab II. TIPE DATA ABSTRAK (TDA) 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
  • 2. Struktur Data STMIK Banjarbaru 4 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
  • 3. Struktur Data STMIK Banjarbaru 5 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 konstanta boolean. 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. X and Y or Z
  • 4. Struktur Data STMIK Banjarbaru 6 True and False False or True 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>;
  • 5. Struktur Data STMIK Banjarbaru 7 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
  • 6. Struktur Data STMIK Banjarbaru 8 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
  • 7. Struktur Data STMIK Banjarbaru 9 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 = 310113021234. 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
  • 8. Struktur Data STMIK Banjarbaru 10 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 = ’310113021234’ THM = SUBSTRING(NIM,5,2) Nilai data THM = ’13’ 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’ A = 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. 1 2 3 4 5 6 7 8 9 10 11 12 NIM 3 1 0 1 1 3 0 2 1 2 3 4 S T M I K B = B A N J A R B A R U S T M I K B A N J A R B A R U Posisi
  • 9. Struktur Data STMIK Banjarbaru 11 Bentuk Umumnya : LENGTH(STRING) Contoh : A = ’STMIK BANJARBARU’ B = ’SISTEM INFORMASI’ C = LENGTH(A) 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.
  • 10. Struktur Data STMIK Banjarbaru 12 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)
  • 11. Struktur Data STMIK Banjarbaru 13 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.
  • 12. Struktur Data STMIK Banjarbaru 14 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
  • 13. Struktur Data STMIK Banjarbaru 15 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.
  • 14. Struktur Data STMIK Banjarbaru 16 Perhatikan ilustrasi berikut : R S T U V 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 : A B 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; Dwi Diah Dedi Ditanil
  • 15. Struktur Data STMIK Banjarbaru 17 Isi memori dapat digambarkan sebagai berikut : A 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 : A 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 1. New (NamaA); New (NamaB); NamaA^ := ‘Dani’; NamaB^ := ‘Ani’; NamaC^ := NamaA; 2. New (NamaA); NamaA^ := ‘Dani’; New (NamaC); NamaC^ := ‘Budi’; NamaA := NamaC; NamaB := NamaC; 3. New (NamaA); NamaA^ := ‘Dani’; NamaB := NamaA; New (NamaA); NamaA^ := ‘Hadi’; 4. Jelaskan mengapa segmen statement berikut ini adalah salah : a. NamaA := ‘Dini’; c. NamaB := NamaA^; b. Writeln(NamaA); d. Readln (NamaB); 2.0 3.0 2.0 3.0