Struktur Data Pertemuan 1
Struktur Data Pertemuan 1
Referensi
KONTRAK KULIAH
Toleransi keterlambatan 30 menit berlaku
bagi dosen dan mahasiswa
Pakaian SOPAN, berkerah, bebas rapi dan
bersepatu.
Tugas dikumpulkan sesuai deadline masingmasing tugas. Keterlambatan pengumpulan :
minus 10% dari nilai (per hari
keterlambatan)
NILAI :
NTS terdiri dari:
Absensi
: 10%
Tugas
: 40%
UTS
: 50%
NAS terdiri dari:
Absensi
: 10%
Tugas
: 30%
Final Project
: 30%
UAS
: 30%
MATERI KULIAH
Minggu
ke-
Pendahuluan :
Kontrak Perkuliahan
Pengenalan algoritma dan struktur data:
Review konsep variable, Tipe data, dan pengendali program, fungsi &
prosedur, array
Pengenalan konsep struktur data dan tipe data abstrak
Pengenalan konsep pemrograman object oriented
Stack:
Definisi Stack
Contoh implementasi stack
Struktur data stack
Operasi Push() dan Pop()
Minggu
ke-
Queue:
Definisi Queue
Contoh implementasi queue
Struktur data queue
Operasi Insert() dan Remove()
Studi kasus: parkir mobil, proses CPU
Tree:
Definisi Tree
N-ary tree
Binary Tree
Tree traversal: Depth First Traversal (In order, Pre order, Post order), Breadth
First Traversal
Contoh implementasi tree dalam Ruby
8
9
UTS
Searching :
Sequential search
Binary Search
Search Trees:
Binary Search Tree
AVL Search Tree
Minggu
ke-
10
Sorting:
Bubble sort
Selection sort
Insertion sort
Quick sort, Merge sort, shell sort (dipelajari secara mandiri)
11
12
Graph:
Definisi Graph
Contoh implementasi graph
Struktur data graph
Graph Traversing: Depth First, Breadth First
Shortest Path and Minimum Spanning Trees
13
14
UAS
What is programming?
PROGRAM = ALGORITMA + STRUKTUR
DATA
ALGORITMA :
SEQUENTIAL
BRANCHING
LOOPING/ REKURSI
STRUKTUR DATA :
ARRAY
LINKED LIST
Float
Complex (standard library)
BigDecimal (standard library)
Rational (standard library)
Contoh operasi aritmetika pada number:
x=5/2
y=5.0/2
z=5/2.0
x=5%2
[1, 2, 3]
[[1,2],[3,4],[5]]
empty=Array.new
zeros=Array.new(4,0)
count=Array.new(3) {|i| i+1}
CONTROL STRUCTURES
SEQUENTIAL/ URUTAN
Program dijalankan mulai dari perintah
paling atas/ awal sampai paling akhir
secara berurutan/ sekuensial.
BRANCHING/ PERCABANGAN
Penyeleksian kondisi (TRUE/ FALSE) untuk
menentukan statemen selanjutnya
LOOPING/ PERULANGAN
Mengulangi proses selama syarat/ kondisi
tertentu masih terpenuhi
Sequential/Urutan
Entry
Action 1
Action 2
Action 3
Exit
Branching
Entry
Condition 1
TRUE
FALSE
Action 1
Condition 2
FALSE
TRUE
Action 2
Action 3
Exit
IF - ELSE
Biasa digunakan untuk seleksi nilai/ data
Kondisi jamak ((kondisi_1) &&/ ||
(kondisi_2))
if (kondisi=TRUE) jalankan_statement_ini
if (kondisi=TRUE) statement_1
else statement_2
// if kondisi=FALSE
if (kondisi=TRUE) statement_1
else if (kondisi=TRUE) statement_2
else statement_3
// if kondisi=FALSE
if (kondisi=TRUE)
if (kondisi=TRUE) nested_statement
If - else
If syntax
if var == 10
print Variable is 10
end
If Else Syntax
if var == 10
print Variable is 10
else
print Variable is something else
end
If Else If Syntax
SWITCH - CASE
Biasa digunakan untuk membuat menu dalam
program
switch (variabel_pilihan) {
case nilai_1 : statemen_1; break;
case nilai_2 : statemen_2; break;
case nilai_3 : statemen_3; break;
default: statemen_default;
}
Bisa berbentuk nested/ bersarang
Switch case
Switch Case syntax
[variable = ] case
when bool_condition
statements
when bool_condition
statements
else # the else clause is optional\
statements
end
Looping
Entry
Action 1
Action 2
Looping 1
Y
T
if 1
if 2
Looping 2
T
Action 3
Exit
Function or Method
Contoh lain:
# Convert polar coordinates to Cartesian coordinates
def cartesian(magnitude, angle)
[magnitude*Math.cos(angle), magnitude*Math.sin(angle)]
end
ADT
Cakupan ADT
Struktur linier:
Stack
Queue
Deque
List
Tree
Heap
Priority Queue
Hash-table
Set
String
Graph
Hirarki class
Dua jenis class dalam Ruby: Abstract dan Concrete
Abstract class:
Class yg mendefinisikan sebagian dari
implementasinya
Kita tidak dapat membuat objek dari abstract class
Digunakan sebagai base class darimana sebuah
class diturunkan
Class turunan meng-override abstract methods
Concrete Class:
Kita dapat membuat objek dari concrete class
dengan .new method
Next Week
Struktur data linked list dan implementasinya
dalam Ruby
TERIMA KASIH