• Tidak ada hasil yang ditemukan

STRUKTUR DATA Komting: ADITYA (E), SIGIT :: Fetty Tri Anggraeny ::

N/A
N/A
Protected

Academic year: 2021

Membagikan "STRUKTUR DATA Komting: ADITYA (E), SIGIT :: Fetty Tri Anggraeny ::"

Copied!
37
0
0

Teks penuh

(1)

STRUKTUR DATA

Komting: ADITYA 08785523198 (E), SIGIT 085645119007

(2)

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

(3)

Tujuan Mata Kuliah

Mahasiswa dapat menjelaskan:

1.

Struktur data komputer dan pengaruhnya terhadap

program

2.

Algoritma dan struktur data fundamental

3.

Pemilihan penggunaan struktur data dan algoritma yang

tepat untuk menyelesaikan masalah standar

4.

Implementasi algoritma dan struktur data yang berorientasi

objek

(4)

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/opus 8/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

(5)

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%

(6)

MATERI KULIAH

Review materi AlPro

Sorting

Searching

Linked List

Stack

Queue

(7)

Satuan Acara Perkuliahan

Minggu 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 Node

Implementasi 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()

(8)

Satuan Acara Perkuliahan

Minggu 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 Ruby Implementasi Stack dan Queue dengan linked list di Ruby

6 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

7 Contoh implementasi tree dalam Ruby

8 UTS

9 Searching :

• Sequential search • Binary Search Search Trees:

• Binary Search Tree • AVL Search Tree

(9)

Satuan Acara Perkuliahan

Minggu 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

(10)

What is programming?

PROGRAM = ALGORITMA + STRUKTUR DATA

ALGORITMA :

SEQUENTIAL

BRANCHING

LOOPING/ REKURSI

STRUKTUR DATA :

ARRAY

LINKED LIST

(11)

Review Materi AlPro

Variabel dan tipe data

Kontrol Alur

Fungsi/Method

Array

(12)

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

(13)

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

(14)

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}

(15)

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”

(16)

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

(17)

Sequential/Urutan

Action 1 Action 2 Action 3 Entry Exit

(18)

Branching

Entry Condition 1 Action 1 Condition 2 Action 3 Action 2 Exit TRUE FALSE TRUE FALSE

(19)

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)

(20)

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

(21)

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;

}

(22)

Switch case

Switch Case syntax

[variable = ] case

when bool_condition

statements

when bool_condition

statements

else # the else clause is optional\

statements

(23)

Looping

Action 1 Action 2 Action 3 Entry Exit if 1 if 2 Looping 1 Looping 2 Y Y T T

(24)

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

(25)

Looping dengan “until”

#Count back up to 10 x=0 until x>10 do puts x x=x+1 end

(26)

Looping dengan “for in”

array=[1,2,3,4,5]

for element in array

puts element

(27)

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

(28)

Method with return value

def factorial(n)

raise "bad argument" if n < 1

return 1 if n == 1

n * factorial(n-1)

end

(29)

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)

(30)

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

(31)

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

(32)

Cakupan ADT

Struktur linier:

Stack

Queue

Deque

List

Tree

Heap

Priority Queue

Hash-table

Set

String

Graph

(33)

Hirarki class di Ruby

(34)

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

(35)

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

puts Cheetah.new.move

# => "Running!"

(36)

Contoh concrete class

class Die

def roll

1+rand(6);

end # akhir method roll

end # akhir class Die

dice=Die.new;

puts dice.roll

(37)

Next Week

Struktur data linked list dan implementasinya dalam Ruby

Referensi

Dokumen terkait

Teknik analisis data yang digunakan dalam penelitian ini adalah analisis regresi linier berganda ( multiple regression analysis ), yaitu metode analisis untuk

Metode dengan perluasan data menjadi sejumlah copy-copy data asli yang diatur dengan satu copy data asli dengan kasus kontrol yang dibalik untuk mendapatkan penghitungan yang

Skripsi ini berjudul Penerapan Problem Based Learning Berbantuan Video untuk Meningkatkan Hasil Belajar IPA Siswa kelas 4 SD N 5 Sindurejo Kecamatan Toroh

Volume penjualan adalah total penjualan yang dinilai dengan unit dalam periode tertentu untuk mencapai laba yang maksimal sehingga dapat menunjang pertumbuhan

Dengan melihat kondisi di atas maka dianggap perlu adanya suatu wadah pemerintahan untuk mengkoordinasi pemer intahan terhadap wilayah kecamatan, maka dibentuklah suatu

Penelitian ini bermaksud mengevaluasi pelaksanaan Sistem Manajemen Mutu ISO 9001:2008 pada SMK Negeri 2 Salatiga, berdasarkan 8 (delapan) prinsip standar sistem manajemen

Salah satu rekomendasi dari studi Masterplan Pengembangan Wilayah Sungai Walanae Cenranae, adalah pemanfaatan tampungan yang ada pada Danau Tempe untuk mengairi

1) Penyampaian pelajaran menjadi lebih baku, setiap siswa yang melihat atau mendengar penyajian melalui media menerima pesan yang sama. Meskipun guru menafsirkan