Struktur data adalah suatu koleksi atau kelompok data yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pengertian struktur data adalah elemen data (mulai dari byte) yang ditentukan tipe datanya, diorganisasi (dibentuk, disusun, atau dikelompokkan) dan akan diproses sesuai dengan tipe datanya. Pada definisinya, data dapat dikategorikan menjadi :
* Tipe data sederhana atau data sederhana, yang terdiri dari :
- Data sederhana tunggal, misalnya integer, real, Boolean, serta character.
- Data sederhana majemuk, misalnya string.
Tipe data ini dapat diorganisasikan menjadi berbagai struktur data dengan berbagai cara tertentu.
Struktur data, meliputi :
- Struktur data sederhana, misalnya array dan record.
- Struktur data majemuk, terdiri atas :
- Linear, misalnya stack, queue, dan linear linked list.
- Nonlinear, misalnya pohon binary (binary tree), pohon cari biner (binary search tree), pohon cari m-way (m-way search tree), general tree, serta graph.
Kedua kategori diatas terutama diperuntukkan untuk data pada storage utama. Data yang diperuntukan untuk storage tambahan, memiliki struktur data yang dikenal dengan organisasi file. Tipe organisasi file diantaranya adalah sebagai berikut :
Sequential
- Record disimpan dalam file secara beruntun berdasarkan waktu tiba dari pekerjaan yang diwakilinya, sehingga membentuk first-in-first-out (FIFO), struktur data seperti ini disebut antrean atau queue.
- Record yang masuk pertama akan memiliki indeks atau alamat yang lebih kecil daripada record yang masuk kemudian.
*Indexed Sequential
- Record disimpan secara berurutan.
- Record yang masuk terlebih dahulu disimpan pada tempat yang lebih kecil.
- Untuk melakukan pencarian pada organisasi ini perlu menggunakan pencarian terlebih dahulu.
- Dengan organisasi file ini lebih fleksibel karena ukuran file disesuaikan dengan banyaknya data yang ada pada setiap file.
* Relative
* Multikey
Dua buah struktur data sederhana adalah array atau larik dan record. Array merupakan struktur data yang terurut dan homogen, terdiri dari data item yang membentuk satu kesatuan yang tipe datanya sama. Sedangkan record merupakan struktur data yang terdiri atas serangkaian data item dengan tipe data yang berbeda.
Pemakaian struktur data yang tepat di dalam proses pemrograman, akan mengasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih sederhana.
* Suatu struktur data dicirikan dengan :
1. Jenis atau satuan data pembentuknya
2. Hubungan antara satuan tersebut.
Strukutur data terdiri dari satuan data sederhana yang cocok untuk program yang dipakainya. Hubungan antara satuan data tersebut membentuk salah satu cirri dari struktur yang bersangkutan. Jika sebuah struktur data sudah tersedia maka struktur data itu langsung dapat digunakan. Jika satuan data sederhana dapat membentuk sebuah struktur yang lebih efisien dalam penggunaan memori, maka struktur data tersebut dapat disatukan. Struktur tersebut tidak dapat langsung ditujukan kepada sebuah address, maka dari itu harus melalui proses pemrograman. Jika menggunakan penyajian secara sequential, maka komponen struktur data ditempatkan ke dalam relokasi memori secara berurutan
TIPE data
Tipe data yang dikenal dalam bahasa pascal antara lain :
· Tipe data sederhana / Jenis data yang standar (Dasar)
1. Integer
2. Real
3. Karakter
4. Boolean
· Tipe data non standar (user defined)
1. Enumerated
2. Sub-range
· Tipe data berstuktur
1. Array
2. Record
3. Set
4. File
· Jenis data Pointer
INTEGER
Jenis data ini merupakan nilai bilangan bulat, yang terdiri atas integer positif, integer negatif dan nol. Pada TURBO PASCAL jenis data ini di bagi atas beberapa bagian. (lihat tabel 1)
Tabel 1. Jenis data integer
Tipe | Ukuran memori (dalam byte) | Jangkauan nilai |
BYTE | 1 | 0..255 |
SHORTINT | 1 | -128..127 |
INTEGER | 2 | -32768..32767 |
WORD | 2 | 0..65535 |
LONGINT | 4 | -2147483648..2147483647 |
Operator Integer terdiri atas : + , - , * , DIV dan MOD
Var
Jumlah : byte;
Begin
Jumlah := 200;
WriteLn(‘Nilai JUMLAH = ‘,Jumlah);
End.
Hasilnya bila dijalankan :
Nilai JUMLAH = 200
REAL
Penulisan untuk jenis data ini selalu menggunakan titik desimal. Nilai konstanta numerik real berkisar dari 1E-38 sampai dengan 1E+38 dengan mantissa yang signifikan sampai dengan 11 digit. E menunjukkan nilai 10 pangkat. Nilai konstanta numerik real menempati memori sebesar 6 byte.
Contoh :
123.45
12345. ® salah, titik desimal tidak boleh dibelakang
12E5
12E+5
-12.34
.1234 ® salah, titik desimal tidak boleh dimuka
Pada TURBO PASCAL, jenis data ini dibedakan ( lihat tabel 2.)
Tabel 2. Jenis data Real
Tipe | Ukuran memori (dalam byte) | Jangkauan nilai | Digit signifikan |
SINGLE | 4 | 1.5x10E-45 .. 3.4x10E38 | 7-8 |
DOUBLE | 8 | 5.0x10E-324 .. 1.7x10E308 | 15-16 |
EXTENDED | 10 | 1.9x10E-4951 .. 1.1x10E4932 | 19-20 |
COMP | 8 | -2E+63+1 .. 2E+63-1 | 19-20 |
Operator untuk jenis data ini terdiri atas : + , - , * dan /
KARAKTER
Yang dimaksud dengan jenis data ini adalah karakter tunggal atau sebuah karakter yang ditulis diantara tanda petik tunggal, seperti misalnya ‘A’, ’a’, ’!’, ’5’ dsb.
Dasarnya adalah ASCII CHARACTER SET.
Misalnya : 032 pada tabel ASCII CHARACTER SET menunjukkan karakter.
Blank.
033 ! 048 0 076 L dst
STRING
Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menenpati memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.
Contoh :
Var
Kampus : string[10];
Begin
Kampus := ‘Gunadarma’;
Write(Kampus);
End.
BOOLEAN
Jenis data ini mempunyai nilai TRUE atau FALSE.
Operator untuk jenis data ini adalah :
1. Logical Operator, yaitu : NOT, AND dan OR
2. Relational Operator, yaitu : >, <, >=, <=, <> dan =
JENIS DATA NON-STANDARD (USER DEFINED)
ENUMERATED.
Jenis data ini terdiri atas barisan identifier yang terurut dimana setiap identifier tersebut dianggap sebagai suatu individual data item (elemen data yang berdiri sendiri).
Pada saat mendeklarasikan jenis data ini kita harus menuliskan semua elemen-elemennya.
Bentuk umum deklarasinya adalah :
TYPE nama = (data_item_1, data_item_2, ……., data_item_n);
Contoh :
TYPE hari = (sen,sel,rab,kam,jum,sab,ming);
TYPE warna = (red,blue,green,yellow,black,white);
Setelah jenis data ini dideklarasikan, maka selanjutnya kita dapat mendeklarasikan suatu variabel yang berjenis data sama dengan jenis data ini.
Misalnya :
TYPE nama_hari = (sen,sel,rab,kam,jum,sab,ming);
VAR libur : nama_hari;
Fungsi standar yang dapat digunakan pada jenis data ini adalah :
PRED, SUCC dan ORD
Misalnya :
PRED (sel) = sen
SUCC (sen) = sel
ORD (sen) = 0
ORD (sel) = 1
dsb
SUB-RANGE.
Jenis data ini berupa range dari suatu kumpulan data yang mempunyai urutan..
Bentuk umum deklarasinya adalah :
TYPE nama = data_item_pertama .. data_item_terakhir;
Contoh :
TYPE jam_kuliah = 1 .. 10;
tanggal = 1 .. 31;
abjad = ‘A’ .. ‘Z’;
TYPE bulan = (jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des);
hari = (sen,sel,rab,kam,jum,sab,ming);
ata = agt .. jan;
pta = feb .. jun;
hari_kerja = sen .. jum;
TANDA OPERASI
Tanda operasi (operator) di dalam bahasa Pascal dikelompokkan ke dalam 9 kategori,
1. Assignment operator.
2. Binary operator.
3. Unary operator.
4. Bitwise operator.
5. Relational operator.
6. Logical operator.
7. Address operator.
8. Set operator.
9. String operator.
Assignment operator
Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda sama dengan (:=).
Contoh :
A:=B;
Binary operator
Digunakan untuk mengoperasikan dua buah operand. Operand dapat berbentuk konstanta ataupun variabel. Operator ini digunakan untuk operasi aritmatika yang berhubungan dengan nilai tipe data integer dan real.
Operator | Operasi | Tipe operand | Tipe hasil |
* | Perkalian | real,real integer,integer real,integer | real integer real |
DIV | Pembagian bulat | integer,integer | integer |
/ | Pembagian real | real,real integer,integer real,integer | real real real |
MOD | Sisa pembagian | integer,integer | integer |
+ | Pertambahan | real,real integer,integer real,integer | real integer real |
- | pengurangan | real,real integer,integer real,real | real integer real |
Contoh :
15*5 hasilnya 75
20/3 hasilnya 6.6666666667E+00
20 div 3 hasilnya 6
20 mod 3 hasilnya 2
Unary operator
Operator ini hanya menggunakan sebuah operand saja. Dapat berupa unary minus dan unary plus. Unary minus digunakan untuk menunjukkan nilai negatif, baik pada operang numerik real maupun integer. Unaru plus adalah operator untuk memberai tanda plus.
Contoh :
-5 +7
-2.5 +2.5
Bitwise operator
Digunakan untuk operasi bit per bit pada nilai integer. Terdiri dari operator NOT, AND, OR, XOR, Shl, Shr.
Relational operator
Relational operator digunakan untuk membandingkan hubungan antara dua buah operand dan akan didapatkan hasil tipe boolean, yaitu True atau False. Terdiri dari operator : =, <, >, <=, >=, <>
Logical operator
Terdapat 4 buah logical operator yaitu : NOT, AND, OR dan XOR. Operator ini bekerja dengan nilai-nilai logika, yaitu True dan False.
Set operator
Digunakan untuk operasi himpunan.
String operator
Digunakan untuk operasi string. Hanya ada sebuah operator string saja, yaitu operator + yang digunakan untuk menggabungkan dua buah nilai string.
Contoh :
Nama1 := ‘bono ‘;
Nama2 := ‘renuat’;
Nama3 := Nama1 + Nama2;