Email : euismarlina@gmail.com http://euismarlina.edublogs.org HP : 08179424319
Mata Kuliah Struktur Data - 2008
Pengantar Tipe data dapat kaji dari sisi kelas maupun level abstraksinya. Terdapat dua kelas tipe data kalau kita lihat dari kompleksitasnya, yaitu : - Tipe data atomik 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 Tipe data yang dipandang sebagai satu kesatuan tunggal dan dapat dipecah-pecah lagi (decomposibleentity). Contoh : Array, Struct/Record, dll. Mata Kuliah Struktur Data - 2008 Sedangkan atas level abstraksinya, tipe data dapat dikelompokkan ke dalam tiga level, yaitu : - Tipe data abstrak/ADT Tipe data yang merupakan hasil imajinasi kita dengan memberikan beberapa batasan domain maupun operasinya. Contoh : usia, daftarnilai. - Tipe data virtual Tipe data yang ada/dikenal oleh bahasa pemrograman. Contoh : integer, array of integer. - Tipe data fisikal Tipe data yang nyata dalam main processor.
Mata Kuliah Struktur Data - 2008
Modul Program Modul pada bahasa pemrograman berorientasi objek, diimplementasikan dengan kelas dengan sekumpulan layanan berupa metode publik yang dapat dipanggil oleh pemakai kelas Pada bahasa prosedural, modul diimplementasikan sebagai struktur, dan sekumpulan operasi berupa prosedur dan fungsi yang dipanggil pemakai modul lewat pemanggilan prosedur dan fungsi.
Mata Kuliah Struktur Data - 2008
Abstraksi Data/ADT Persoalan abstraksi data, yaitu : Struktur data seharusnya menjadi satu
bagian internal yang tersembunyi
Pemakai modul tidak perlu mengetahui
struktur data yang digunakan untuk
mengimplementasikan suatu modul Pemakai modul hanya diberikan gambaran
perilaku, bukan struktur internal dari modul
Fokus pada prilaku objek, membentuk basis
pemrograman berorientasi objek.
Mata Kuliah Struktur Data - 2008 Abstraksi data memungkinkan kita memperluas bahasa pemrograman dengan tipe data baru Abstraksi data memungkinkan kita mengabstraksikan rincian2 cara data diimplementasikan, menjadi bagaimana objek-objek berprilaku Abstraksi data berisi sekumpulan objek Abstraksi data pada prinsipnya merupakan dasar pemrograman berorientasi objek (Object Oriented Programming/OOP) Mata Kuliah Struktur Data - 2008 Pengertian ADT adalah kumpulan nilai dan kumpulan operasi yang diizinkan ADT memungkinkan pendefinisian suatu himpunan nilai di variabel disertai operasi-operasi yang izinkan padanya ADT menyatakan prilaku suatu variabel.
Mata Kuliah Struktur Data - 2008
Tujuan ADT ADT memisah struktur penyimpanan (lokasi memori) dari perilaku. ADT menyembunyikan informasi (information hiding) atau pengkapsulan (encapsulation), yaitu : Perubahan implementasi ADT tidak mengubah teks program lain bila antarmuka (interface) tidak berubah Pemakaian dan pembuatan ADT dapat dilakukan terpisah, hanya perlu kesepakatan antarmuka pemakaian ADT ADT merupakan sarana pemrograman modular dan menjadi landasan pembentukan tim pemrograman
Mata Kuliah Struktur Data - 2008
ADT merupakan sarana untuk membuat modul-modul yang menyerupai dengan konsep-konsep yang ditemukan pada domain persoalan Pada sistem akademik ditemukan konsep student, lecturer, room dll Maka dapat dibuat ADT student, ADT lecturer, ADT Room dsb, yang serupa namanya dengan konsep2 yang dijumpai pada domain persoalan. Mata Kuliah Struktur Data - 2008 Pembuatan ADT Tahap pembuatan ADT : Spesifikasi
Implementasi
Pemrograman
Mata Kuliah Struktur Data - 2008
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.
Mata Kuliah Struktur Data - 2008
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.
Mata Kuliah Struktur Data - 2008
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 :
Mata Kuliah Struktur Data - 2008
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); };
Mata Kuliah Struktur Data - 2008
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]; };