save
do_something
nil
?
register!
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 Output
Untuk
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-lain
Mungkin
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