tugas akhir alpro

13
Lembar Kerja Praktikum 1: Pengenalan Ruby adalah bahasa pemrograman scripting yang dinamis dan objectoriented, semua data di Ruby adalah instance dari sebuah class. Ruby dikembangkan pertamakali oleh Yukihiro Matsumoto ('Matz') pada tahun 1995. Sudah beberapa tahun belakangan ini Ruby dipakai untuk mengembangkan aplikasi web yang komersial maupun nonkomersial. library Ruby untuk aplikasi berbasis GUI nonweb juga tersedia. Menjalankan Ruby Menggunakan file skrip Berikut ini file salam.rb, mencetak salam diakhiri baris baru puts "assalamu'alaikum" dieksekusi dengan interpreter ruby: bash$ ruby salam.rb Satusatunya statemen pada program tersebut memanggil method puts, yang mencetak objek ke standardoutput (stdout) dan diakhiri dengan baris baru. Menggunakan command line bash$ ruby e “puts \”assalamu'alaikum\”” Secara Interaktif bash$ irb irb(main):001:0> puts "assalamu'alaikum" assalamu'alaikum => nil Struktur Program Ruby File program atau skrip Program Ruby adalah file teks dengan encoding ASCII 7 bit, yang dapat dibuat dengan text editor yang biasa anda

Upload: squidword

Post on 29-Dec-2015

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tugas akhir alpro

Lembar Kerja Praktikum 1: Pengenalan

Ruby adalah bahasa pemrograman scripting yang dinamis dan objectoriented, semua data di Ruby

adalah instance dari sebuah class.

Ruby dikembangkan pertamakali oleh Yukihiro Matsumoto ('Matz') pada tahun 1995. Sudah beberapa

tahun belakangan ini Ruby dipakai untuk mengembangkan aplikasi web yang komersial maupun

nonkomersial. library Ruby untuk aplikasi berbasis GUI nonweb juga tersedia.

Menjalankan Ruby

Menggunakan file skrip

Berikut ini file salam.rb, mencetak salam diakhiri baris baru

puts "assalamu'alaikum"

dieksekusi dengan interpreter ruby:

bash$ ruby salam.rb

Satusatunya statemen pada program tersebut memanggil method puts, yang mencetak

objek ke standardoutput (stdout) dan diakhiri dengan baris baru.

Menggunakan command line

bash$ ruby e “puts \”assalamu'alaikum\””

Secara Interaktif

bash$ irb

irb(main):001:0> puts "assalamu'alaikum"

assalamu'alaikum

=> nil

Struktur Program Ruby

File program atau skrip

Program Ruby adalah file teks dengan encoding ASCII 7 bit, yang dapat dibuat dengan

text editor yang biasa anda digunakan.

Nama file program Ruby biasanya diakhiri dengan '.rb', ini bukan keharusan, hanya

kebiasaan umum. Nama file yang sah pada file sistem dapat digunakan sebagai nama file

program (walau demikian, bukan ide yang baik menamakan file program anda '~@~.rb')

Sebuah file program dapat dieksekusi dari shell secara langsung tanpa menuliskan

interpreter

Page 2: Tugas akhir alpro

ruby, dengan menambahkan baris khusus di awal program, baris ini harus mengacu ke path

ruby interpreter, berikut ini file halo1.rb sebagai contoh:

#!/usr/local/bin/rubyputs 'Halo Ruby !'

Ubah file tersebut sehingga executable, dan eksekusi di shell (perhatikan ./ di baris kedua):

bash$ chmod 755 halo1.rb

bash$ ./halo1.rb

Beberapa option di interpreter juga dapat dituliskan, misalnya w untuk warning:

#!/usr/local/bin/ruby wwhile gets.chop

if /ruby/i puts 'ya, anda ketik '+ $_ + ' ...' end

end

anda akan mendapat warning karena penggunaan variabel khusus $_ tidak disarankan lagi.

Ruby juga mengenal baris khusus yang opsional untuk mengakhiri program, yaitu baris

yang hanya berisi keyword __END__ yang tidak diawali dan diakhiri whitespace.

brisbaris apapun setelah baris ini tidak akan dieksekusi oleh interpreter.

Statement

Program Ruby adalah lineoriented, terdiri dari statement yang diakhiri cukup dengan akhir

baris (endofline), tidak perlu karakter khusus (semisal titik koma) untuk menandai akhir

statement.

Ruby juga tidak memperlakukan karakter indentasi (tab) atau spasi secara istimewa untuk

awal statement, contoh:

puts 'ini baris pertama'puts 'ini yang kedua'puts 'dan ini yang terakhir'

Sebuah statemen dapat ditulis dalam beberapa baris, contoh:

# statemen dapat multilineputs 'ruby adalah bahasa pemrograman yang dinamik dan object oriented dikembangkan pertama kali oleh Yukihiro Matsumoto, a.k.a \'Matz\''# multiline memudahkan penulisan q uery yg panjangq uery = 'select p.nama, p.stok, s.nama from produk p, supplier sp.idsup = s.id and p.stok > 100order by p.namalimit 10 offset 21'

Page 3: Tugas akhir alpro

puts q uery

beberapa statemen ditulis satu baris jika dipisahkan oleh titik koma, contoh:

p=10; l=20; t=15; volume=p*l*t; puts "volume #{volume}"

Komentar

Seperti sudah anda lihat pada contohcontoh sebelumnya, Ruby menggunakan '#' sebagai

penanda awal komentar, dan setiap baris komentar harus diawali dengan '#'.

Khusus untuk baris pertama, jika '#' diikuti dengan '!' maka baris ini digunakan untuk

mengeksekusi interpreter jika program dijalankan langsung dari commandline.

Class

Sebagai bahasa objectoriented, data Ruby adalah instance dari suatu class. Class

merepresentasikan sebuah konsep yang meliputi struktur data dan operasioperasi yang

berasosiasi dengan struktur data tersebut.

Class memberikan sebuah namespace tersendiri bagi operasioperasi dan variabelvariabel di

dalam class tersebut.

Semua class yang didefinisikan dalam Ruby memiliki satu class induk yaitu class Object.

Sebuah class biasanya didefinisikan dalam satu file tersendiri, walau tidak ada keharusan

seperti itu.

Nama class biasanya diawali dengan huruf kapital. Selanjutnya class akan dibahas di

bagian tersendiri.

Module

Module adalah sebuah cara mengumpulkan classclass, methodmethod dan konstanta

konstanta dalam sebuah namespace.

Module memudahkan pemakaian bersama dan berulang berbagai konsep tersebut (class,

method, konstanta).

Dengan adanya module, kemungkinan konflik nama (nameconflict atau namecollision)

dapat diminimalkan. Module akan dibahas lebih lengkap pada bagian tersendiri.

Page 4: Tugas akhir alpro

Lembar Kerja Pratikum 2: Tipe Data dan Ekspresi

Ruby mendukung berbagai tipe data dasar yaitu: numerik, string, range, array, hashes dan regular

expression. Semua data Ruby adalah objek atau instance dari suatu class.

1. Numerik

Numerik terdiri atas integer dan floating point.Integer dapat menampung jumlah digit yang

hampir tak terbatas (dibatasi oleh jumlah free memory di sistem). Integer pada range tertentu

adalah objek dari class FixNum dan pada range lainnya adalah dari class BigNum. Ruby

mendukung optional base indicator untuk penulisan literal integer:

Base Indicator Base Contoh

0 Octal 01234567

0d Desimal (default) 0d123456789

0x Hexadesimal 0x123456789abcdef

0b Binary 0b1110010010011

Penulisan numerik dapat menggunakan underscore (garis bawah) untuk memudahkan

pembacaan, contoh:

123_456_789 => 1234567890b111_101_101 => 0b111101101

Floating point ditulis menggunakan . (titik) untuk separator desimal bulat dan pecahan,

contoh:

0.12346789

3.14285714285714

Data numerik adalah objek sejati, sebagai contoh, dari data integer dapat dipanggil method

:

# representasi l11398634 dalam string hexadesimall11398634.to_s(16)

Page 5: Tugas akhir alpro

2. String

String dalam Ruby adalah sederetan bytes yang tiap bytenya terdiri dari 8bit. String literal

dinyatakan dalam kutip tunggal atau kutip ganda, contoh:

'Saya suka coding dengan Ruby..''Saya bilang \'Saya suka coding dengan Ruby..\' '“Saya bilang \”Saya suka coding dengan Ruby..\” ”

Pada string literal menggunakan kutip ganda, interpreter ruby akan melakukan interpolasi

ekspresi jika ekspresi ditulis dalam #{}, sehingga memudahkan anda menggabungkan (concat)

string dengan ekspresi:

“Luas lingkaran = #{22.0/7 * 14 * 14}”

String literal diatas bernilai 'Luas lingkaran = 588'.

Kutip ganda pada string literal juga menyebabkan interpreter Ruby akan mengevaluasi berbagai

karakter khusus (misal: control characters).

Ada 3 cara lain untuk mendefinisikan string literal: %q, %Q dan here documents. Prefix %q sama

dengan kutiptunggal dan %Q sama dengan kutipganda (menyebabkan interpolasi ekspresi),

keduanya menggunakan delimiter ! , / , { , (, <. dan [ .

Contoh:%q{select “index” from “table” where “column”='area'}%Q/select “type” from “object” where area > #{22.0/7 * 21 * 21}/

Literal dengan here documents menggunakan string pembatas, cocok untuk mendefinisikan

string literal yang panjang (misal: code javascript), yang mungkin memuat karakterkarakter

khusus pembatas string yang dikenal Ruby, contoh berikut menggunakan string pembatas

KODE_JAVASCRIPT:

js1 = <<KODE _JAVAS CR IPTwindow.onload = function () {

document.for m2.text5.onchange = function () {// prevent user from entering invalid customer code

};}KODE _JAVA SCR IP T

3. Nil

Ruby mengenal sebuah objek khusus untuk menyatakan ketiadaan yaitu nil, jadi nil bukanlah

'tidak ada objek'.

Page 6: Tugas akhir alpro

Berbeda dengan bahasa pemrograman seperti C dan Java, di dalam Ruby kita dapat langsung

mendefinisikan sebuah variable tanpa menentukan tipenya. Anda dapat mencobanya langsung melalui

irb3

$irb> a = 2

$irb> b = 2

$irb> a + b

$=> 4

Bukan hanya tipe data numeric, anda juga bisa membuat tipe data string secara langsung.

$irb> a = “hehe”

$irb> a.length

$=> 4

$irb> a.reverse

$=> “eheh”

$irb> a

$=> “hehe”

Di dalam ruby kita mengenal istilah symbol. Symbol ini akan sering sekali anda temui di dalam Rails.

Sering digunakan sebagai semacam konstanta pengganti string.

$irb> a = :test

$irb> a != :test

$=> false

$irb> a == :test

$=> true

Symbol ini bisa dibilang lebih hemat memori dibandingkan dengan String. Di dalam rails kita akan

sering menemukan symbol dalam sebuah pemanggilan method. Selain itu kita juga akan sering

menggunakan symbol sebagai sebuah key dalam hash. Kedua hal ini sering membuat bingung orang-

orang yang pertama kali mempelajari Ruby bersamaan dengan Rails.

Page 7: Tugas akhir alpro

Lembar kerja Praktikum 3: Kondisi

1. If ... then ... end

Ruby mengenal ekspresi conditional if..then..end untuk mengevaluasi satu kondisi dan

if..then..elsif..then..else..end untuk lebih dari satu kondisi. Contoh:

1. ditebak = 1232. tebakan = gets.chop.to_i3. if tebakan > ditebak4. puts 'terlalu besar'5. elsif tebakan < ditebak6. puts 'terlalu kecil'78. puts 'pas benar ...'

Penjelasan: baris 2 menggunakan method gets yang mengambil input dari stdin, input diterima

sebagai string dan menyertakan karakter endofline, agar dapat dibandingkan secara benar terhadap

data numerik di variabel ditebak maka karakter endofline harus dipotong (=chopped) dari input

ini, dan hasilnya diparse ke integer dengan method to_i .

Sebagai kebalikannya dapat juga digunakan ekspres unless..then..else..end, contoh

sebelumnya ditulis menggunakan unless:

1. ditebak = 1232. tebak = gets.chop.to_i3. unless tebak == ditebak then4. unless tebak < ditebak then5. puts 'terlalu besar'6. else78. end9. else10. puts 'pas benar'11. end

2. Conditional Ternary

Ruby juga mengenal ekspresi ternary, bentuknya:

expr0 ? expr1 : expr2

Jika expr0 bernilai true maka dikembalikan expr1, jika salah dikembalikan expr2. Ternary

memungkinkan ekpresi nested, contoh:

bil = 123; print 'tebaklah:'; tebak = gets.chop.to_i puts tebak == bil ? 'benar..': tebak > bil ? 'kebesaran': 'kekecilan'

Page 8: Tugas akhir alpro

Lembar Praktikum 4: Pengulangan

Loop mengenal while..end untuk mengeksekusi statemenstatemen dalam loop selama kondisi

yang dievaluasi pada bagian while adalah true. Program berikut ini akan terus meminta input selama

tebakan yang masuk belum benar:

1. ditebak = 1232. print 'tebak:'3. tebakan = gets.chop.to_i4. while ditebak != tebakan5. if ditebak < tebakan then6. puts 'terlalu besar'78. puts 'terlalu kecil'9. end10. print 'tebak lagi:'11. tebakan = gets.chop.to_i12.end13.puts 'benar sekali !'

Baris 4 sampai dengan 11 akan dieksekusi selama tebakan belum benar.

Kebalikan dari while adalah until, yang terus mengulang statemen dalam loop sampai kondisi yang

dievaluasi adalah true. Contoh:

1. ditebak = 1232. print 'tebak:'3. tebakan = gets.chop.to_i4. until ditebak == tebakan5. # sama dengan sebelumnya6. end7

Page 9: Tugas akhir alpro

Lembar Kerja Praktikum 5: Array dan Hash

Array dan Hash adalah objek yang merupakan koleksi data secara terindeks (indexed). Array diindeks

dengan key integer, Hash diindeks menggunakan sembarang objek sebagaikey.

Array dan hash dapat berisi elemenelemen yang berbeda tipe datanya. Array dapat didefinisikan

secara literal, dengan menggunakan operator kurung siku berisi elemenelemen array, contoh:

a1 = [1,'senin',2,'selasa',3,'rabu',4, 'kamis',5,'jumat']

Mengakses array a1 menggunakan key integer:

puts a1[0] # 1puts a1[1] # 'senin'puts a1[2] # 2

Array dapat berisi array lain, membentuk array multidimensi:

a2 = [['a','b','c'],['d','e','f'],['g','hihi','i']]# mengaksesputs a2[2][1] # 'hihi'

Hash didefinisikan menggunakan kurawal {}, contoh:

produk1 = {'p001' => 'Susu Sapi', 'p002'=> 'Telur Ayam', 'p003'=> 'Gula Pasir'}puts produk1['p002'] # 'Telur Ayam'# nested hashproduk2 = {'p001' => { 'nama' => 'Susu Sapi', 'harga' => 10000 },'p002' => { 'nama' => 'Telur Ayam','harga' => 12000 },'p003' => {'nama' => 'Gula Pasir', 'harga' => 6000 }

}

puts produk2['p003']['harga'] # 6000

Elemen hash yang belum didefinisikan keynya bernilai nil. Tapi, hash di Ruby dapat diset nilai

defaultnya. Misal, mendefinisikan variabel hash untuk menghitung sesuatu yang diindeks dengan

nama, defaultnya 100:

hitung1 = Hash.new(100)puts hitung1['p001'] # 100

Page 10: Tugas akhir alpro

Lembar Kerja Praktikum 6 : Method

Sebuah method dideklarasikan dengan menggunakan keyword def dan diakhiri dengan end. Sebagai

contoh buatlah file baru coba4.rb

def coba_method(name)

puts "coba #{name}"

end

a = "Jaya!"

coba_method(a)

coba_method("Dunks!")

Ketika dieksekusi program diatas akan mengahasilkan output sebagai berikut:

coba Jaya!

coba Dunks!

Untuk me-return sebuah nilai kita hanya perlu menuliskan nilai (atau variable) tersebut di dalam

method.

def kali_dua(nilai_awal)

kali_dua = nilai_awal * 2

kali_dua

end

kali_dua = kali_dua(4)

puts "kali dua #{kali_dua}"

Hasil eksekusi dari program ini adalah:

kali dua 8

Sebenarnya bisa saja kita menggunakan keyword return untuk mereturn sebuah nilai dari method.

Namun, di sini saya hanya ingin menunjukkan alternatif dari cara tersebut.

Page 11: Tugas akhir alpro

Lembar Kerja Praktikum 7 : Classes

Deklarasi sebuah kelas dimulai dengan class dan diakhiri dengan end. Sebagai contoh kita akan

membuat sebuah kelas Mahasiswa pada file mahasiswa.rb

class Mahasiswa

def initialize(nama, npm)

@nama = nama

@npm = npm

end

def cetak_info

puts "Nama: #{@nama}"

puts "NPM: #{@npm}"

end

end

Instance variable dari sebuah kelas dideklarasikan dengan ‘@’ yang akan membuatnya bisa diakses

oleh semua instance method yang ada di kelas tersebut. Namun instance variable tersebut tidak akan

bisa diakses dari luar kelas. Untuk bisa melakukan itu kita perlu membuat accessor method

def nama=(nama_baru)

@nama = nama_baru

end

def nama

@nama

end

Anda bisa menguji method ini dengan melakukan pemanggilan method seperti dibawah ini:

mhs = Mahasiswa.new("Si Bocung","1203000439")

mhs.cetak_info

mhs.nama = "Si Bocah" # mengubah nama menjadi Si Bocah

mhs.cetak_info

nama = mhs.nama # method ini akan mereturn Si Bocah sebagai nama

puts nama

Namun untuk mendefinisikan method setter dan getter bagi setiap variable adalah pekerjaan yang

melelahkan. Oleh karena itu Ruby menyediakan method attr_accessor() untuk memudahkan kita.

class Mahasiswa

attr_accessor :npm

attr_accessor :nama

10

Selain accessor method ada lagi yang akan sering anda temukan di Rails, yaitu class method.

Page 12: Tugas akhir alpro

def self.whatami

puts “Saya Mahasiswa”

end

Method ini diakses dengan diawali oleh nama kelasnya.

Mahasiswa.whatami # akan mencetak Saya Mahasiswa

Ada banyak hal lain mengenai class namun tidak bisa di bahas dalam tutorial ini seluruhnya. Anda

bisa mempelajari hal-hal tersebut melalui link-link yang saya sediakan pada halaman selanjutnya.