TYPE



 TYPE 

Type adalah pola representasi suatu data dalam komputer. Gunanya untuk 

mendefinisikan objek yang akan diprogram. Ada type dasar (yang diasumsikan ada) 

dan type bentukan, biasanya type bentukan dibentuk dari type dasar. Type tidak 

menentukan alokasi memori di komputer, tetapi hanya mendefinisikan pola struktur 

informasi. 

Mendefinisikan TYPE berarti : 

- menentukan nama type dalam kamus, 

- definisi domain harga yang dapat dipunyai oleh nama tersebut, 

- konvensi atau perjanjian tentang penulisan konstanta bertype tersebut, 

- operator yang dapat dioperasikan terhadap objek bertype tersebut. 

Ada type dasar yang sudah diberikan dan dan siap dipakai, ada type bentukan yang 

dibentuk dari type dasar atau dari type bentukan/komposisi yang sudah dibuat. 

Type Dasar 

Type dasar yang tersedia dalam suatu bahasa adalah type yang sudah didefinisikan 

oleh pemroses bahasa. Karena sudah didefinisikan, pemrogram dapat memakai nama 

type dan semua operator yang tersedia, dan mentaati domain nilai yang disimpan 

dalam type tersebut. 

Type dasar yang dianggap biasanya tersedia dalam suatu bahasa tingkat tinggi (dan 

merupakan type dasar dalam notasi algoritmik) adalah type-type dasar berikut: 

- bilangan logika/boolean 

- bilangan bulat 

- bilangan riil 

- karakter 

Implementasi type tersebut dalam berbagai bahasa dapat sedikit berbeda. Akan 

dipelajari ketika dijelaskan pada bahasa yang bersangkutan. 

Bilangan Logika/Boolean 

Nama          : boolean

Domain      : [true, false] 

Konstanta   : true false

Operator      :






Hasil operasi operator boolean tersebut diberikan oleh tabel kebenaran sebagai berikut:

                

Catatan: Dalam beberapa bahasa pemrograman, didefinisikan operator logika yang 

dihubungkan dengan eksekusi dan evaluasi ekspresi, seperti operator and then dan or 

else (lihat Diktat “Pemrograman Fungsional” untuk penjelasan operator ini). Pada 

diktat ini, operator and dan or merupakan operator murni logika seperti dituliskan 

pada tabel di atas.


Bilangan Bulat 

Nama        integer

Domain     : Z (hati-hati dengan representasi komputer) 

Konstanta  : 0     3     123      -89      56     999 


Bilangan integer mempunyai keterurutan. Keterurutan ini didefinisikan dengan : 

- suksesor x adalah x + 1 

- predesesor x adalah x - 1 

Contoh: 

     suksesor 0 adalah 1              predesesor -1 adalah -2 

     suksesor -1 adalah 0             predesesor 3 adalah 2 

     suksesor 5 adalah 6

Operator  :


        

Bilangan Riil 

Nama         : real

Domain      : R (hati-hati dengan representasi komputer) 

Konstanta   : Angka mengandung '.'

                     Dapat dituliskan dengan notasi E yang berarti pangkat sepuluh. 

                     Contoh konstanta:

                     0.      0.2      3.233      123.       -89.0    56.      999.       12.E-2      1.5E1 

Operator     :



Catatan: 
1. Bilangan riil yang mengandung E berati pangkat sepuluh. Contoh: 1.5E2 berarti 
    1.5 * 102.
2. Dalam notasi algoritmik, operator relasional kesamaan tidak berlaku untuk 
    bilangan riil. Untuk harga riil, harus didefinisikan suatu bilangan kecil ε yang 
    menyatakan ketelitian perhitungan, termasuk yang disebut dengan "kesamaan". 
3. Pada bahasa pemrograman yang nyata, operator kesamaan bilangan riil mungkin
    dapat dipakai dengan “baik”, namun harus hati-hati dan sangat spesifik untuk 
    implementasi bahasa tertentu. Dengan alasan ini, pada notasi algoritmik operator 
    kesamaan bilangan riil dianggap tidak ada.

Karakter 
Nama       : character
Domain    : Himpunan yang terdefinisi oleh suatu enumerasi, misalnya:
                 ['0'..'9','a'..'z','A'..'Z',, RETURN, SPACE, EOL] 

Ada karakter yang kelihatan dan tidak kelihatan, dituliskan dengan “nama” seperti 
pada contoh (RETURN, SPACE, EOL). 
Ada keterurutan (suksesor dan predesesor), yang ditentukan oleh representasi di 
dalam komputer, misalnya pengkodean ASCII.
Konstanta : Dituliskan di antara tanda petik atau suatu nama 
 'A' 'P' 'K' RETURN 'M'
Operator : 

String 
Ada sebuah type yang sangat diperlukan di hampir semua sistem, yang pada akhirnya 
dapat dianggap “setengah” type dasar karena sudah tersedia, yaitu String. Untuk 
selanjutnya, type string dapat dianggap type primitif. 
Untuk membedakan string dengan karakter, sebagai pembatas digunakan tanda petik 
ganda (“). 

Contoh: 
Type         : string 
Domain    : untaian karakter yang didefinisikan pada domain character
Konstanta : “KU” “Anak hilang” “Pisang” “K” ”” 
Operator   :
  


Type Enumerasi 
TYPE enumerasi adalah type yang tidak definisi domainnya tidak dilakukan menurut 
suatu aturan (by definition) melainkan dengan melakukan “enumerasi” atau 
menyebutkan satu per satu nilai anggotanya. Type enumerasi mewakili himpunan 
nilai yang diberi nama. 

Karena disebutkan satu per satu, dalam suatu type enumerasi biasanya dikenal cara 
akses suatu nilai anggota enumerasi lewat katakunci sebagai berikut : 
- First, yaitu anggota nilai yang pertama 
- Last, yaitu anggota nilai yang terakhir 
- Successor (elemen) yaitu anggota nilai yang berikutnya dari elemen 
- Predesesor(elemen), yaitu anggota nilai yang sebelumnya dari elemen

Type ini seringkali tersedia dalam bahasa tingkat tinggi, gunanya untuk 
mendefinisikan dengan lebih jelas suatu himpunan nilai yang pasti, misalnya: 
type hari : (senin, selasa, rabu, kamis, jumat, sabtu, minggu) 
type warna : (merah,kuning, hijau, biru, nila, ungu) 

Contoh: Type hari 
{ Type hari menyatakan enumerasi nama hari dalam minggu } 

type hari : (senin, selasa, rabu, kamis, jumat, sabtu, minggu) 

Jika dideklarasi NAMA variabel H sebagai berikut: 
        H : hari { artinya: H adalah nama bertype “hari” } 
Maka cara mengacu/mengakses nilai elemen yang tersimpan pada P yang telah 
terdefinisi adalah: 
     First (H) { menghasilkan nilai: senin }
     Last (H) { menghasilkan nilai: minggu }
     Succ (selasa) { menghasilkan nilai: rabu } 
     Prec (selasa) { menghasilkan nilai: senin } 

Domain     : nilai yang dienumerasi, yaitu senin, selasa, rabu, kamis, jumat, 
                    sabtu, minggu)
Konstanta : senin         sabtu 

Type Bentukan 
Type bentukan adalah suatu TYPE yang dirancang/dibentuk (dan diberi nama) dari 
beberapa komponen bertype tertentu, jadi merupakan sekumpulan elemen bertype 
dasar atau bertype yang sudah dikenal. Type bentukan dibuat/didefinisikan karena 
perancang program memutuskan bahwa keseluruhan (hasil komposisi) komponen 
type tersebut mempunyai sebuah makna semantik Ada relasi yang persis antara satu 
elemen dengan yang lain. Operasi terhadap komponen (elemen) bertipe dasar 
dilakukan seperti yang didefinisikan pada tipe dasar. Operasi terhadap keseluruhan 
tipe mungkin didefinisikan atau tidak. 

Type bentukan seringkali disebut sebagai type komposisi, agregat. Implementasinya 
dalam suatu bahasa sangat bervariasi satu sama lain. Dalam notasi algoritmik, sebuah 
type bentukan berupa agregasi elemen dituliskan dengan notasi :


Perhatikan dalam pengertian sebagai type bentukan, maka ada keseluruhan type yang 
harus dibentuk menurut pembentuk tertentu yaitu Konstruktor, atau adanya komponen 
type yang harus dapat diacu oleh Selektor. Operator terhadap type tersebut harus 
dibuat. Hal ini akan dibahas lebih mendalam dan terstruktur dalam kuliah Struktur 
Data karena pada hakekatnya, membentuk sebuah type berarti menentukan Struktur 
Data.
Pada bagian ini, hanya diberikan contoh-contoh dan yang diutamakan adalah notasi 
tentang bagaimana mengakses elemen type oleh notasi akses yang tersedia. 

Contoh 1: Type Point 
{ Type point menyatakan absis dan koordinat real pada sumbu kartesian } 

type Point :  <  X : real, { absis } 
                         Y : real { ordinat } 
                     

Jika dideklarasi nama variabel P sebagai berikut: 
         P : Point { artinya: P adalah sebuah Point } 
Maka cara mengacu/mengakses nilai elemen yang tersimpan pada P yang telah 
terdefinisi adalah: 
         P.X { menghasilkan nilai absis bertype real }
         P.Y { menghasilkan nilai ordinat bertype real }

Domain     : <real, real>
Konstanta  : <5.0, 6.0> <6.0, 100.0>
Operator   
- operator terhadap Point harus dibuat. 
- operasi real terhadap P.X dan P.Y. 

Contoh 2: Type JAM (Versi 1) 
{ Type JAM menyatakan representasi “jam” dalam notasi HH:MM:SS dengan HH 
bernilai [0..23]; MM bernilai [0..59] dan SS bernilai [0..59] } 

type Jam :  <  HH : integer [0..23], { jam } 
                       MM : integer [0..59], { menit } 
                       SS : integer [0..59] { detik } 
                  

Jika dideklarasi nama variabel J sebagai berikut: 
     J : Jam { artinya : J adalah sebuah JAM } 
Maka cara mengacu/mengakses nilai elemen yang tersimpan pada P yang telah 
terdefinisi adalah: 
     J.HH { menghasilkan nilai bagian jam bertype integer [0..23] }
     J.MM { menghasilkan nilai bagian menit bertype integer [0..59] }
     J.SS { menghasilkan nilai bagian detik bertype integer [0..59] }
Domain     : < integer , integer , integer >
Konstanta  : <0,0,0> <15,20,30>
Operator   
- operator terhadap JAM harus dibuat. 
- operasi integer terhadap komponen HH, MM, SS. 

Contoh 3: Type JAM (Versi 2) 
{ Type JAM menyatakan representasi “jam” dalam notasi HH:MM:SS dengan HH 
bernilai [0..11], MM bernilai [0..59], SS bernilai [0..59], dan ampm yang merupakan 
enumerasi (am, pm) }
type Jam :   <   HH : integer [0..11], { jam } 
                         MM : integer [0..59], { menit } 
                         SS : integer [0..59], { detik } 
                         ampm : (am, pm) { menentukan siang, malam } 
                    

Jika dideklarasi nama variabel J sebagai berikut : 
     J : Jam { artinya : J adalah sebuah JAM }
Maka cara mengacu/mengakses nilai elemen yang tersimpan pada P yang telah 
terdefinisi adalah: 
     J.HH { menghasilkan nilai bagian jam bertype integer [0..11] }
     J.MM { menghasilkan nilai bagian menit bertype integer [0..59] }
     J.SS { menghasilkan nilai bagian detik bertype integer [0..59] } 
     J.ampm {menghasilkan nilai am atau pm }
Domain     : < integer , integer , integer . (am,pm)>
Konstanta  : <0,0,0, am > <15,20,30, pm >
Operator   
- operator terhadap JAM harus dibuat. 
- operasi integer terhadap komponen HH, MM, SS. 

Contoh 4: Sistem untuk Penjadwalan di UDINUS 
type Jam             : integer [11..610] { lihat catatan } 
type Dosen         : string 
type Matakuliah : string 
type Kelas          : integer [1..9999] 

Type terstruktur Jadwal: 
type Jadwal : < J : Jam, D : Dosen, MK : Matakuliah, KL: Kelas > 

Jika dideklarasikan sebuah nama Jadwal_Kuliah : Jadwal 
Maka cara mengacu nilai yang tersimpan pada Jadwal_Kuliah adalah: 
     Jadwal_Kuliah.J { integer[11..610]}
     Jadwal_Kuliah.D { string } 
     Jadwal_Kuliah.MK { string }
     Jadwal_Kuliah.KL { integer[1..9999] } 

Domain     : sesuai dengan domain masing-masing komponen
Konstanta  : <15,”Mary”, “IF221”, 9012> <61,”Christine”,”IF223”, 100> 
Operator   
- untuk Jadwal, tidak terdefinisi operator 
- tapi kita dapat mengadakan: 
    o operasi integer terhadap Jadwal.J asal nilainya [11..610]. 
    o operasi string terhadap Jadwal.D. 
    o operasi string terhadap Jadwal.MK. 
    o operasi integer terhadap Jadwal.KL masih dalam domain [1..9999]. 

Catatan : 
Jam perkuliahan kuliah di UDINUS dikode: 11, 12, ..., 19, 110, 21, 22, ..., 29, 210, ..., 61, 
62, ..., 69, 610. Jika dikehendaki mendefinisikan dengan lebih teliti, maka domain 
harga dapat dibuat lebih persis dengan enumerasi nilai:
[11..19, 110, 21..29, 210, 31..39, 310, 41..49, 410, 51..59, 510, 61..69, 610] 


Contoh 5: Type Bentukan 

type Dosen             : string 

type Matakuliah     : string 

type Kelas              : integer [11..9999] 

type ProgramStudi : string [“EL”,”MS”,”TI”,”TK”,”TF”,”IF”] 

type Jam                 : integer [11..610] 

type DosenMK       : < D : Dosen, MK : Matakuliah > 


Type terstruktur Kuliah: 

type Kuliah : < Dari, Ke : Jam, DMK : DosenMK, PS : ProgramStudi > 


Cara mengacu nilai yang tersimpan pada Kuliah_UDINUS yang bertype Kuliah adalah: 

 Kuliah_UDINUS.Dari { integer [11..610] } 

 Kuliah_UDINUS.Ke { integer [11..610] } 

 Kuliah_UDINUS.DMK { DosenMK} 

 Kuliah_UDINUS.DMK.D { string } 

 Kuliah_UDINUS.DMK.MK { string } 

 Kuliah_UDINUS.PS { string } 


Domain     : sesuai dengan domain masing-masing komponen

Konstanta :   < 15, 16, <”Marni”, 9012>, “IF”> 

                     < 21, 22, <”Edi”, 9012>, “TF”>

Komentar

Postingan populer dari blog ini

PROSEDUR

SKEMA PEMROSESAN SEKUENSIAL