Rabu, 23 November 2011

STRUKTUR DATA1

KULIAH STRUKTUR DATA

H A R I : S E N I N
PENGAMPU : EDI SUHARTO, ST
KUSHARTANTYA

MATERI MELIPUTI ANTARA LAIN :
1. Pengantar: Pengertian tentang struktur data secara umum. Mengulang sekilas tentang tipe-tipe data.
2. Tipe Bentukan
3. Matriks
4. Stack : Memahami cara kerja dan kegunaan Stack dengan materi Operasi dasar; Contoh Kegunaan; Implementasi.
5. Queue : Memahami cara kerja dan kegunaan Queue dengan materi Operasi dasar; Contoh Kegunaan; Implementasi.
6. Linked List : Memahami struktur data Linked List, operasi-operasi pada linked list antara lain penyisipan, penambahan dan penghapusan. Dapat mengimplementasikan linked list.
Single Linear linked list; Double Linear Linked List; Single Circular Linked List; Double Circular Linked List.
7. Tree (Pohon): Memahami definisi dan terminologi mengenai tree secara umum. Mengenali cara melakukan operasi untuk tiap-tiap elemen pada tree.

Komponen Penilaian :
• Tugas-Tugas, Praktikum 20 %
• Ujian Tengah semester 40 %
• Ujian Akhir Semester 40 %

Ketiga komponen tsb harus ada dan lengkap, jika salah satu komponen tidak ada atau tidak lengkap maka nilai akhir tidak akan diberikan.
Semua mhs yang mengulang harus mengikuti kuliah. Bagi yang perbaikan boleh tidak mengikuti kuliah bagian I (sampai dengan ujian tengah semester) tetapi tetap harus tetap mengerjakan tugas-tugas yang diberikan.
Referensi:
Inggriani Liem: Kuliah Struktur Data, Bandung ITB
Larry Nyhoff, Sanford Leestma: Advanced Programming in Pascal with Data Structures. Macmillan Publishing Company New York.
Nell Dale, Susan C. Lilly: Pascal Plus Data Structures, Algorithms, and Advanced Programming. D.C. Heath and Company.
P Insap Santoso: Struktur Data dengan Turbo Pascal.







1. PENGANTAR

Pengertian Struktur Data
Struktur data adalah cara menyimpan merepresentasikan data di dalam komputer agar dapat digunakan secara efisien.
Sedangkan data sendiri adalah representasi dari fakta dunia nyata. Yaitu fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbul.

Secara garis besar type data dapat dikategorikan menjadi :
1. Type data sederhana
a. Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter
b. Type data sederhana majemuk, misalnya String
Sedangkan
2. Struktur Data meliputi
a. Struktur data sederhana misalnya array (larik), record (rekaman)
b. Struktur data majemuk
• Yang Linier : Stack, Queue, List dan Multilist
• Yang Non Linier : Pohon Biner, Graph.

Mengapa struktur data perlu dipelajari ? Karena dengan pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.
Struktur data yang ”baku” yang biasanya digunakan di bidang informatika adalah :
a. Stack
b. Queue
c. List Linier dan variasinya (Single, Double)
d. Tree (Pohon)
e. Graph

Tipe data dapat dikaji dari sisi kelas maupun level abstraksinya. Dilihat dari kompleksitasnya terdapat dua klas tipe data
1. Tipe data atomik: tipe data yang dipandang sebagai satu kesatuan tunggal dan tidak dapat dipecah-pecah lagi (non decomposible entity). Contoh : integer, char, float/real.
2. Tipe data berstruktur: tipe data yang dipandang sebagai satu kesatuan tunggal dan dapat dipecah-pecah lagi (decomposible entity). Contoh : Array, Record dll.






2. TIPE BENTUKAN

Tipe dasar sudah cukup untuk dapat dipakai memproses sebagian besar data yang ada, namun tipe dasar tidak cukup untuk memproses banyak data, apalagi data yang memiliki struktur tertentu.
Untuk menyelesaikan persoalan pengolahan data tertentu, suatu tipe data baru dapat dibentuk berdasarkan tipe data dasar (primitif).

Tipe Enum
Tipe enum adalah suatu tipe yang elemennya didefinisikan sendiri satu per satu. Dalam representasinya sebenarnya tipe enum ini adalah sebuah integer yang diberi nama. Dalam Pascal tipe ini didefinisikan dengan cara menyebut elemen-elemennya:
type
hari = (senin, selasa, rabu, kamis, jumat, sabtu, minggu);
warna = (merah, kuning hijau);

Tipe enum tidak bisa dibaca (dengan readln) atau ditulis (dengan writeln), tipe jenis ini hanya bisa diberi nilai dengan assignment.

Tipe Enumerasi
Tipe enumerasi adalah tipe yang elemen -elemennya bisa disebutkan satu persatu (bisa dicacah), integer, enum, dan karakter adalah contoh tipe enumerasi. Tipe real tidak bisa dicacah satu persatu, tipe string juga tidak bisa dicacah satu per satu.

Subtipe Integer
Integer memiliki range tertentu sesuai dengan jumlah bit yang dipakai oleh integer. Terkadang dalam kasus tertentu hanya diperlukan subrange (sebagian range) integer, misalnya untuk mengolah data jam yang berbasis 60 (seksadesimal), yang diperlukan hanyalah angka dari 0 sampai 59, angka di luar itu sifatnya tidak valid. Subtipe integer didefinisikan dengan menyebutkan range untuk tipe tersebut.
Type jam = 1..12;
menit = 0..59;
detik = 0..59;
Pengecekan run time dan compile time
Perhatikan bahwa jika Anda memiliki variabel m dengan tipe menit, lalu melakukan hal ini:
m:= 61;
maka kompilator akan menolak program karena ada pemeriksaan pada waktu kompilasi yang mencegah m diisi selain 0 sampai 59. Namun jika dalam program dilakukan hal ini:
readln(m);
maka kompilator tidak akan menolak jika pengguna memasukkan angka selain 0 sampai 59, dengan kata lain, kompilator hanya melakukan pengecekan waktu kompilasi (compile time), tapi tidak waktu eksekusi (run time).
Cara yang benar untuk membaca tipe menit agar masuk ke m adalah dengan membaca integer ke dalam variabel lain dan memeriksa hasil pembacaan, seperti ini:
var i:integer;
m: menit;
begin
repeat
readln(i);
until (i>=0) and (i<=59);
m:=i; (* bilangan yang dimasukkan ke m pasti sudah valid*)
end.

Tipe SET (himpunan)
Tipe himpunan adalah tipe yang bisa menerima himpunan nilai yang masing-masing elemennya adalah tipe enumerasi. Perhatikan: tidak semua bahasa pemrograman prosedural memiliki tipe SET.
Deklarasi tipe himpunan adalah:
type
hari = (senin, selasa, rabu, kamis, jumat, sabtu, minggu);
setkar = set of char;
harihari = set of hari;

Operasi yang tersedia untuk himpunan meliputi: gabungan (union), irisan (intersection), dan pengurangan elemen himpunan, serta pengecekan keanggotaan.
Tipe set tidak bisa dibaca dan ditulis secara langsung menggunakan read/readln/write/writeln.
Tipe Komposisi (Record)
Suatu tipe bisa disusun dari beberapa tipe, misalnya tipe mahasiswa bisa disusun dari tipe string untuk nama, tipe real untuk nilai, dan tipe integer untuk nomor urutnya. Deklarasi tipe komposisi dalam Pascal adalah:
type mahasiswa = record
nama:string;
urut: integer;
nilai:real;
end;
var mhs: mahasiswa;

Cara mengakses elemen tipe adalah dengan titik, misalnya:
writeln(mhs.nama);
Atau dengan blok with :
with mhs do
begin
writeln(nama);
end;

Jika bagian dari tipe bentukan merupakan tipe dasar yang bisa langsung dibaca atau tulis maka elemen tersebut bisa langsung dibaca atau ditulis, namun bagian tipe yang tidak bisa dibaca dan ditulis langsung tetap harus diperlakukan khusus.



Tabel Berdimensi Satu (Array)
Jenis variabel yang telah diberikan hanya bisa digunakan untuk menyimpan sebuah nilai saja. Dalam banyak kasus kita perlu menyimpan banyak nilai yang serupa untuk diproses, misalnya data nilai mahasiswa dalam suatu kelas untuk dihitung rata-ratanya.
Tabel adalah tipe data yang dapat menampung sejumlah data dengan tipe sejenis, jumlah data yang dapat disimpan dibatasi oleh kemampuan kompilator dan komputer. Deklarasi tabel integer yang terdiri dari 100 elemen adalah:
var
tabint : array [1..100] of integer;
Dengan deklarasi semacam itu sebuah tabel yang terdiri dari 100 elemen integer dibentuk, dan dapat diakses melalui indeksnya (antara 1 sampai 100, inklusif). Untuk mengakses elemen tabel ke-n gunakan sintaks: tabint[n].
Tabel dapat diproses menggunakan loop (biasanya loop for, karena indeks tabel sudah jelas), contoh berikut akan menjumlahkan seluruh elemen tabel integer yang dideklarasikan di atas (jumlah dan I bertipe integer):
jumlah:=0;
for i:=1 to 100 do jumlah:=jumlah+tabint[i];
writeln('Jumlah elemen tabel adalah:', jumlah);

String sebagai Array of Character
String sebenarnya adalah tabel berdimensi satu dengan elemennya berupa karakter, indeks ke-0 tabel berisi panjang string saat ini, dan indeks ke 1 dan seterusnya berisi data karakter yang ada pada string. Pada string seperti ini:
s := 'hello';
maka s[1] = 'h', s[2]='e', dst. Sedangkan ord(s[0]) akan berisi panjang string yaitu 5. Pengaksesan panjang string melalui elemen ke-0 tidak disarankan, karena tergantung pada implementasi Pascal, elemen string sebaiknya hanya diakses mulai dari elemen 1 sampai panjang string.

Tabel Berindeks Banyak (Tabel Multi Dimensi)
Terkadang kita perlu memiliki tabel dengan dimensi lebih dari satu. Matriks merupakan salah satu contoh table dengan banyak dimensi (tabel multi dimensi). Tabel multi dimensi dipandang oleh semua bahasa yang mengenal tipe data tabel satu dimensi, karena tabel dua dimensi bisa dipandang sebagai tabel dari tabel.
Dalam Pascal, tipe tabel multi dimensi dapat dideklarasikan seperti ini:
var
matriks : array [1..4, 1..4] of integer;

Pengaksesan elemen tabel dilakukan mirip seperti peng-aksesan tabel satu dimensi:
matriks[baris, kolom]:=nilai;
Pemrosesan tabel multi dimensi umumnya dilakukan dengan nested loop. Hal yang perlu diperhatikan dalam pemrosesan tabel dengan loop adalah bahwa indeks tabel tidak boleh lebih dari yang sudah dideklarasikan.

Tidak ada komentar:

Posting Komentar