Uploaded by User57849

Pengenalan Struktur Data

advertisement
Kumpulan Materi Kuliah
http://hendroagungs.blogspot.co.id/
Pengenalan
Struktur Data
MATERI KULIAH
•
•
•
•
•
•
•
Review materi AlPro
Sorting
Searching
Linked List
Stack
Queue
Graph dan Tree
What is programming?
• PROGRAM = ALGORITMA + STRUKTUR DATA
• ALGORITMA :
• SEQUENTIAL
• BRANCHING
• LOOPING/ REKURSI
• STRUKTUR DATA :
• ARRAY
• LINKED LIST
• ADT : STACK, QUEUE, GRAPH, TREE, DLL
Review Materi AlPro
•
•
•
•
Variabel dan tipe data
Kontrol Alur
Fungsi/Method
Array
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/ 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
Sequential/Urutan
Entry
Action 1
Action 2
Action 3
Exit
Branching
Entry
Condition 1
TRUE
FALSE
Action 1
Condition 2
FALSE
TRUE
Action 2
Exit
Action 3
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
• 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
Entry
Action 1
Action 2
Looping 1
Y
Y
T
if 1
if 2
Looping 2
T
Action 3
Exit
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
Looping dengan “until”
#Count back up to 10
x=0
until x>10 do
puts x
x=x+1
end
Looping dengan “for in”
array=[1,2,3,4,5]
for element in array
puts element
end
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 value
def 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 di Ruby
Larger Image
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
end
end
class Cheetah < Animal
def initialize
@type = :Cheetah
end
def move
"Running!"
end
end
Contoh concrete class
class Die
def roll
1+rand(6);
end # akhir method roll
end # akhir class Die
dice=Die.new;
puts dice.roll
]
Download