Friday, August 23, 2013

Tipe data Array : Ruby Programming

Array - Ruby Programming

Array merupakan sebuah tipe data yang digunakan suatu variable untuk menampung berbagai macam inputan, yang disimpan seperti layaknya block-block. Array tersebut memiliki sequence atau urutan untuk setiap data yang dimasukkan kedalamnya (dimulai dari urutan ke - 0). Ciri ciri array adalah diapit oleh dua buah kurung siku ( [ ] ). Berikut merupakan contoh array :

name = ["Frank Lampard", 8, "Midfielder", "Legend"]

# variabel name diatas merupakan sebuah variabel dengan tipe data array, karena isi dari variabel tersebut diapit oleh dua buah kurung siku. Di dalam kurung siku tersebut kita bebas memasukkan apapun inputannya, bisa berupa String, Integer, Float dan lain sebagainya.

Membuat sebuah array kosong ke dalam suatu variabel adalah dengan cara seperti berikut.
name = Array.new # [ ]

Membuat sebuah array dengan jumlah block sesuai dengan kebutuhan (contoh 3 block kosong).
name = Array.new(3) # [nil, nil, nil]

Membuat sebuah array dengan jumlah block sesuai dengan kebutuhan beserta isi nya.
name = Array.new(3, true) # [true, true ,true]

Membuat sebuah array dengan jumlah block sesuai dengan kebutuhan beserta isi HASH, string atau lainnya.
name = Array.new(4){Hash.new} # [{},{},{},{}]

Membuat array menggunakan method Array()
name = Array({:a=>"a", :b=>"b"}) # [[:a,"a"],[:b,"b"]]

MENGAKSES ISI ARRAY
Elemen array dapat diakses dengan memanggil nama variabel array dan diakhiri dengan kurung siku ( [] ). Jika ingin memanggil spesifik sebuah block urutan tertentu, masukkanlah sequence nya di antara dua buah kurung siku. Contoh :

arr = [1, 2, 3, 4, 5, 6]
arr[2] # 3 mengambil elemen array urutan ke 2 yaitu 3
arr[100] # nil mengambil elemen array urutan ke 100 yaitu 99 (tidak ada)
arr[-3] # 4 mengambil elemen array urutan ke 3 dari akhir
arr[2,3] # [3, 4, 5] mengambil elemen array urutan ke 2 yaitu 3 sebanyak 3 elemen
arr[1..4] # [2, 3, 4, 5] mengambil elemen array urutan ke 1 yaitu 2 sampai array urutan ke 4 yaitu 5

Kita juga dapat mengakses isi elemen array dengan menggunakan method at(num). Contoh :
arr.at(0) # 1

Kita juga dapat melakukan pengecekan terhadap array apakah terdapat error atau tidak dengan menggunakan method fetch. Contoh :
arr = ['a', 'b', 'c', 'd', 'e', 'f']
arr.fetch(100) # IndexError: index 100 outside of array bounds : -6...6
arr.fetch(100, "oops") # "oops" menampilkan pesan buatan sendiri


Mengakses elemen array dengan menggunakan method first dan last
contoh :
arr.first #=> 1
arr.last #=> 6


Mengakses beberapa elemen dari urutan paling depan hanya dengan menggunakan method take
contoh :
arr.take(3) #=> [1, 2, 3]

Method drop melakukan hal yang berlawanan dengan method take karena method drop ini akan mengakses elemen setelah beberapa elemen yang di drop
contoh :
arr.drop(3) #=> [4, 5, 6]


MEMPEROLEH INFORMASI TENTANG ARRAY
array mengecek panjang mereka sendiri setiap saat. untuk mendapatkan informasi tentang berapa banyak elemen yang berada didalamnya, gunakan length , count atau size
contoh :
browsers = ['Chrome', 'Firefox', 'Safari', 'Opera', 'IE']
browsers.length #=> 5
browsers.count #=> 5


Melakukan pengecekan apakah terdapat array yang kosong
contoh :
browsers.empty? #=> false , karena semua array telah terisi , tidak ada array yg kosong


Melakukan pengecekan apakah terdapat elemen dengan nama yg sesuai dengan yg dicari
contoh :
browsers.include?('Konqueror') #=> false, karena tidak terdapat elemen array dengan isi Konqueror


MENAMBAHKAN ITEM ARRAY
Menambahkan ke dalam elemen array dapat dilakukan dengan cara menggunakan push atau <<
akan ditambahkan di akhir
contoh :
arr = [1, 2, 3, 4]
arr.push(5) #=> [1, 2, 3, 4, 5]
arr << 6 #=> [1, 2, 3, 4, 5, 6]

Menambahkan ke dalam elemen array dapat dilakukan juga dengan cara menggunakan unshift
cara ini akan menambahkan item di awal pada elemen array
contoh :
arr.unshift(0) #=> [0, 1, 2, 3, 4, 5, 6]

Menambahkan ke dalam elemen array dapat dilakukan juga dengan cara menggunakan insert
cara ini akan menambahkan item di urutan array yg kita inginkan
contoh :
arr.insert(3,'apple') #=> [0, 1, 2, 'apple', 3, 4, 5, 6) menambahkan item pada urutan array ke 3

Dengan menggunakan insert itu kita dapat menambahkan nilai yg lebih dari satu
contoh :
arr.insert(3,'orange','pear','grapefruit') #=> [0, 1, 2, "orange", "pear", "grapefruit", 3, 4 ,5 , 6]

MENGHAPUS ITEM ARRAY
Dengan menggunakan method pop, kita dapat menghapus item array yg berada di urutan paling akhir
contoh :
arr = [1, 2, 3, 4, 5, 6]
arr.pop #=> 6
arr #=> [1, 2, 3, 4, 5]

Dengan menggunakan method shift, kita dapat menerima dan menghapus item yg terdapat pada urutan pertama dalam array
contoh : 
arr.shift #=> 1
arr #=> [2, 3, 4, 5]

Dengan menggunakan method delete_at, kita dapat menghapus item array sesuai dengan urutannya
contoh : 
arr.delete_at(2) #=> 4
arr #=> [2, 3, 5]

Dengan menggunakan method delete, kita dapat menghapus item array yang memiliki nilai sama dengan yang disebutkan di dalam method delete()
contoh :
arr = [1, 2, 2, 3]
arr.delete(2) #=> 2
arr #=> [1, 3]

Dengan menggunakan method compact, kita dapat menghilangkan item array yg tidak berisi atau nil
contoh :
arr = ['foo', 0, nil, 'bar', 7, 'bar', nil]
arr.compact #=> ['foo', 0, 'bar', 7, 'baz'] menghilangkan item yang tidak berisi atau nil
arr = ['foo', 0, nil, 'bar', 7, 'baz', nil] pada saat tidak menggunakan compact maka akan dikembalikan seperti awal . untuk membuatnya menjadi tetap menghilangkan item yang tidak berisi atau nil menggunakan compact! (paksa)
arr.compact! ['foo', 0, 'bar', 7, 'baz']

Dengan menggunakan method uniq, kita dapat menghilangkan item yang bernilai sama pada elemen array
contoh : 
arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
arr.uniq #=> [2, 5, 6, 556, 8, 9, 0, 123] hanya mengambil salah satu dan menghilangkan sisa yg lainnya

ITERATING ARRAY
Array memiliki method each, yang membuat elemen mana yg harus di iterasi dan bagaimana.
catatan bahwa operasi ini tidak menyebabkan perubahan pada item elemen array
contoh :
arr [1, 2, 3, 4,5]
arr.each {|a| print a -= 10, " "} #=> |a| adalah dimana a sama dengan array urutan ke -10 berarti dimulai dengan -9 dan kemudian diberikan spasi pada saat ditampilkan (print)
# prints: -9 -8 -7 -6 -5
#=> [1, 2, 3, 4, 5] tidak menyebabkan perubahan pada item elemen array

Iterator lainnya adalah reverse_each (membalikkan urutan)
contoh :
words = %w[first second third fourth fifth sixth]
str = ""
words.reverse_each{|word| str += "#{word} "} #=> |word| adalah dimana str diisi dengan word yang telah dibalikkan urutannya
p str #=> "sixth fifth fourth third second first "

Iterator lain adalah map (membuat sebuah array berdasarkan original array akan tetapi dengan nilai yg berbeda berdasarkan block yang ditambahkan 
contoh :
arr.map {|a| 2*a}  #=> [2, 4, 6, 8 , 10] dimana a sama dengan a x 2
arr                #=> [1, 2, 3, 4, 5]
arr.map!{|a| a**2} #=> [1, 4, 9 , 16, 25] nilai elemen array di buat fix . menjadi berubah 
arr                #=> [1, 4, 9 , 16, 25]

MEMILIH ITEM DARI ARRAY
Elemen yg terdapat pada array dapat dipilih sesuai dengan kriteria yang telah di definisikan
non-destructive selection -> yang tidak merubah isi array
diantaranya terdapat : select, reject, drop_while
contoh :
arr = [1, 2, 3, 4, 5, 6]
arr.select {|a| a > 3} #=> [4, 5, 6] memilih item yang memiliki nilai lebih dari 3
arr.reject {|a| a < 3} #=> [3, 4, 5, 6] memilih seluruh item akan tetapi tidak memanggil item yang nilainya lebih kecil dari 3
arr.drop_while{|a| a < 4} #=> [4, 5, 6] memilih seluruh item akan tetapi drop dimana item lebih kecil dari 4
arr #=> [1, 2, 3, 4, 5, 6] isi dari elemen array tetap , tidak berubah . karena non destructive

destructive selection -> yang merubah isi array
diantaranya : select! dan reject! merupakan method yang dapat merubah isi dari array dari method select dan reject
sama seperti select vs reject, delete_if dan keep_if memiliki hasil sebaliknya ketika diaktifkan dengan blok yang sama
contoh :
arr.delete_if{|a| a < 4} #=> [4, 5, 6] lakukan delete jika item array bernilai lebih kecil dari 4
arr #=> [4, 5, 6]

arr = [1, 2, 3, 4, 5, 6]
arr.keep_if{|a| a < 4} #=> [1, 2, 3] simpan jika item array bernilai kurang dari 4
arr #=> [1, 2, 3] terjadi perubahan karena destructive

KUMPULAN METHOD METHOD
- arr.push(num) menambahkan item di urutan terakhir
- arr << (num) menambahkan item di urutan terakhir
- arr.unshift(num) menambahkan item di urutan pertama
- arr.insert(sequence, num) menambahkan item di urutan sequence tertentu
- arr.insert(sequence, num, num, num) menambahkan item di urutan sequence tertentu lebih dari satu

- arr.pop menghapus item yang terdapat di urutan terakhir
- arr.shift menghapus item yang terdapat di urutan pertama
- arr.delete_at(num) menghapus item yang terdapat pada urutan yang dipilih
- arr.delete(num) menghapus item yang sesuai dengan nilai yang dipilih

- arr.compact menghilangkan item nil yang terdapat pada elemen array akan tetapi non-destructive
- arr.compact! menghilangkan item nil yang terdapat pada elemen array dan destructive
- arr.uniq menghilangkan item ganda yang terdapat pada elemen array akan tetapi non-destructive
- arr.uniq! menghilangkan item ganda yang terdapat pada elemen array dan destructive

- arr.each{|a| print a -= 10, " "} melakukan manipulasi terhadap item yang terdapat di dalam elemen array
- arr.reverse_each melakukan manipulasi dengan cara membalikkan . item akhir -> item awal
- arr.map{|a| 2*a} melakukan perubahan terhadap isi elemen array, menambahkan kondisi (non-destructive)
- arr.map!{|a| 2*a} melakukan perubahan terhadap isi elemen array, menambahkan kondisi (destructive)

- arr.select{|a| a > 3} melakukan pemilihan item pada elemen array, dengan kondisi (non-destructive)
- arr.reject{|a| a < 3} melakukan pemilihan item pada elemen array, yg tidak sesuai tidak ditampilkan (non-destructive)
- arr.drop_while{|a| a < 4} sama seperti method reject (non-destructive) tidak memiliki destructive drop_while!

- arr.delete_if{|a| a > 3} melakukan penghapusan item pada elemen array yang sesuai dengan kondisi yang dibuat
- arr.keep_if{|a| a > 3} melakukan penghapusan item pada elemen array yg tidak memenuhi kondisi yg telah dibuat

Sekian mengenai tipe data String pada pemrograman Ruby.

Let's share :)

No comments:

Post a Comment