Rabu, 21 Mei 2014

Today's Algorithm

Algoritma hari ini walaupun hanya sedikit penyampaian materi dari Ko Sky, tetapi banyak sekali materi yang didapatkan dari presentasi hari ini.
Hari ini Kelompok 5 dan Kelompok 6 melakukan presentasi.
Kelompokku yang terdiri dari Yuki, Ridho, Aditya dan David melakukan presentasi mengenai materi ArrayList dan Vector. Berikut materi presentasi kelompok kami.

ArrayList
ArrayList adalah Array yang ukurannya dapat berubah secara dinamis atau dengan kata lain dapat berubah sesuai dengan jumlah data yang dimasukkan.

Fungsi dalam ArrayList :
1. add(element) : menambahkan element.
2. clear() : menghapus semua element.
3. clone() : mengcopy seluruh isi dari index.
4. contains(element) : memeriksa apakah element tersedia atau tida. Hasilnya berupa True atau False.
5. get(index) : melihat element dari index tertentu.
6. isEmpty() : memeriksa isi dari index.
7. remove(index) : menghapus salah satu element dari index tertentu.
8. size() : menampilkan total atau jumlah element.
9. set(index,element) : menukar isi dari index tertentu dengan element tertentu.

Vector
Vector adalah sebuah interface yang digunakan untuk pengolahan data yang bersifat seperti array dinamis yaitu dapat berubah sesuai dengan jumlah data yang dimasukkan.
"Setiap metode dalam Vector diberi keyword synchronized"

Fungsi dalam Vector :
1. addElement(element) : menambahkan element.
2. capacity() : memeriksa jumlah kapasitas yang tersedia.
3. clone() : mengcopy seluruh isi dari index.
4. contains(element) : memeriksa apakah element tersedia atau tidak. Hasilnya berupa True atau False.
5. copyinto(elemment[]) : mengcopy component dari vector ke dalam array tertentu.
6. elementAt(index) : melihat element dari index tertentu.
7. insertElementAt(element,index) : menambahkan element ke index tertentu.
8. isEmpty() : memeriksa isi dari index apakah kosong atau tidak. Hasilnya berupa True atau False.
9. remove(index) : menghapus salah satu index.
10. size() : jumlah atau total dari element.
11. set(index,element) : mengganti isi dari index tertentu dengan element tertentu.

ArrayList vs. Vector
1. Nama metode dari keduanya berbeda untuk melakukan tugas yang sama.
2. ArrayList tidak Thread Safe sedangkan vector sudah Thread Safe.
3. Di dalam Vector semua metod diberi keyword synchronized sedangkan dalam ArrayList tidak ada seperti itu.
4. Dalam ArrayList eksekusinya mengalami kemacetan, sedangkan untuk vector eksekusinya tidak mengalami kemacetan.

Synchronized
berfungsi agar hanya satu thread saja pada satu waktu yang mengakses method.
"Satu proses yang sedang berjalan tidak bisa diganggu proses lain."

Kelebihan synchronized : menjalankan metode yang ada pada ArrayList lebih singkat dibandingkan Vector.

Thread Safe
Thread adalah unit coding yang bisa berjalan disaat yang bersamaan.
Dalam ArrayList tidak ada keyword synchronized sehingga ketika dieksekusi dalam thread, maka dapat mengakibatkan unsafe thread yang berarti dapat terjadi tubrukan thread ketika mencoba memanggil ArrayList.

Penggunaan ArrayList dan Vector
- Saat kita membutuhkan list yang diakses oleh banyak thread, gunakan vector. Namun jika hanya diakses oleh satu thread, gunakan ArrayList.
- Jangan gunakan vector ketika hanya untuk satu thread, karena kelas yang thread-safe itu sangat lambat dibandingkan dengan yang tidak thread-safe.
"Jika tidak menggunakan thread-safe maka disarankan untuk menggunakan ArrayList karena lebih singkat dibandingkan Vector"

OOP(Object Oriented Programming)
adalah teknik untuk membuat objek oriented program.

Terdiri dari :
1. Attribute/property/properties
2. Method/fungsi/behaviour

Penggabungan dari Attribute dan Method disebut Class. Class huruf depannya harus huruf besar. 
Contoh : Nama Class adalah Motor.
Maka Attribute : ban, spion, lampu, jok.
Dan Method : rem, jalan, dll.

Method : 
1. Encapsulation
2. Inheritance
3. Polymorphism

Encapsulation 
adalah proses membungkus attribut atau method yang berfungsi untuk menyembunyikan data agar tidak terlihat.

Inheritance
adalah penurunan sifat dimana memungkinkan untuk tidak perlu menulis lagi dari superlcass tetapi bisa dipakai dari subclass.
Menggunakan keyword extends.
nama subclass_extends_nama superclass

Polymorphism
adalah hampir sama dengan inheritance karena juga menurunkan sifat tetapi menggantikan(replace).
Fungsinya override (ditumpuk).

*Ko Sky mengajarkan cara gampang mengerti tentang super class dan sub class, yaitu super class adalah orangtua (contoh : ayah) dan sub class adalah anak.

Sifat Data
Setiap attribut atau properti memiliki sifat data, yaitu
1. Public : bisa diakses dari luar kelas atau kelas lain(semua).
2. Private : hanya bisa diakses dari kelas tertentu.
3. Protected : bisa diakses oleh kelas itu sendiri dan subclass nya.

Fungsi Setter dan Getter
Setter : untuk mengambil nilai
Getter : untuk menginput nilai


Nama   : Yuki Tjan
NIM    : 1701308561
Kelas   : 32PAA
Bina Nusantara University

Rabu, 14 Mei 2014

ArrayList, Vector and Sorting

Mata kuliah Algoritma hari ini adalah mengenai ArrayList, Vector dan Sorting.

ArrayList
ArrayList tidak begitu berbeda dengan Array, hanya saja Array List memiliki sifat yang lebih dinamis karena bisa ditambahakan atau dikurangi.

Jenis ArrayList :
1. add(element) : penambahan di belakang.
2. clear() : menghapus semua elment
3. clone() : meng-copy
4. contains(element) : mencari atau search eleement
5. get(index) : mencari isi dari index ke sekian
6. isEmpty() : cek kosong atau tidak
7. remove(index) : mneghapus index tertentu
8. size() : jumlah element
9. set(index,element) : mengisi index dari element ke sekian.

Vector
1. addElement(element) : menambahkan element
2. capacity() : kapasitas yang bisa menampung
3. clone() : meng-copy
4. contains(element) : mencari atau search element
5. copyinto(element[]): men-copy element ke suatu array yang spesifik
6. insertElemenetAt(element,index) : mengisi element ke index ke sekian
7. isEmpty() : memeriksa apakah vektor kosong atau tidak
8. remove(index) : menghapus index tertentu
9. size() : jumlah element
10. set(index,element) : mengisi index dari element ke sekian.

Sorting
Ada 5 jenis sorting yaitu :
1. Bubble
2. Selection
3. Insertion
4. Merge
5. Quick

Dari kelima jenis sorting tersebut, Ko Sky mengajarkan hanya 2 yaitu Bubble dan Selection.
Bubble adalah sorting yang membandingkan dan kemudian diurutkan.
Ada 2 cara pengurutan :
1. Ascending : pengurutan dari A ke Z
2. Descending : pengurutan dari Z ke A.

Selection adalah perbandingan yang bertujuan untuk mencari yang paling kecil untuk index tertentu.

Materi yang diajarkan hari ini tidaklah banyak dan minggu depan adalah giliran kelompok 5 yaitu kelompokku untuk mempresentasikan materi kami.
Kelompok 5 yang terdiri dari Ridho Robbyanto, David Mardianto dan Aditya Abdi Putra akan mempresentasikan materi mengenai ArrayList dan Vector.
Maka dari itu penjelasan mengenai ArrayList dan Vector akan di post minggu depan secara lebih rinci.
BINUS is the BEST!

Nama : Yuki Tjan
NIM : 1701308561
Kelas : 02PAA

Rabu, 07 Mei 2014

Array dalam Algoritma

Materi pertama kali yang dipelajari di kuliah pertama algoritma setelah UTS adalah mengenai Array.
Array memiliki 5 karakteristik, antara lain :
1. Fixed
2. Menggunakan memori yang besar. Contohnya dalam kehidupan adalah ketika dimana kita memesan 6 buah barang tetapi yang dipakai hanya 3 buah, walaupun yang kita pakai hanya 3 buah tetapi tetap saja dihitung 6 buah.
3. Static
4. Homogen : sejenis
5. Sequency : berurutan

Array memiliki kelebihan yaitu randaom access yaitu gampang diakses.


Cara membuat Array atau cara membedakan Array atau bukan tidaklah susah. Perbedaan Array dengan yang lainnya hanyalah dari bentuk kotak ( [] ).
Contoh : int [] , string [] , [] char, [] double.
Lambang [] bisa berada di depan maupun di belakang ( tidak ada perbedaan).

Contoh Array : double [] mylist =  new double [10]
1. mylist adalah nama index
2. double [10] aritnya memiliki 10 element dan 9 index. Untuk mencari index digunakan rumus n-1

Array Automatic Initialization
Contoh :
1. double [] number = {1.1 , 1.3 , 3.1, 3.3};
2. char [] university = {'B' , 'I' , 'N' , 'U' , 'S'};
3. string [] name = {"Ferdi" , "Adi" , "Handy"};
Perbedaan yang perlu diingat adalah untuk angka tidak menggunakan tanda, untuk character menggunakan tanda petik( ' ), dan untuk kata menggunakan tanda petik dua( " ).

Dalam Array ada digunakan dimensi dan penggunannya hanyalah dengan jumlah kotak ( [] ) yang ada. Jika Array 1 dimensi maka char[], tetapi jika Array 2 dimensi maka char [] [].

Single Array

Keterangan :
1. for(int i=0;i<numStd;i++), berarti inisialisasi i dimulai dari 0, 1<numStd berarti kondisi dimana looping akan berhenti, i++ berarti akan terus bertambah hingga kondisi looping berhenti. Jika tidak ada i++ maka akan terjadi looping forever.
2. gpa[i] = 3+((double)i/10), double merupakan type casting dimana dari contoh di atas menggunakan double karena akan diigunakan angka desimal.
3. %-10s, berfungsi dalam penulisan yang lurus dan rapi. Karena dari contoh setiap nama memiliki panjang yang berbeda.
4. %1.2f\n, berarti menggunakan 2 angka dibelakang koma atau 2 angka desimal.

Dalam penggunaan looping seringkali ada for(i=0;i<19;i++), itu berarti looping terjadi 19 kali. Cara gampang perhitungannya adalah 19-0=19. Tetapi jika digunakan lambang <= maka looping akan terjadi 20 kali dengan perhitungan 19-0+1 = 20.

Array Duplication (Correct Way)
1. Looping, untuk mendapatkan data yang sama dengan menggunakan looping. Pengerjaanya menggunakan sourceArray dan targetArray.

2. Arraycopy, memiliki keuntungan hemat tempat karena hanya menghabiskan 1 baris saja.
3. Clone

Two Dimensional Array
Jika int [3] [5] maka cara perhitungan Array adalah dengan mengalikan 3 dengan 5 dan hasilnya berjumlah 15. Dengan maksud memilii 3 baris(kesamping) dan 5 kolom (kebawah).

Passing Array
Dalam penggunaanya dimaksudkan idx1 akan dipindahkan ke value, idx2 akan dipindahkan ke idx1 dan kemudian value akan dipindahkan ke idx2.
Namun Ko Sky memberikan cara yang lebih mudah dimengerti, yaitu bagaimana cara memindahkan isi dari gelas pertama ke gelas kedua dan sebaliknya. Dalam pengajarannya diberikan contoh gelas A berisi es batu dan gelas B berisi air putih. Dimaksudkan untuk menukar isi dari setiap gelas dan bagaimana caranya ?
Untuk menukar isi dari kedua gelas diperlukan gelas C.

Keterangan :
1. Es batu dari gelas A dipindahkan ke gelas C yang kosong.
2. Air putih dari gelas B kemudian dipindahkan ke gelas A yang sudah kosong.
3. Es batu yang sekarang berada di gelas C kemudian dipindahkan ke gelas B.

ArrayList Class
1. Add(element) : penambahan di belakang.
2. Clear() : menghapus semua element
3. Clone() : meng-copy
4. Contains(element) : mencari / search element
5. Get(index) : mencari isi dari index ke berapa
6. isEmpty : cek kosong atau tidak
7. Remove(index) : menghapus index tertentu
8. Size() : jumlah element
9. Set(index,element) : mengisi index dari elemet ke sekian.

Nama : Yuki Tjan
NIM : 1701308561
Class : 02PAA
Dosen pengajar : Henry Chong
Sumber materi : Binus University