Professional Documents
Culture Documents
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, OReilly, 2008
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 Tugas UTS NAS terdiri dari: Absensi Tugas Final Project UAS : 10% : 40% : 50% : : : : 10% 30% 30% 30%
MATERI KULIAH
Review materi AlPro Sorting Searching Linked List Stack Queue Graph dan Tree
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 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) Stack: Definisi Stack Contoh implementasi stack Struktur data stack Operasi Push() dan Pop() Studi kasus: cek kurung, palindrome, evaluasi infix
5 6
7 8
UTS
Searching : Sequential search Binary Search Search Trees: Binary Search Tree AVL Search Tree
10
11 12
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
String.new membuat tipe data string baru dan kosong (empty string) Append operator (<<): greeting=Hello greeting<< <<World puts greeting
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 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
Heres 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; }
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 if 1 T if 2
Looping 2
T Action 3 Exit
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
Contoh lain:
# Convert polar coordinates to Cartesian coordinates def cartesian(magnitude, angle) [magnitude*Math.cos(angle), magnitude*Math.sin(angle)] end
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
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