Struktur Data Pertemuan 1
-
Upload
denichi-kudo -
Category
Documents
-
view
77 -
download
6
description
Transcript of Struktur Data Pertemuan 1
Tentang Mata Kuliah ini
• ISI3002 – Struktur Data• 3 SKS: 3 x 50 menit = 2 jam 30 menit• Prasyarat: tidak ada• Nilai kelulusan: C• Materi kuliah: http://elearning.upnjatim.ac.id
Struktur Data
Tujuan Mata Kuliah
Mahasiswa dapat menjelaskan:1.Struktur data komputer dan pengaruhnya terhadap program2.Algoritma dan struktur data fundamental3.Pemilihan penggunaan struktur data dan algoritma yang tepat untuk menyelesaikan masalah standar4.Implementasi algoritma dan struktur data yang berorientasi objek
Referensi[1] Bruno R. Preiss, B.A.Sc., M.A.Sc. Ph.D., P.Eng., Data Structures and Algorithms with Object-Oriented Design Patterns in Ruby, 2004. [Online] http://www.brpreiss.com/books/opus8/index.html[2] Dave Thomas, Chad Fowler, Andy Hunt, Programming Ruby: The Pragmatic Programmers’ Guide (2nd edition), 2004.[3] David Flanagan, Yukihiro Matsumoto, The Ruby Programming Language, O’Reilly, 2008
!!! No [2] dan [3] tersedia di e-learning dalam bentuk e-book
KONTRAK KULIAH• Toleransi keterlambatan 30 menit berlaku bagi dosen
dan mahasiswa• Pakaian SOPAN, berkerah, bebas rapi dan bersepatu.• Tugas dikumpulkan sesuai deadline masing-masing
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%
Satuan Acara PerkuliahanMinggu ke- Topik Pokok Bahasan
1 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
2 Single Linked List :•Linked List sebagai array yang dinamis•Struktur data Linked List•Operasi Insert new Node•Operasi Search Node•Operasi Delete NodeImplementasi Single Linked List dalam Ruby:•Elemen List•Class LinkedList•Methods (initialize, purge, first, last, prepend, append, clone, extract, insertAfter, insertBefore)
3 Stack:•Definisi Stack•Contoh implementasi stack•Struktur data stack•Operasi Push() dan Pop()•Studi kasus: cek kurung, palindrome, evaluasi infix
Satuan Acara PerkuliahanMinggu ke- Topik Pokok Bahasan
4 Queue:•Definisi Queue•Contoh implementasi queue•Struktur data queue•Operasi Insert() dan Remove()•Studi kasus: parkir mobil, proses CPU
5 Implementasi Stack dan Queue dengan array di RubyImplementasi Stack dan Queue dengan linked list di Ruby
6 Tree:Definisi TreeN-ary treeBinary TreeTree traversal: Depth First Traversal (In order, Pre order, Post order), Breadth First TraversalContoh implementasi tree dalam Ruby
7 Contoh implementasi tree dalam Ruby
8 UTS
9 Searching :• Sequential search• Binary Search
Search Trees:• Binary Search Tree• AVL Search Tree
Satuan Acara PerkuliahanMinggu ke- Topik Pokok Bahasan
10 Sorting:•Bubble sort•Selection sort•Insertion sort•Quick sort, Merge sort, shell sort (dipelajari secara mandiri)
11 Contoh implementasi sorting dan searching dalam Ruby
12 Graph:•Definisi Graph•Contoh implementasi graph•Struktur data graph•Graph Traversing: Depth First, Breadth First•Shortest Path and Minimum Spanning Trees
13 Demo final project
14 UAS
What is programming?• PROGRAM = ALGORITMA + STRUKTUR DATA• ALGORITMA :
• SEQUENTIAL• BRANCHING• LOOPING/ REKURSI
• STRUKTUR DATA :• ARRAY• LINKED LIST
• ADT : STACK, QUEUE, GRAPH, TREE, DLL
Variabel dan tipe data Ruby• Numeric class
• Integer• Fixnum• Bignum
• 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
Variabel dan tipe data Ruby• String class
• Single-quoted string literals:• S=‘Ini string sederhana dalam Ruby’
• Double-quoted string literals:• Lebih fleksibel• S="360 degrees=#{2*Math::PI} radians“
output: S="360 degrees=6.283185307179586 radians”• String.new membuat tipe data string baru dan kosong
(empty string)• Append operator (<<): greeting=“Hello” greeting<<“ “<<“World” puts greeting
Variabel dan tipe data Ruby• Concat operator (+):planet=“Earth”
“Hello”+” “+planet• Array class
• Array di Ruby tidak memiliki tipe dan resizable• Contoh:
• [1, 2, 3]• [[1,2],[3,4],[5]]• empty=Array.new• zeros=Array.new(4,0) • count=Array.new(3) {|i| i+1}
• More on Array in resource [3] chapter 9.5.2
Variabel dan tipe data Ruby
• Object class• Ruby adalah bahasa pemrograman berorientasi objek all
values are objects• Semua objek diturunkan dari class Object.• Untuk mengetahui class dari object, gunakan
perintah .class• Contoh: o=“test”
o.class #returns an object with String class
CONTROL STRUCTURES
• SEQUENTIAL/ URUTANProgram dijalankan mulai dari perintah paling atas/ awal sampai paling akhir secara berurutan/ sekuensial.
• BRANCHING/ PERCABANGANPenyeleksian kondisi (TRUE/ FALSE) untuk menentukan statemen selanjutnya
• LOOPING/ PERULANGANMengulangi proses selama syarat/ kondisi tertentu masih terpenuhi
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_2else 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• Here’s the key difference between Ruby and most other languages. Note
that “else if” is actually spelled “elsif” without the e.• if var == 10 print “Variable is 10″elsif var == “20″ print “Variable is 20″else print “Variable is something else”end
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 dengan “while”
x=10 #initialize a loop counter variable
while x>= 0 do #Loop while x is greater than/equal to 0
puts x #Print out the value of x
x=x-1 #Subtract 1 from x
end #The loop ends here
Function or Method• Sekelompok blok kode yang memiliki parameter dan
berasosiasi dengan 1 atau lebih objek• Contoh method:# Define a method named 'factorial' with a single # parameter 'n' def factorial(n) if n < 1 # Test the argument value for validity raise "argument must be > 0" elsif n == 1 # If the argument is 1 1 # then the value of the method invocation is 1 else # Otherwise, the factorial of n is n times n * factorial(n-1) # the factorial of n-1 end
end
Method with return valuedef factorial(n)
raise "bad argument" if n < 1
return 1 if n == 1
n * factorial(n-1)
end
Method with more than 1 return values
#Convert the Cartesian point (x,y) to #polar (magnitude, angle) coordinates def polar(x,y) return Math.hypot(y,x), Math.atan2(y,x)
end
Contoh lain:# Convert polar coordinates to Cartesian coordinates def cartesian(magnitude, angle) [magnitude*Math.cos(angle), magnitude*Math.sin(angle)] end
Cara pemanggilan method:distance,theta=polar(x,y)x,y=cartesian(distance,theta)
Tipe Data Abstrak (Abstract Data Type – ADT)• ADT adalah model formal dari struktur data yang
menspesifikasikan:• Tipe data yang disimpan• Operasi yang dapat dilakukan• Tipe parameter dari operasi tersebut
• ADT menspesifikasikan operasi apa yang dapat dilakukan, bukan bagaimana melakukan operasi tersebut
ADT• Objek pada Ruby adalah sebuah abstraksi.• Tingkat abstraksi meliputi: atribut (nama, alamat, nilai, masa
hidup, cakupan, tipe, dan ukuran)• Contoh ADT: Fixnum
• Jika kita membuat objek, x, bertipe Fixnum, kita tahu bahwa x dapat merepresentasikan integer dalam range [-231, 231-1] dan kita dapat melakukan operasi penambahan, pengurangan, perkalian, dan pembagian
• Kita tidak perlu tahu bagaimana cara yang dilakukan Fixnum untuk melakukan operasi tersebut, hanya perlu tahu operasi apa yg ada pada Fixnum
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
Contoh abstract class
class Animal def initialize end def move endend
class Cheetah < Animal def initialize @type = :Cheetah end def move "Running!" end end
puts Cheetah.new.move # => "Running!"
Contoh concrete class
class Die def roll 1+rand(6); end # akhir method rollend # akhir class Die
dice=Die.new;puts dice.roll ]