Tipe Data Abstrak
Dalam artikel sebalumnya dijabarkan tentang tipe data, baik dari sisi kelas maupun level abstraksinya. Pada bagian ini akan diberikan penjelasan contoh abstraksi tipe data dengan C sebagai bahasa pemrogramannya.
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];
};
Referensi :
Daniel F.Stubbs & Neil W. Webre (1985), Data Structure with Abstract Data Types and Pascal, Book / Cole Publishing Company.
Paul J. Deitel. (2016). C how to program : with an introduction to C++. 08. Pearson Education. Hoboken. ISBN: 9780133976892
Comments :