Yukihiro "Matz" Matsumoto

Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.
Yukihiro "Matz" Matsumoto, Creator of Ruby

Sabtu, 11 Oktober 2014

Iterasi Array Dengan Select, Reject, Partition, Reduce, Sort_By Menggunakan Blok

Array merupakan struktur data yang sangat sering dimanipulasi dalam suatu program, terkadang kita ingin menyusun array dengan syarat tertentu, mengurutkan array dengan aturan tertentu, melakukan operasi aritmetik pada elemen-elemen yang ada di dalam array. Berikut saya akan berbagi tips yang memudahkan anda untuk melakukan iterasi array menggunakan beberapa method yang menerima blok dalam pengoperasiannya.

Select dan Reject

Select digunakan untuk menyeleksi elemen dan membentuk array dengan elemen tersebut sesuai dengan kondisi dan syarat yang kita inginkan.


Dalam snippet kode di atas, pertama array dibentuk menggunakan range angka 0-10, kemudian dilakukan chain dengan method to_a untuk mengkonversi angka yang dihasilkan ke dalam array. Kemudian method select digunakan untuk menyeleksi elemen dan membentuk array baru dengan syarat angka yang akan dipilih adalah angka yang lebih kecil atau sama dengan 5. Hasil yang dihasilkan yaitu, 0, 1, 2, 3, 4, 5.


Method reject memiliki makna yang berlawanan dengan method select, disini method reject digunakan dengan syarat bahwa angka yang mempunyai nilai lebih kecil atau sama dengan 5 tidak akan dimasukkan ke dalam array yang baru. Array baru yang dihasilkan mempunyai nilai 6, 7, 8, 9, 10, yang semuanya lebih dari 5.

Partition

Partition digunakan untuk membagi satu array menjadi 2 array, pembagian dilakukan dengan syarat dan kondisi yang dapat kita berikan di dalam blok.



Pertama Array dibentuk dengan range 0-10. Kemudian digunakan multiple assignment ke variabel odd dan even dengan menggunakan method partition pada array numbers. Partisi dilakukan dengan syarat apakah angka dalam tiap iterasi adalah bilangan ganjil. Method odd? dapat digunakan pada objek angka untuk mengetahu apakah angka tersebut merupakan angka ganjil. Hasil yang dihasilkan berupa satu array yang didalamnya berisi 2 array, yang pertama adalah array berisi bilangan ganjil, dan yang kedua adalah sisanya, yaitu array yang berisi bilangan genap. Ruby secara otomatis akan menempatkan array pertama pada variabel odd, dan array kedua pada variabel even.

Reduce 

Reduce seringkali digunakan untuk melakukan operasi aritmetik pada bilangan yang ada dalam array. Operasi aritmetik akan dilangsungkan dan menghasilkan suatu bilangan akhir sebagai hasil dari method ini. 


Array yang berisi angka 1-10 tetap digunakan sebagai contoh. Method reduce digunakan dan di dalam blok terdapat 2 paramaeter, yaitu sum dan n. Sum dapat kita artikan sebagai akumulasi bilangan yang akan terus kita lakukan operasi, dalam konteks disini sum dimulai dari 0, kemudian n merupakan elemen yang akan diiterasi dalam array. operasi penjumlahan digunakan, dimana pertama sum yang berupa 0 akan ditambahkan dengan 1, kemudian hasil dari sum disimpan, dan pada iterasi yang kedua akan tetap digunakan sehingga sum yaitu 1 ditambah dengan elemen ke 2, yaitu angka 2. Begitu seterusnya dilakukan sampai elemen habis diiterasi, sehingga didapatkan hasil 0+1+2+3+4+5+6+7+8+9+10 = 55.

Method reduce juga dapat menerima argumen langsung, dimana argumen yang dapat kita berikan merupakan simbol operator aritmetik yang akan digunakan dalam melakukan operasi aritmetik. Dalam contoh di atas, digunakan argumen :+ yang akan melakukan penjumlahan terhadap semua elemen dalam array. Kemudian, digunakan argumen :* yang akan melakukan operasi perkalian terhadap semua elemen dalam array.

Sort_by

Sort_by dapat digunakan untuk mengurutkan elemen yang ada dalam array sesuai dengan kondisi yang kita inginkan.


Array yang berisi nama-nama dibentuk menggunakan %w() Ruby. Kemudia digunakan method sort_by dengan kondisi bahwa string yang mempunyai nilai lebih kecil akan ditempatkan lebih awal, dalam konteks ini string "Alfian" < "Fredy" < "Harry" < "Zack.

Tidak ada komentar:

Posting Komentar