STRUKTUR DATA
CONTROL STRUCTURES SEQUENTIAL/ URUTAN BRANCHING/ PERCABANGAN 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 Action 1 Action 2 Action 3 Entry Exit
Branching Entry Condition 1 Action 1 Condition 2 Action 3 Action 2 Exit TRUE FALSE
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 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 Else Syntax 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 else # the else clause is optional\ end
Looping Action 1 Action 2 Action 3 Entry Exit if 1 if 2 Looping 1
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
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)] 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: Tree Heap Priority Queue Hash-table Set Stack Queue Deque List Tree Heap Priority Queue Hash-table Set String Graph
Contoh abstract class class Animal def initialize end def move class Cheetah < Animal def initialize @type = :Cheetah end def move "Running!" puts Cheetah.new.move # => "Running!"
Contoh concrete class class Die def roll 1+rand(6); end # akhir method roll end # akhir class Die dice=Die.new; puts dice.roll ]