type

advertisement
STRUKTUR DATA
Pengajar
Jaidan Jauhari, M.T.
Alamat Email
[email protected]
[email protected]
Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data
Informatika ITB Karangan Dr. Inggriani Liem
Halaman
1
SILABUS MATERI KULIAH

Pengantar Struktur Data
 Review Record dan Array
 Linked List dan Variasi List
 Stack (Tumpukan)
 Queue (Antrian)
 Pohon Biner
 MultiList
 Graph
Halaman
2
BUKU SUMBER
1.
2.
3.
4.
5.
6.
Inggriani Liem. 1997. Diktat Kuliah Algoritma dan
Pemrograman Prosedural. Bandung : ITB
Inggriani Liem. 2003. Diktat Kuliah Struktur Data.
Bandung : ITB
Rinaldi Munir. 2003. Algoritma dan Pemrograman II.
Bandung : Penerbit Informatika
Bambang Wahyudi. 2004. Struktur Data dan Algoritma.
Yogyakarta : Andi Offset
Dwi Sanjaya. 2001. Bertualang dengan Struktur Data di
Planet Pascal. Yogyakarta : JJ Learning
P. Insap Santoso.1997. Struktur Data dengan Turbo
Pascal. Yogyakarta : Andi Offset
Halaman
3
Komponen Penilaian





Tugas 20%
Ujian 1 20 %
(Pertemuan ke-3)
Ujian 2 20%
(Pertemuan ke-7)
Ujian 3 20%
(Pertemuan ke-11)
Ujian Akhir Semester 20%
Halaman
4
Aturan dan Sanksi-sanksi







Harus punya buku tulis tebal untuk catatan dan Hardcopy bahan kuliah
struktutr data (akan diberikan dalam bentuk file)
Kehadiran minimal 80%, kurang dari 80%
tidak lulus (mendapat nilai E)
Keterlambatan maksimal 10 menit (Lebih dari 10 menit tidak diijinkan
memasuki ruangan)
Pengumpulan Tugas yang melebihi waktu yang telah ditentukan akan
diberikan nilai nol
Kecurangan dalam bentuk apapun akan mendapatkan nilai E
Mahasiswa berpakaian rapi dan sopan, yang ditunjukkan antara lain
1. Memakai sepatu tertutup
2. Memakai baju berkerah
3. Tidak memakai aksesoris yang tidak diijinkan
4. Tidak memakai pakaian yang kurang dasar atau lebih dasar
5. dan lain-lain
Selama perkuliahan berlangsung mahasiswa tidak diijinkan meninggalkan
ruang kuliah kecuali sangat terpaksa dan itupun harus membuat surat ijin
dan hanya boleh satu kali
Halaman
5
PENGERTIAN STRUKTUR DATA
Struktur data adalah cara menyimpan atau
merepresentasikan data di dalam komputer agar
bisa dipakai secara efisien
Sedangkan data adalah representasi dari fakta dunia
nyata.
Fakta atau keterangan tentang kenyataan yang
disimpan, direkam atau direpresentasikan dalam
bentuk tulisan, suara, gambar, sinyal atau
simbol
Halaman
6
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
2. Struktur Data, meliputi
a. Struktur data sederhana, misalnya array dan
record
Halaman
7
b. Struktur data majemuk, yang terdiri
dari
Linier : Stack, Queue, serta List dan
Multilist
Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat di dalam
proses pemrograman akan menghasilkan
algoritma yang lebih jelas
dan tepat,
sehingga menjadikan program secara
keseluruhan lebih efisien dan sederhana.
Halaman
8
Struktur data yang ″standar″ yang biasanya
digunakan dibidang informatika adalah :
 List linier (Linked List) dan variasinya
 Multilist
 Stack (Tumpukan)
 Queue (Antrian)
 Tree ( Pohon )
 Graph ( Graf )
Struktur data yang sudah dipelajari sebelumnya
adalah struktur data statis, yaitu array. Dalam
kuliah ini akan dipelajari struktur data dinamis.
Halaman
9
REVIEW RECORD (REKAMAN)
Disusun oleh satu atau lebih field. Tiap field
menyimpan data dari tipe dasar tertentu atau dari
tipe bentukan lain yang sudah didefinisikan
sebelumnya. Nama rekaman ditentukan oleh
pemrogram.
Rekaman disebut juga tipe terstruktur.
Contoh :
1. type Titik : record <x : real, y : real>
jika P dideklarasikan sebagai Titik maka
mengacu field pada P adalah P.x dan P.y.
Halaman
10
2. Didefinisikan tipe terstruktur yang mewakili Jam
yang dinyatakan sebagai jam (hh), menit (mm)
dan detik (ss), maka cara menulis type Jam
adalah :
type JAM : record
<hh : integer, {0…23}
mm : integer, {0…59}
ss : integer {0…59}
>
Jika J adalah peubah (variabel) bertipe Jam
maka cara mengacu tiap field adalah J.hh, J.mm
dan J.ss
Halaman
11
Terjemahan dalam bahasa C :
1. type Titik : record <x : real, y : real>
diterjemahkan menjadi :
typedef struct { float x;
float y;
} Titik;
2. type JAM : record
<hh
: integer, {0…23}
mm
: integer, {0…59}
ss
: integer {0…59}
>
Diterjemahkan menjadi :
typedef struct
{ int hh; /*0…23*/
int
mm; /*0…59*/
int
ss; /*0…59*/
} Jam;
Halaman
12
REVIEW ARRAY (LARIK)
1. Pendahuluan
 Larik adalah struktur data statik yang
menyimpan sekumpulan elemen yang bertipe
sama.
 Setiap elemen diakses langsung melalui
indeksnya.
 Indeks larik harus tipe data yang menyatakan
keterurutan misalnya integer atau karakter.
Halaman
13

Banyaknya elemen larik harus sudah diketahui
sebelum program dieksekusi.
 Tipe elemen larik dapat berupa tipe sederhana,
tipe terstruktur atau tipe larik lain.
 Nama lain array adalah Larik, tabel atau vektor
Halaman
14
Cara Pendefinisian Array
1. Sebagai Peubah
Contoh :
L
: array[1..50] of integer
NamaMhs : array[‘a’..’j’] of string
2. Sebagai tipe baru
Contoh :
type LarikInt : array[1..100] of integer
P : LarikInt
Halaman
15
3. Mendefinisikan ukuran maksimum
elemen larik sebagai konstanta
Contoh :
Const Nmaks = 100
type Larikint : array[1..Nmaks] of integer
P : LarikInt
Cara menterjemahkan ke bahasa C :
#define Nmaks 100
typedef int Larikint[Nmaks+1];
Larikint P;
Halaman
16
Cara Mengacu Elemen Larik

Elemen larik diacu melalui indeksnya.
Nilai indek harus terdefinisi.

Contoh cara mengacu elemen larik adalah :
L[4] {mengacu elemen keempat dari larik L }
NamaMhs[‘b’]
{mengacu elemen kedua
dari larik NamaMhs}
P[k] {mengacu elemen ke-k dari larik P,
asalkan nilai k sudah terdefinisi }
Halaman
17
Menginisialisasi Larik

menginisialisasi elemen larik adalah memberikan
harga awal untuk seluruh elemen larik, misalnya
menginisialisasi dengan nilai 0 seperti di bawah ini :
Procedure InisDgn0(output A:larik, input N:integer)
{menginisialisasi setiap elemen larik A[1..N] dengan nol}
{K. Awal : N adalah banyak elemen efektif larik,
nilainya terdefinisi}
{K. Akhir : seluruh elemen larik A bernilai nol}
Deklarasi :
K : integer
Deskripsi :
for k  1 to N do
A[k]  0
endfor
Halaman
18
Mengisi elemen larik dari piranti masukan

Elemen larik dapat diisi dengan nilai yang dibaca dari
piranti masukan seperti contoh di bawah ini :
Procedure BacaLarik(output A:larik, input N:integer)
{mengisi elemen larik A[1..N] dengan nilai yang
dibaca dari piranti masukan}
{K. Awal : N adalah jumlah elemen efektif larik, nilainya
terdefinisi}
{K. Akhir : seluruh elemen larik A berisi nilai-nilai yang dibaca dari
piranti masukan}
Deklarasi :
K : integer
Deskripsi :
for k  1 to N do
read (A[k])
endfor
Halaman
19
Larik Bertype Terstruktur
Larik tidak hanya dapat berisi data bertype tunggal,
tapi dapat juga berisi data yang
bertipe
terstruktur
Contoh :
const Nmaks = 100
type Mahasiswa : record
<nim : integer,
nama_mhs : string,
KodeMK : string,
Nilai : char >
TabMhs : array[1..Nmaks] of Mahasiswa
Halaman
20
Contoh Cara mengacu elemen TabMhs :
1. TabMhs[2].Nim
mengacu field Nim dari elemen kedua
larik
2. Write(TabMhs[k].KodeMK)
menuliskan field KodeMK dari elemen
ke k dari larik
Halaman
21
Tugas 1
Buatlah dalam notasi algoritma atau bahasa C :
1.Definisikan sebuah type terstruktur untuk
menyatakan data nasabah disebuah bank. Data
nasabah terdiri atas field Nomor Account, Nama
Nasabah, Alamat Nasabah, Kota Nasabah, dan
Nomor Telpon Nasabah.
Untuk setiap field definisikan type data yang cocok
Halaman
22
2.Dari soal nomor 1 buatlah program dalam
bahasa pemrograman berbasis bahasa C, untuk
memasukkan data nasabah sebanyak N, dengan
N diinputkan dari papan ketik, kemudian
menuliskan kembali semua data nasabah dalam
bentuk matrik/tabel.
Petunjuk :
Gunakan notasi pengulangan untuk
menyelesaikan permasalahan tersebut
Tugas dikumpulkan pada pertemuan
berikutnya disertai listing program dan
contoh keluarannya
Halaman
23
ADT (Abstract Data Type)

ADT adalah definisi type dan sekumpulan
primitif (operasi dasar) terhadap type
tersebut.
 Type diterjemahkan menjadi type terdefinisi
dalam bahasa pemrograman yang
bersangkutan, misalnya menjadi record dalam
Pascal/Ada dan Struct dalam bahasa C
Halaman
24
Primitif dalam konteks pemrograman
prosedural, diterjemahkan menjadi
fungsi dan prosedur.
Primitif dikelompokkan menjadi :
1. Konstruktor/Kreator, pembentuk nilai
type. Biasanya namanya diawali dengan
Make.
2. Selektor, untuk mengakses komponen type.
Biasanya namanya diawali dengan
Get.
Halaman
25
3. Prosedur Pengubah nilai komponen
4. Validator komponen type, yang
dipakai untuk mengetes apakah dapat
membentuk type sesuai batasan.
5. Destruktor/Dealokator, yaitu untuk
menghancurkan nilai objek, sekaligus
memori penyimpannya
6. Baca/tulis, untuk interface dengan
input/output device
Halaman
26
7. Operator Relasional terhadap type
tersebut untuk mendefinisikan lebih
besar, lebih kecil, sama dengan dan
sebagainya.
8. Aritmatika terhadap type tersebut,
dalam pemrograman biasanya hanya
terdefinisi untuk bilangan numerik.
9. Konversi dari type tersebut ke type
dasar dan sebaliknya
Halaman
27
ADT biasanya diimplementasi menjadi dua buah
modul, yaitu :
1. Definisi/spesifikasi type dan primitif
- Spesifikasi type sesuai dengan
bahasa yang dipakai
- Spesifikasi dari primitif sesuai dengan
kaidah
dalam konteks prosedural, yaitu :
a. Fungsi : nama, domain, range, dan pre kondisi
jika ada
b. Prosedur : Keadaan Awal, Keadaan Akhir dan
proses yang dilakukan
2. Body/realisasi dari primitif, berupa kode program dalam
bahasa yang bersangkutan. Realisasi fungsi dan prosedur
harus sedapat mungkin memanfaatkan Selektor dan
Konstruktor
Halaman
28
Download