Modul Struktur Data

Post on 10-Jun-2015

1.467 views 6 download

description

Pengenalan dasar struktur data

Transcript of Modul Struktur Data

Struktur Data (2)

Oleh Rini Tisnawati

Objektif•Mengetahui maksud struktur data dan menjelaskan penggunaannya dalam pemrograman•Mengetahui operasi yang terkait dengan struktur data dan metode pemrograman paling umum yang terkait dengan struktur tersebut.•Mengetahui metode dan notasi yang digunakan untuk menspesifikasi apa-apa yang perlu dikerjakan oleh program dan bagaimana program ini melakukan pekerjaan tersebut.

Jenis/Tipe Data (Data Type)Terdiri dari1. Set nilai data2. Set operasi yang bisa diterapkan pada nilai

tersebut

Klasifikasi Jenis Dataa) Simple Data Type (Jenis Data Sederhana)

a) Item data individual

b) Data Structures / data aggregates (struktur data)a) Kombinasi dari item data individualb) Membentuk item data lain

Jenis Data Sederhana• Numerik, terdiri dari :– Numerik integer (bilangan bulat)– Numerik real (bilangan riil)

• Karakter, terdiri dari :– Alfabet : a .. z, A .. Z– Angka : 0 .. 9– Simbol khusus : + ? ‘ ! [ ] { } … dll

• Boolean (logika), terdiri dari :– True– False

Identifier• Dalam bahasa pemrograman, item data

diidentifikasi menurut namanya, bukan menurut alamat lokasinya dalam memori

• Identifier akan merupakan konstanta jika ia selalu dikaitkan dengan nilai data yang sama

• Identifier akan merupakan variabel jika nilai datanya yang terkait bisa berubah

• Literal, nilai data yang tertera dalam program namun bukan sebagai identifier

Deklarasi Data• Jenis data konstanta dan variabel harus

didefinisikan dalam program sehingga :– operasi yang tepat dapat dijalankan pada nilai data

dan– Jumlah ruang penyimpanan yang tepat bisa ditentukan

• Statement untuk mendefinisikan jenis data disebut declarative statement

• Beberapa bahasa pemrograman memiliki sintaks pendeklarasian yang berbeda

• Beberapa contoh program (pendeklarasian data) yang akan diberikan ditulis dalam pseudo-code

Contoh:Constants

pi = 3.141592654Variables

i, qty : integerharga_satuan, harga_beli : realstatus : booleannama :

character(25)

Struktur Data

• Kelompok item data yang terorganisasi yang dianggap sebagai suatu unit

• Disebut juga sebagai jenis data kompleks (complex data type) atau data aggregates

• Beberapa struktur data :– Array (larik)– String– Record– List (daftar)– Tree

Array (Larik)• Set item data yang disusun secara baik menjadi

rangkaian dan diacu atau ditunjuk oleh satu identifierContoh : Nilai = (56 42 89 65 48)

• Item data individual dalam array bisa ditunjuk secara terpisah dengan menyatakan posisinya dalam array itu– Nilai(1) menunjuk 56– Nilai(2) menunjuk 42

• Bilangan yang ditulis dalam tanda kurung menandakan posisi item individual dalam array (disebut juga subscript / indeks)

Array (Larik) lanjut• Variabel bisa digunakan sebagai subscript, misalnya

Nilai(i).– Jika i = 2 maka menunjuk ke Nilai(2) yaitu 42– Jika i = 4 maka menunjuk ke Nilai(4) yaitu 65

• Item data individual dalam suatu array sering disebut elemen

• Matriks– Array yang hanya berisi bilangan dan tidak ada data

alfabetisnya• Klasifikasi Array– Array 1 dimensi– Array multi dimensi

Array Multi Dimensi• Mempunyai elemen-elemen yang disusun ke dalam

baris dan kolom dan digunakan sebagai tabel data• Contoh : Nilai ujian dari mahasiswa satu kelas untuk

beberapa mata kuliah bisa ditempatkan dalam array 2 dimensi

Siswa ke(no. baris)

B. Inggris(kolom 1)

Matematika(kolom 2)

12345

A(1,1) = 56A(2,1) = 42A(3,1) = 89A(4,1) = 65A(5,1) = 48

A(1,2) = 44A(2,2) = 36A(3,2) = 73A(4,2) = 86A(5,2) = 51

Deklarasi Array• Array 1 dimensi– Variables

Nilai : array [1..5] of integerA : array [1..4] of real

• Array 2 dimensi– Variables

A : array [1..5, 1..2] of integer

Penanganan Array

• Metode dasar penanganan array :– Mencari nilai terbesar– Mencari nilai terkecil– Menghitung nilai rata-rata– Menghitung jumlah nilai di bawah rata-rata

• Menyortir Array (Sort)– Buble sort– Straight selection sort

• Mencari/Meneliti Array (Search)– Linear search

Penanganan Array (Lanjut)

• Contoh : Nilai ujian mahasiswa akan dibaca dalam array. Kemudian akan ditampilkan nilai terbesar, nilai terkecil, nilai rata-rata, nilai total, dan jumlah nilai di bawah rata-rata.

• Tahapan penanganan array– Input nilai data ke dalam array– Mengkalkulasi nilai terbesar, terkecil, total, dan rata-

rata– Mengkalkulasi jumlah nilai di bawah rata-rata– Menampilkan hasilnya (output)

String• Rangkaian karakter yang ditangani sebagai

unit data tunggalContoh (string literal) :

“ABC, 32fl2. 3h”“Kucing dalam karung”

Contoh (variabel string) :A = “Universitas”B = “Gunadarma”

• Berada dalam bentuk array karakter 1 dimensi

String (lanjut)

• Fixed-length string (String yang panjangnya tetap)– Mempunyai jumlah tempat karakter yang tetap

yang tersedia (bisa digunakan) untuk penyimpanan data

• Variable-length string (String yang panjangnya berubah-ubah)– Memberi data sejumlah spasi (ruang) sesuai yang

ia perlukan

Deklarasi String

• Fixed-length stringVariables

nama : string[5]

• Variable-length stringVariables

nama : string

Operasi pada String

• Concatenation– Penggabungan dua atau lebih string– Contoh :

A = “Universitas”B = “Gunadarma”C = A + B

makaC = “UniversitasGunadarma”

Operasi pada String [2]• Substring– Mengambil bagian dari suatu string

Contoh A = “Universitas”B = “Gunadarma”C = Left(A, 3)D = Right(B, 5)E = Substr(A, 4, 5)maka

C = “Uni”D = “darma”E = “versi”

Teknik Pencarian ( Searching)

• Teknik Pencarian ( Searching ) pada array adalah mencari suatu nilai yang diinginkan pada tabel array.

• Pencarian di tabel array diklasifikasikan menjadi :– Pencarian sekuensial ( sequential search ).– Pencarian biner ( binary search).– Pencarian sekuensial tidak mensyaratkan tabel terurut.

• Pencarian biner mensyaratkan tabel terurut. Saat array tidak terurut, satu-satunya pencarian yang mungkin dilakukan adalah secara sekuensial.

Deskripsi : Pencarian sekuensial• Diketahui TI bertipe TabInt, telah diisi. Tulis procedure yang

jika diberikan X bernilai integer akan mencari apakah harga X terdapat di TI. Pencarian dilakukan secara berurutan mulai elemen pertama sampai ketemu atau sampai elemen terakhir. Program menghasilkan indeks IX dimana X diketemukan pertama kali. IX diberi harga 0 jika tidak ketemu. Pencarian segera dihentikan begitu harga pertama diketemukan.

• Pendeklarasian array :Const

Idxawal = 1;Idxakhir = 100;

TypeTypeInfo = integer;TabInt = Array [Idxawal..Idxakhir] of TipeInfo;

Var<identifier_variabel> : TabInfo;

Aturan pembuatan program :Procedure InputTabInt (Var TI : TabInt); Procedure SeqSearch (TI : TabInt; X : Integer; Var IX : Integer); Procedure OutputIX (IX: Integer);

Algoritma Procedure SeqSearch (TI : TabInt; X : Integer; Var IX : Integer);i IdxawalfoundFalseWhile i <= Idxakhir . and . not found do

If TI[i] = X thenFound true

Elsei i + 1

EndifEndWhileIf found then

IX iElse

IX 0Endif

Pencarian Biner• Deskripsi :

Diketahui TI bertipe TabInt, telah diisi dan isinya terurut menaik. Tulis prosedur yang jika diberikan X bernilai integer akan mencari apakah harga X ada di TI. Pemeriksaan dilakukan dengan mereduksi elemen tabel array, menjadi separuh jumlah elemen tabel semula, yaitu :– Bandingkan harga yang dicari dengan harga elemen tengah.– Jika sama, berarti ketemu.– Jika yang dicari lebih kecil, berarti pencarian dengan cara yang sama harus

dilakukan terhadap elemen-elemen di belahan atas.– Jika harga yang dicari lebih besar, berarti pencarian dengan cara yang sama

harus dilakukan terhadap elemen-elemen di belahan bawah.

• Prosedur menghasilkan harga indeks IX dimana X diketemukan pertama kali. IX diberi harga 0 jika pencarian tidak ketemu. Pencarian segera dihentikan begitu diketemukan.

Algoritma Procedure BinSearch (TI : TabInt; X : Integer ; Var IX : Integer);

Atas IdxawalBawah IdxakhirTengah ( Atas + Bawah ) div 2While Atas < Bawah . and . TI[Tengah] <> X do

If TI[Tengah] < X thenAtas Tengah + 1

ElseBawah Tengah – 1

EndifTengah ( Atas + Bawah ) div 2;

EndWhileIf TI[Tengah] = X then

IX TengahElse

IX 0Endif

Teknik Pengurutan ( Sorting )• Sorting atau pengurutan data adalah proses yang

sering dilakukan dalam pengolahan data. • Mesin otomatik yang pertama kali lahir adalah

mesin pengurut (masih dipakai sampai saat ini).• Pengurutan dibedakan menjadi dua, yaitu :– Pengurutan internal, yaitu pengurutan terhadap

sekumpulan data yang disimpan dalam media internal komputer, dapat diakses elemennya secara langsung. Pengurutan terhadap array (tabel).

– Pengurutan eksternal, yaitu pengurutan data yang disimpan di memori sekunder, biasanya data bervolume besar sehingga tidak mampu dimuat semuanya di memori primer.

Pengurutan Berdasarkan Seleksi

• Gagasan• Menghasilkan nilai minimum tabel (untuk

efisiensi, hanya indeks dimana harga minimum ditemukan yang dicatat), kemudian menukarnya dengan elemen terujung, “diisolasi” dan tidak diikutsertakan pada proses berikutnya. Proses diulang untuk sisa tabel.

Procedure MaxSort (Var TI : TabInt);Var

I : integer; {indeks untuk traversal array}Pass : integer; {tahapan pengurutan}Temp : integer; {memorisasi harga untuk penukaran}IMin : integer; {indeks, dimana TI[Nmin .. Pass] berharga minimum}

BeginFor Pass = NMin to Nmax – 1 doBegin

{tentukan minimum diantara [Pass .. NMax]}IMax Pass;For I = Pass+1 to Nmax doBegin

If (TI[Max] > TI[I]) thenIMax I;End;{TI[IMax] adalah minimum TI[Pass .. NMax]}{tukar TI[IMax] dengan TI[Pass]}Temp TI[IMax];TI[IMax] TI[Pass];TI[Pass] Temp;{TI[Nmin .. Pass] terurut membesar : TI[NMin] <= TI[NMin+1] <= … <= TI[Pass]}

End;{seluruh tabel TI[Nmin .. NMax] terurut membesar, karena Pass = NMax, maka :} {TI[NMin] <= TI[Nmin+1] <= … <= TI[NMax]} End;

Pengurutan Berdasarkan Penyisipan

• Gagasan• Mencari tempat yang tepat untuk setiap

elemen tabel, dengan secara sequential search, kemudian menyisipkan sebuah elemen tabel yang diproses ke tempat yang seharusnya.

Procedure InsertionSort (Var TI : TabInt);Var

I : integer; {indeks untuk traversal array}Pass : integer; {tahapan pengurutan}Temp : integer; {memorisasi harga untuk penukaran}

Begin{TI[NMin] adalah terurut}For Pass = Nmin+1 to Nmax doBegin

Temp TI[Pass]; {simpan harga TI[Pass] supaya tidak tertimpa pergeseran}{sisipkan elemen ke-Pass dalam TI[NMin .. Pass-1] sambil menggeser}I Pass -1;While ( Temp > TI[I] ) And ( I > NMin) doBegin

TI[I+1] TI[I]; {geser}I I-1; {elemen berikutnya}

End;{(Temp >= TI[I] yaitu tempat yang tepat) atau I=1 harus disisipkan sebagai elemen pertama}If (Temp > TI[I]) then

TI[I+1] Temp; {telah menemukan tempat yang tepat}Else

TI[I+1] TI[I];TI[I] Temp; {sebagai elemen pertama}

End;{Seluruh tabel TI[NMin .. NMax] terurut membesar, karena Pass = NMax, maka :}{TI[NMin] <= TI[Nmin+1] <= … <= TI[Pass]}

End;