Data Structures
Class 3 – Pengenalan Struktur Data dan ADT
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved.
“I will, in fact, claim that the difference
between a bad programmer and a good
one is whether he considers his code or
his data structures more important. Bad
his data structures more important. Bad
programmers worry about the code. Good
programmers worry about data structures
and their relationships.”
Linus Torvalds, 2006
Definisi
• Struktur Data
• adalah cara penyimpanan dan pengorganisasian data-data pada memori komputer secara efektif
sehingga dapat digunakan secara efisien, termasuk operasi-operasi di dalamnya.
• Data
• Data
• adalah representasi dari fakta dunia nyata.
• Data serangkaian item-item dasar.
• Fakta
• adalah keterangan tentang kenyataan yang
dapat disimpan, direkam atau direpresentasikan
dalam bentuk tulisan, suara, gambar, sinyal atau
simbol.
Organizing Data
Any organization for a collection of records
can be searched, processed in any order, or
modified.
The choice of data structure and algorithm
can make the difference between a program
running in a few seconds or many days.
Efficiency
• A solution is said to be efficient if it
solves the problem within its resource
constraints.
• Space
• Space
• Time
• The cost of a solution is the amount of
resources that the solution consumes.
Selecting a Data Structure
Select a data structure as follows:
1. Analyze the problem to determine the
basic operations that must be
supported.
supported.
2. Quantify the resource constraints for
each operation.
3. Select the data structure that best
meets these requirements.
Costs and Benefits
• Each data structure has costs and
benefits.
• Rarely is one data structure better than
another in all situations.
another in all situations.
• Any data structure requires:
• space for each data item it stores,
• time to perform each basic operation,
• programming effort.
Costs and Benefits (cont)
• Each problem has constraints on
available space and time.
• Only after a careful analysis of
problem characteristics can we know
problem characteristics can we know
the best data structure for the task.
• Bank example:
• Start account: a few minutes
• Transactions: a few seconds
• Close account: overnight
• Programmer perlu memahami :
1. Bagaimana struktur data diciptakan dalam komputer. 2. Terdapat perbedaan antara bayang difikiran kita
tentang data, dan cara data tersebut tersimpan dalam memory komputer sebagai sebuah struktur data.
3. Banyak kelebihan dan kekurangan dari bermacam 3. Banyak kelebihan dan kekurangan dari bermacam
struktur data yang harus dipertimbangkan programmer ketika menulis program.
4. Setiap struktur data memiliki operasi-operasi tertentu yang secara alami sesuai dengan struktur data
tertentu.
5. Seringkali operasi-operasi yang dapat dilakukan pada struktur data terpaket langsung dengan struktur data tersebut (data type).
Manfaat
• Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan :
1. Algoritma yang lebih jelas dan tepat, sehingga
menjadikan program secara keseluruhan lebih efisien dan sederhana.
2. Membuat program lebih ringkas, lebih bersih, lebih
elegan, lebih mudah dan lebih mampu berkinerja tinggi (karena efisien dalam penggunaan memori dan waktu).
E.g. satu program berjalan membutuhkan waktu beberapa detik, di mana struktur yang lain mungkin akan
membutuhkan ribuan detik.
3. Supaya data yang disimpan dapat lebih mudah/efisien dalam pengaksesan/pemrosesan data tersebut.
• Secara umum struktur data diklasifikasikan atas :
1. Primitive data structures
1. Primitive data structure
:
• adalah data structures yang dapat dimanipulasi secara langsung oleh machine instructions.
• Dalam bahasa C, beberapa primitive data structures adalah int, float, char, double.
12
2. Non primitive data structures
:
• Tidak dapat dimanipulasi langsung oleh instruksi mesin. • E.g. linked lists, files dll.
• Diklasifikasikan menjadi 2 jenis :
a. linear data structures dan, b. non-linear data structures.
Klasifikasi Struktur Data Dasar
•
Linear Data Structure
:
•
Data structure dimana setiap elemennya
memiliki akses paling banyak pada satu
elemen sebelum dan satu elemen
sesudahnya.
sesudahnya.
• Linear Data Structures :
•
Non-linear Data Structure
:
•
data structure dimana setiap elemennya
dapat mengakses data sebelum dan data
sesudahnya dalam jumlah yang tidak
terbatas.
terbatas.
• Non Linear Data Structures :
Static VS Dynamic Data Structures
•
Static Data Structure:
•
data structure dimana jumlah elemen-elemen
penyusunnya bersifat tetap.
•
Example: Arrays
•
Dynamic Data Structure:
•
data structure dimana jumlah
elemen-elemen penyusunnya bersifat tidak tetap.
bagaimanakah struktur data di-support dalam
bahasa pemrograman?
1. Sebagai fitur built-in pada bahasa
pemrograman.
• Arrays pada umumnya di-support oleh bahasa
tingkat tinggi.
• Linked list pada beberapa bahasa
pemrograman.
pemrograman.
• Classes pada OOP
2. Sebagai fitur yang didefinisikan dalam
library atau paket (package).
Tipe Data, Obyek Data & Struktur Data
• Tipe data adalah jenis data yang mampu ditangani
oleh suatu bahasa pemrograman pada komputer.
• Tiap-tiap bahasa pemrograman memiliki tipe data
yang memungkinkan:
• Deklarasi terhadap variabel tipe data tersebut. • Deklarasi terhadap variabel tipe data tersebut.
• Menyediakan kumpulan operasi yang mungkin terhadap variabel bertipe data tersebut.
• Jenis obyek data yang mungkin.
Pascal :
Str25 = String[25];
TBookRec = Record
Title, Author, ISBN : Str25; Price : Real;
End;
End;
i : Integer;
myIntArray : Array[1..20] of Integer;
myBoolArray : Array[1..20] of Boolean;
C :
char name[100];
int age;
Tipe Data, Obyek Data & Struktur Data
• Obyek Data adalah kumpulan elemen yang mungkin
untuk suatu tipe data tertentu.
• Mis: integer mengacu pada obyek data -32768 s/d 32767, byte 0 s/d 255, string adalah kumpulan karakter maks 255 huruf.
• Struktur Data adalah cara penyimpanan dan
pengorganisasian data-data pada memori komputer
secara efektif sehingga dapat digunakan secara
Tipe Data Standar
Tipe data standar merupakan tipe data yang tersedia
pada kebanyakan komputer sebagai
built-in features
.
Tipe data standar yaitu :
-Integer
-Integer
-Real
- Boolean
- Char
Tipe Data
• Bahasa pemrograman bisa memiliki tipe data:
1. Built-in (tipe data standar) :
• sudah tersedia oleh bahasa pemrograman tersebut
• Tidak berorientasi pada persoalan yang dihadapi. • Contoh : int, float, dll.
2. UDT : User Defined Type, dibuat oleh pemrogram.
• Mendekati penyelesaian persoalan yang dihadapi • Mendekati penyelesaian persoalan yang dihadapi
• Contoh: record pada Pascal, struct pada C, class pada Java
3. ADT : Abstract Data Type
• memperluas konsep UDT dengan menambahkan pengkapsulan atau enkapsulasi, berisi sifat-sifat dan operasi-operasi yang bisa dilakukan terhadap kelas tersebut.
ADT (Abstract Data Type) atau Tipe Data Bentukan
…
• ADT
adalah
sebuah
tipe
data
yang
propertinya
(yaitu
data
dan
operasi
)
dispesifikasikan
tanpa
tergantung
pada
implementasi tertentu.
• Contoh : Stack ADT.
• ADT dapat memiliki beberapa implementasi
berbeda.
• Implementasi yang berbeda dapat memiliki
efisiensi yang berbeda.
Abstract Data Types (ADTs)
• An abstract data
type (ADT) is an
abstraction of a
data structure
• An ADT specifies:
• Example: ADT modeling a
simple stock trading
system
• The data stored are buy/sell
orders
26• An ADT specifies:
• Data stored
• Operations on the
data
• Error conditions
associated with
operations
orders
• The operations supported
are
• order buy(stock, shares, price) • order sell(stock, shares, price) • void cancel(order)
• Error conditions:
• Buy/sell a nonexistent stock • Cancel a nonexistent order