Tipe Data

Bagi para insan TI, terutama pembuat program (programmer), tidak asing lagi dengan data, tipe data, dan nilai data dalam suatu pemrograman. Data berbicara tentang suatu fakta yang terukur, baik terlihat (tangible) maupun yang tidak terlihat (intangible). Contoh data adalah fakta-fakta tentang kondisi badan kita, antara lain berat, tinggi, maupun usia. Sedangkan tipe data adalah aspek yang membatasi karakteristik dari suatu data, baik dari sisi nilai maupun operasi yang diberlakukan terhadap suatu data. Contoh, kita kenal integer di dalam bahasa Pascal, atau int dalam bahasa C. Kalau suatu data bertipe integer, maka data tersebut nilainya hanya berupa bilangan bulat, dan operasi yang bisa dilakukan adalah tambah, kali, bagi dan sejenisnya.
Lebih lanjut mengenai tipe data, kita bisa kaji dari sisi kelas maupun level abstraksinya. Terdapat dua kelas tipe data kalau kita lihat dari kompleksitasnya, yaitu :
Tipe data atomik, adalah tipe data yg dipandang sebagai satu kesatuan tunggal dan tidak dapat dipecah-pecah lagi (non decomposible entity).Contoh : Integer, Char, float/real.
Tipe data berstruktur, adalah tipe data yang dipandang sebagai satu kesatuan tunggal dan dapat dipecah-pecah lagi (decomposible entity).Contoh : Array, Structure, dll.
Sedangkan atas level abstraksinya, tipe data dapat dikelompokkan ke dalam tiga level, yaitu :
Tipe data abstrak, adalah tipe data yang merupakan hasil imajinasi kita dengan memberikan beberapa batasan domain maupun operasinya. Contoh : usia, daftarnilai.
Tipe data virtual, adalah tipe data yang ada/dikenal oleh bahasa pemrograman. Contoh : integer, array of integer.
Tipe data fisikal, adalah tipe data yang nyata dalam main processor.

Hubungan antara kelas dan level tipe data dapat kita lihat lebih lanjut di buku Data Structure with Abstract Data Types and Pascal, Daniel F.Stubbs & Neil W. Webre (1985), Book / Cole Publishing Company, P9.

Dengan pertimbangan aspek nilai dan operasi dari suatu tipe data, kita dapat menentukan pemilihan yang tepat suatu tipe data. Bagaimana seandainya kita ingin membuat suatu batasan sendiri untuk suatu tipe data ? Beberapa teknik abstraksi bisa kita gunakan, antara lain dengan melakukan spesifikasi sebagaimana yang ada di buku yang penulis rujuk di atas. Hal penting untuk melakukan spesifikasi adalah pendefinisian domain dan operation. Untuk pendefinisian domain, dalam beberapa literatur lain sering juga disebut object, perlu terlebih dahulu mendefinisikan component element dan structure. Component element atau cukup disebut element adalah aspek yang membatasi nilai data, sedangkan structure adalah aspek pengorganisasian nilai datanya. Sejalan dengan pendefinisian domain, perlu juga dilakukan pendefinisian set of operations atau di beberapa literatur sering disebut function. Jika spesifikasi sudah dilakukan, maka sampai tahap ini perangcangan sudah siap untuk masuk tahap selanjutnya yaitu representasi dan implementasinya. Sebelum melanjutkannya, pemilihan bahasa pemrograman yang akan digunakan perlu dipertimbangkan. Sebagaimana level tipe data yang dijabarkan sebelumnya, representasi data di dalam setiap bahasa pemrograman bisa berbeda, contoh representasi usia, kita kenal int di bahasa C, integer di bahasa Pascal. Jadi pada tahap representasi ini, fokus utama adalah mewujudkan suatu domain ke bahasa pemrograman yang dipilih. Tahap berikutnya yaitu implementasi, dilakukan penulisan program sesuai bahasa yang dipilih untuk setiap operasi yang sudah didefinisikan pada saat proses spesifikasi.
Contoh Spesifikasi untuk tipe data abstrak letterstring :

Elements : Nilai elemennya adalah karakter ‘a’-’z’,’A’-’Z’, dan termasuk juga spasi. Kita sebut nilai-nilai tersebut sebagai kumpulan karakter (letters).

Structure : Terdapat hubungan secara linear di antara elemen letters di dalam suatu string.

Domain : letterstring berisi 0 sampai 80 karakter. Domain dari tipe letterstring adalah seluruh kemungkinan nilai yang memenuhi aturan-aturan tersebut.

Operations :
letter leftletter( letterstring s)
Kondisi awal :Jumlah karakter input s minimal 1.
Kondisi akhir :leftletter berisi karakter awal (paling kiri) di dalam string s.

append( letter l; letterstring s)
Kondisi awal : Jumlah karakter input s kurang dari 80.
Kondisi akhir :String s lebih panjang dibandingkan sebelumnya, dan isi l adalah karakter terbaru dan berada paling kanan di dalam s.

boolean empty( letterstring s )
Kondisi awal :Tidak ada.
Kondisi akhir :Jika s tidak berisi satupun karakter maka empty bernilai true selain itu empty bernilai false.

boolean full( letterstring s )
Kondisi awal :Tidak ada.
Kondisi akhir :Jika s berisi 80 karakter maka full bernilai true selain itu full bernilai false.

reverse ( letterstring s )
Kondisi awal :Tidak ada.
Kondisi akhir :Urutan dari isi s dibalik, sehingga elemen pertama dan terakhir bertukar tempat, elemen kedua dari awal dan kedua dari akhir bertukar tempat, demikian seterusnya.

Dengan memilih bahasa C sebagai bahasa yang akan digunakan untuk penulisan program, maka representasi dan implementasinya adalah sebagai berikut :

Representation
struct letterstring {
int n;
letter str[80];
};

Implementation
int empty( letterstring s ) {
if (s.n<1) return(1); else return(0);
};

int full( letterstring s ) {
if (s.n>=80) return(1); else return(0);
};

void append( letter l; letterstring *s) {
if (s.n<80)
s.str[++s.n] = l;
};

letter leftletter( letterstring s) {
if (s.n>0)
return(s.str[0] );
};

void reverse ( letterstring *s ) {
int i; letterstring temp;
for(i=0;i<80;i++) temp.str[i] = temp.str[80-i+1];
for(i=0;i<80;i++) s.str[i] = temp.str[i];
};

CO

Comments

Benakribo said…
tengkyu sob ! katanya ini keluar di ujian besok heheheheyy

Popular posts from this blog

Mengenal Concurrency Control pada Database

Normalisasi Tabel

Hidup Sehat Alami-Dr.Tan Tjiauw Liat