DASAR PEMROGRAMAN RUBY

Sebagai bahasa scripting yang berbasis interpreter, Ruby menawarkan modus interaktif, yakni Interactive Ruby yang disingkat dengan irb. Untuk masuk ke modus interaktif Ruby, Anda cukup mengetikkan irb pada command prompt shell Anda, untuk keluar Anda cukup menekan tombol Ctrl-D atau ketikkan exit. Anda dapat menambahkan opsi—simpleprompt pada irb agar bentuk prompt-nya berubah menjadi >>.

Di samping itu, tentunya program Ruby juga dapat disimpan dalam file berextension ‘.rb’. Sama halnya seperti Python, modus interaktif Ruby juga dapat digunakan sebagai kalkulator untuk perhitungan sederhana. Kemampuan menghitung Ruby tidak kalah jika dibandingkan dengan Python. Konon, Ruby memiliki kecepatan eksekusi program yang lebih cepat dibandingkan dengan Python.

$ irb —simple-prompt
>> 2 + 3 - 1
=> 4
>> 3 * 2 / 2
=> 3
>> 4 % 3 ** 2
=> 4
>> 5.0/2.0
=> 2.5

Untuk tipe data angka yang dapat ditangani oleh Ruby, akan dibahas lebih detail
pada bagian bawah. Sekarang kita akan mengenal lebih jauh tentang Ruby, terutama
sintaks–sintaks dasarnya.

1. Aturan penamaan variabel
Karena Ruby bersifat dynamic-typing, Anda tidak perlu mendeklarasikan tipe dan variabel
yang ingin Anda gunakan seperti pada bahasa C. Anda cukup memasukkan nilai ke variabel
yang ingin Anda pakai. Aturan penamaan variabel sama dengan aturan penamaan variabel pada umumnya, yakni tidak boleh dimulai dengan angka dan tidak memakai keyword penting dari bahasa tersebut.

Berikut contoh deklarasi variabel:
Contoh valid:
x = 888
ini_variabel_string = “halo”

Contoh tidak valid:
8x = 888
while = “halo” # while adalah
reserved keyword



2. Konstanta
Konstanta tidak lain adalah sebuah variabel yang isinya tetap (tidak berubah). Konstanta
di Ruby dideklarasikan dengan huruf kapital pada huruf pertama. Suatu konstanta tetap dapat diubah nilainya. Pemberian status konstanta pada suatu variabel hanya akan memberikan suatu peringatan apabila kita mengubah isi konstanta tersebut.

>> Pi = 3.14
=> 3.14
>> Pi = 3.1428
(irb):2: warning: already
initialized constant Pi
=> 3.1428
>> Pi
=> 3.1428

3. Input OutputUntuk meminta input-an dari user, kita menggunakan perintah gets. Sedangkan untuk output ke layar monitor, kita dapat menggunakan puts, print maupun printf.

>> puts “Halo, pa kabar ?”
Halo, pa kabar?
=> nil
>> print “Halo, pa kabar ?”
Halo, pa kabar ?=> nil
>> nama = gets
Eric
=> “Eric\n”
>> printf “Nama saya %s”, nama
printf “Nama saya %s”, nama
Nama saya Eric
=> nil
Adapun perbedaan antara puts , print dan printf yakni di mana puts akan menambahkan
karakter newline(‘\n’) pada akhir string dan parameternya harus string, sedangkan print hanya mencetak string tanpa menambahkan karakter newline, printf sama dengan print; bedanya printf mengenal formatting seperti %s untuk string,%f untuk float, %d untuk integer, dan
seterusnya. Perintah printf ini sama dengan perintah printf di bahasa C.

4. Struktur program
Program Ruby umumnya juga memakai indentasi seperti bahasa Python. Akan tetapi
indentasi tidak mutlak harus dilakukan, karena Ruby menggunakan keyword end
untuk menandakan akhir dari suatu bagian program.


5. Lain-lainMungkin pada beberapa contoh di atas, Anda sering melihat tulisan nil. Nil berarti suatu objek di Ruby sama dengan NULL di bahasa C. Nil berarti hasil eksekusi perintah tersebut tidak mengembalikan objek apapun alias nil (tidak memiliki return value). Misalkan perintah puts hanya mencetak string ke layar dan tidak mengembalikan objek apapun untuk disimpan alias nil. Akan tetapi lainnya halnya dengan a = “halo” akan mengembalikan objek String “halo” yang akan disimpan dalam variabel a.

Untuk komentar pada program Ruby, Anda dapat menggunakan tanda # . Untuk
lebih dari satu statement pada satu baris , Anda dapat menggunakan pemisah ‘;’. Sedangkan
untuk statement yang lebih dari satu baris, Anda dapat menggunakan tanda ‘\’.

>> a = 1#Variabel a berisi 1
=> 1
>> print “Halo “; puts “ apa
kabar ?”
Halo apa kabar ?
=> nil
>> b = 1 + 3 + 5 \
?> + 7 + 9
=> 25

Seperti umumnya untuk contoh pertama program, kita akan membuat program “Hello World !”. Berikut contohnya:
#hello.rb
#!/usr/bin/env ruby
puts “Hello World !”
Program di atas akan mencetak tulisan “Hello World !” pada console Anda. Untuk menjalankan hello.rb, Anda cukup mengetikkan ruby hello.rb ataupun dapat mengubah file permission menjadi executable dengan perintah chmod +x hello.rb dan menjalankannya.
$ cat > hello.rb
$ ruby hello.rb
Hello World !
$ chmod +x hello.rb
$ ./hello.rb
Hello World !

Sebelum melangkah lebih lanjut, kita perlu mengetahui perbedaan objek dengan
kelas. Objek adalah suatu unit data. Sedangkan kelas adalah jenis dari objek tersebut.
Misalnya ada dua angka 5 dan 8 keduanya adalah objek yang berbeda, akan tetapi
mereka tergolong kelas yang sama Integer, tepatnya kelas FixNum.

Di samping itu, Anda juga perlu mengerti tentang metode suatu kelas. Metode adalah
suatu hal yang dapat dilakukan pada suatu objek. Untuk mengetahui tipe/kelas dari
suatu objek, kita dapat menggunakan metode class ; sedangkan apabila kita ingin mengetahui metode-metode apa saja yang berlaku umum untuk objek tersebut, Anda dapat
metode methods.
>> a = 1
=> 1
>> a.class
=> Fixnum
>> a.methods
=> [“to_a”, “%”,
“instance_eval”, “<<“,
“prec_i”, “coerce”, “&”,
“type”, “>>”, “ceil”,
“protected_methods”, “div”,
“extend”, ...]

Setelah berkenalan dengan dasar-dasar interpreter Ruby, kini saatnya untuk membahas
beberapa tipe data dasar yang disediakan Ruby yang tentunya merupakan instansi dari kelas–kelas mengingat Ruby adalah bahasa berorientasi objek yang murni. Di samping itu,
kita juga akan membahas beberapa metode yang umum dari kelas– kelas tersebut.

1. Angka
Ruby dapat menangani angka baik yang bertipe integer maupun float. Untuk tipe data
Integer di Ruby, kelas Integer dibagi dalam dua kelas yakni FixNum dan BigNum. Angka
dengan batas -230 sampai 230–1 tergolong dalam kelas FixNum; apabila suatu angka telah melampaui batas tersebut, maka akan digolongkan dalam kelas BigNum. Karena Ruby bersifat dynamic–typing, Anda tidak perlu melakukan konversi dari FixNum ke BigNum karena konversi akan dilakukan secara otomatis. Sedangkan untuk angka yang bertipe float, Ruby akan menganggap objek angka tersebut merupakan instansi dari kelas Float.

Seperti bahasa pemrograman umumnya, pada Ruby Anda dapat menggunakan prefiks (awalan) untuk menandakan arti angka tersebut, misalya untuk menyatakan bilangan negatif, 0 untuk bilangan oktal , 0b untuk bilangan biner dan 0x untuk bilangan heksadesimal serta e untuk bilangan eksponensial. Untuk mempermudah penulisan suatu angka dengan nilai yang sangat besar, Anda dapat membubuhkan karakter _ pada penulisan angka (karakter _ tidak akan disimpan, hanya untuk membantu saja).

>> a = 2
=> 2
>> a.class
=> FixNum
>> a = a ** 31
=> 2147483648
>> a.class
=> BigNum
>> 188_888_000_000
=> 188888000000
>> 0x6AF
=> 1711
>> 1.89e+18
=> 1.89e+18
>> b = 1.4
=> 1.4
>> b.class
=> Float

2. String
Tipe data String di Ruby sama dengan tipe data String pada bahasa pemrograman lain umumnya. Untuk membuat tipe data String, anda dapat menggunakan kutip satu ‘ ataupun kutip dua “ . Adapun perbedaan di antara keduanya, yakni di mana objek String yang dibuat dengan kutip dua “ akan mengerti karakter khusus seperti ‘\n’,’\r’,’\b’ ,dsb. ; sedangkan karakter dengan objek String yang dibuat dengan kutip satu ‘ tidak bisa menerjemahkan karakter khusus di atas.

Perhatikanlah contoh berikut:
>> a = “Hello\n”
=> “Hello\n”
>> print a
Hello
=> nil
>> b = ‘Hello\n’
=> “Hello\\n”
>> print b
Hello\n=> nil

Kelas String kaya akan metode-metode yang powerful. Anda dapat mencoba beberapa
di antaranya seperti berikut ini.
length—untuk mengetahui panjang suatu string.
capitalize—untuk mengubah huruf pertama pada awal kalimat menjadi huruf kapital. downcase—mengubah string menjadi huruf kecil.
upcase—mengubah string menjadi huruf besar.
swapcase—mengubah objek string dengan huruf kecil diubah menjadi huruf kapital dan sebaliknya.
strip—membuang karakter whitespace di awal dan akhir string.
reverse—membalikkan string.
include ? str—mengembalikan true jika substring str terdapat dalam string dan false jika tidak ada.
chop—membuang karakter terakhir dari string.

Salah satu hal yang unik dari Ruby adalah Anda dapat menambahkan tanda ‘!’ di akhir
metode untuk menandakan metodenya bersifat destruktif di mana hasil metode tersebut berdampak langsung pada objeknya.

>> “Hello”.length
=> 5
>> “hello”.capitalize
=> “Hello”
>> “HELlo”.downcase
=> “hello”
>> “HeLLo”.upcase
=> “HELLO”
>> “hElLo”.swapcase
=> “HeLlO”
>> “hello”.reverse
=> “olleh”
>> “ hello “.strip
=> “hello”
>> “helloo”.chop
=> “hello”
>> “hello”.include? “h”
=> true
>> a = “ Hello “
=> “ Hello “
>> a.strip
=> “Hello”
>> a
=> “ Hello “
>> a.strip!
=> “Hello”
>> a
=> “Hello”

3. Array
Tipe data Array di Ruby hampir sama dengan tipe data array pada bahasa pemrograman
lain umumnya. Tipe data Array di Ruby sama dengan tipe data list di Python. Untuk membuat suatu objek Array baru, Anda dapat menggunakan literal Array [] ataupun konstruktor Array.new. Isi array dapat berupa objek apapun baik angka, string, maupun objek lain termasuk objek array itu sendiri. Untuk mengakses elemen objek Array ini, kita menggunakan indeks di mana indeks awal dimulai dari 0 sampai panjang array – 1. Anda juga dapat menggunakan indeks negatif di mana indeks -1 berarti elemen terakhir , -2 berarti elemen kedua terakhir, dan seterusnya.

Apabila kita mencoba mengakses elemen Array pada indeks yang di luar jangkauan, pernyataan tersebut tidak akan menyebabkan error seperti IndexError : list index out of range
di Python, Ruby akan mengembalikan objek nil. Untuk mengubah isi array ataupun menambahkan data pada objek Array dengan indeks tertentu, kita bisa menggunakan statement biasa seperti array[indeks] = nilai baru. Apabila kita ingin membuat objek Array
yang berisi string, akan repot sekali untuk menambahkan tanda kutip pada setiap elemen Array. Hal tersebut dapat diatasi dengan menggunakan prefiks %w. Untuk jelasnya, simak contoh berikut:

>> a = []
=> []
>> a = [1,2,”m”,[3,4,5]]
=> [1, 2, “m”, [3, 4, 5]]
>> a[0]
=> 1
>> a[3]
=> [3, 4, 5]
>> a[3][1]
=> 4
>> a[-1]
=> [3, 4, 5]
>> a[6]
=> nil
>> a[1] = 88
=> 88
>> a
=> [1, 88, “m”, [3, 4, 5]]
>> c = %w(Anto, Eric, Isabel)
=> [“Anto,”, “Eric,”, “Isabel”]

Metode-metode pada kelas Array :
length—untuk mengetahui ukuran array.
push(nilai_baru)—untuk menambah data pada array. Data terbaru akan ditempatkan paling akhir.
pop—mengembalikan data pada indeks terakhir array dan menghapus data pada indeks terakhir.
reverse—membalik isi data array.
sort—mengurut isi array secara ascending.

>> a = [“a”,”b”,”c”]
=> [“a”, “b”, “c”]
>> a.length
=> 3
>> a.push(“d”)
=> [“a”, “b”, “c”, “d”]
>> a.pop
=> “d”
>> a
=> [“a”, “b”, “c”]
>> a.reverse
=> [“c”, “b”, “a”]
>> a.sort
=> [“a”, “b”, “c”]

4. Hash
Tipe data hash di Ruby sama dengan tipe data dictionary di Python. Untuk membuat objek
hash yang baru, Anda dapat menggunakan literal hash {} ataupun konstruktor Hash.new. Lain halnya dengan array, untuk mengakses elemen objek Hash kita tidak menggunakan indeks seperti array. Kita dapat mendefinisikan kunci(key) yang unik untuk setiap elemen. Sama halnya seperti array, apabila kita mengakses elemen dengan key yang tidak tercantum di hash, maka akan mengembalikan nilai nil.

>> alamat = {
?> “Amat” => “Kemanggisan Raya
50”,
?> “Budi” => “Sudirman 80”,
?> “Eric” => “Sandang 9A”,
?> “Melissa” => “Pandu 77”
?> }
=> {“Eric”=>”Sandang 9A”,
“Budi”=>”Sudirman 80",
“Amat”=>”Kemanggisan Raya 50",
“Melissa”=>”Pandu 77"}
>> alamat[“Eric”]
=> “Sandang 9A”
>> alamat[“Dani”]
=> nil

5. Range
Objek range di Ruby merupakan suatu barisan di mana terdapat nilai awal dan nilai akhir dari barisan tersebut. Objek Range ini sama dengan perintah range() di Python. Untuk membuat suatu objek Range, kita dapat menggunakan operator range ‘..’ dan ‘...’. Format ‘..’ akan menciptakan objek Range yang ikut menyertakan elemen terakhirnya, sedangkan format ‘...’ akan menghilangkan elemen terakhirnya. Range di Ruby tidak dianggap sebagai objek Array melainkan dianggap sebagai suatu objek Range sendiri. Untuk menjadikannya objek Array, Anda dapat menggunakan metode to_a . Untuk lebih jelasnya, perhatikanlah contoh berikut.

>> a = (1..5)
=> 1..5
>> a.class
=> Range
>> (1..5).to_a
=> [1, 2, 3, 4, 5]
>> (1...5).to_a
=> [1, 2, 3, 4]

Konversi tipe data Walaupun Ruby bersifat dynamic-typing, konversi tipe data ada kalanya perlu dilakukan untuk keperluan tertentu, misalnya kita hendak mengkonversi inputan user menjadi angka untuk dihitung ataupun mengkonversi angka menjadi string untuk dicetak.
Untuk mempermudah pembacaan , kita akan memakai notasi Kelas#metode mengingat metode bisa sama namun efeknya berbeda untuk tiap kelas. Misalnya metode + apabila diaplikasikan pada angka dan string hasilnya pasti akan berbeda

0 komentar