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;
Top Related