28
Halaman 1 STRUKTUR DATA STRUKTUR DATA Pengajar Pengajar Jaidan Jauhari, MT Jaidan Jauhari, MT Alamat Email Alamat Email [email protected] [email protected] [email protected] Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Data Informatika ITB Karangan Dr. Inggriani Liem Informatika ITB Karangan Dr. Inggriani Liem

Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Embed Size (px)

Citation preview

Page 1: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 1

STRUKTUR DATASTRUKTUR DATA

PengajarPengajarJaidan Jauhari, MTJaidan Jauhari, MT

Alamat EmailAlamat [email protected]

[email protected][email protected]

Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Disarikan Dari Berbagai Sumber, Terutama Dari Diktat Struktur Data Informatika ITB Karangan Dr. Inggriani LiemInformatika ITB Karangan Dr. Inggriani Liem

Page 2: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 2

SILABUS MATERI KULIAHSILABUS MATERI KULIAH

Pengantar Struktur DataReview Record dan ArrayLinked List dan Variasi ListStack (Tumpukan)Queue (Antrian)Pohon BinerMultiListGraph

Page 3: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 3

BUKU SUMBERBUKU SUMBER

1. Inggriani Liem. 1997. Diktat Kuliah Algoritma dan Pemrograman Prosedural. Bandung :

ITB2. Inggriani Liem. 2003. Diktat Kuliah Struktur Data.

Bandung : ITB3. Rinaldi Munir. 2003. Algoritma dan Pemrograman II.

Bandung : Penerbit Informatika 4. Bambang Wahyudi. 2004. Struktur Data dan Algoritma.

Yogyakarta : Andi Offset5. Dwi Sanjaya. 2001. Bertualang dengan Struktur Data di

Planet Pascal. Yogyakarta : JJ Learning6. P. Insap Santoso.1997. Struktur Data dengan Turbo

Pascal. Yogyakarta : Andi Offset

Page 4: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 4

Komponen PenilaianKomponen Penilaian

Tugas 20% Ujian 1 20 % (Pertemuan ke-4) Ujian 2 20% (Pertemuan ke-8) Ujian 3 20% (Pertemuan ke-12) Ujian Akhir Semester 20%

Page 5: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 5

Aturan dan Sanksi-sanksiAturan dan Sanksi-sanksi Harus punya buku tulis tebal untuk catatan dan fotocopyan 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 tertutup2. Memakai baju berkerah 3. Tidak memakai aksesoris yang tidak diijinkan4. Tidak memakai pakaian yang kurang dasar atau lebih dasar5. 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

Page 6: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 6

PENGERTIAN STRUKTUR DATAPENGERTIAN 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

Page 7: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 7

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

Page 8: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 8

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.

Page 9: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 9

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.

Page 10: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 10

REVIEW RECORD (REKAMAN)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.

Page 11: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 11

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 Jammaka cara mengacu tiap field adalah J.hh, J.mm dan J.ss

Page 12: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 12

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;

Page 13: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 13

REVIEW ARRAY (LARIK)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.

Page 14: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 14

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

Page 15: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 15

Cara Pendefinisian Array1. Sebagai Peubah

Contoh : L : array[1..50] of integer NamaMhs : array[‘a’..’j’] of string

2. Sebagai tipe baruContoh :type LarikInt : array[1..100] of integerP : LarikInt

Page 16: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 16

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 100typedef int Larikint[Nmaks+1];Larikint P;

Page 17: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 17

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 }

Page 18: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 18

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

Page 19: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 19

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

Page 20: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 20

Larik Bertype Terstruktur

Larik tidak hanya dapat berisi data bertype tunggal, tapi dapat juga berisi data yang bertipe terstruktur

Contoh :const Nmaks = 100type Mahasiswa : record

<nim : integer, nama_mhs : string, KodeMK : string, Nilai : char >

TabMhs : array[1..Nmaks] of Mahasiswa

Page 21: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 21

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

Page 22: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 22

Tugas 1Tugas 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

Page 23: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 23

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.Petunjuk :

Gunakan notasi pengulangan untuk menyelesaikan permasalahan tersebut

Tugas dikumpulkan pada pertemuan berikutnya disertai listing program dan contoh keluarannya

Page 24: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 24

ADT (Abstract Data Type)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

Page 25: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 25

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.

Page 26: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 26

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

Page 27: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 27

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

Page 28: Strukdat 1Bahan Kuliah Struktur Data Pendahuluan_3

Halaman 28

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 adab. 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