ALGORITMA DAN STRUKTUR DATA


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 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.

          X   and   Y    or   Z


 
       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>;
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’
Posisi
 
                                            

1
2
3
4
5
6
7
8
9
10
11
12
NIM
3
1
0
1
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’
               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.

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 :

Dwi
 
R

nil
 
Dita
 
S










Diah
 



 
T






Dedi
 


 
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;
               Isi memori dapat digambarkan sebagai berikut :
2.0
 
3.0
 
                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 :
2.0
 
                 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;
  1. New (NamaA);
NamaA^ := ‘Dani’;
New (NamaC);
NamaC^ := ‘Budi’;
NamaA := NamaC;
NamaB := NamaC;
  1. New (NamaA);
NamaA^ := ‘Dani’;
NamaB  := NamaA;
New (NamaA);
NamaA^ := ‘Hadi’;
  1. Jelaskan mengapa segmen statement berikut ini adalah salah :
    1. NamaA := ‘Dini’;        c. NamaB := NamaA^;
    2. Writeln(NamaA);        d. Readln (NamaB);




0 komentar:

Posting Komentar

ALGORITMA DAN STRUKTUR DATA