Minggu, 13 Oktober 2013

Menukarkan Nilai Dua Variabel tanpa Perantara [Java]

0 komentar
Menukarkan dua variabel pada java adalah suatu program dasar yang sangat sederhana. Penukaran ini dapat dilakukan dengan perantara ataupun tanpa perantara.

Sebelum kita membahas penukaran variabel tanpa perantara, mari terlebih dahulu kita memahami bagaimana cara menukarkan variabel dengan perantara.

Dalam menukarkan variabel dengan perantara, kita memerlukan variabel tambahan sebagai perantara penukaran. Sebut saja variabel ini bernama perantara, dan dua variabel untuk ditukarkan. Sebut saja variabel yang akan ditukarkan ini bernama x dan y.

Ok, sekarang mari kita mulai mengcoding!
Pertama, buat variabel bertype integer, dengan nama variabelnya : x, y, dan perantara. Dan jangan lupa untuk memberi nilai pada setiap variabel yang kita buat nanti, kecuali pada variabel perantara.

1 | int perantara;
2 | int x = 3;
3 | int y = 7;

Sekarang kita sudah mempunyai tiga buah variabel, dan setiap variabel memiliki nilai yang berbeda - beda.
Sekarang kita akan memulai coding untuk menukarkan nilainya.

4 | perantara = x;
5 | x = y;
6 | y = perantara;

Pada rumus diatas, kita menukarkan nilai dari dua variabel x dan y dengan menggunakan variabel perantara. 
- Pertama - tama, nilai x disimpan dalam variabel perantara.
- Kemudian, nilai dari variabel x diubah sama dengan nilai dari variabel y.
- Lalu yang terakhir, nilai dari variabel y diubah sama dengan nilai dari variabel perantara yang sebelumnya sudah di set sama dengan variabel x.

Dan kita mendapatkan nilai x yang sebelumnya bernilai 3 sekarang berubah nilai menjadi 7. Begitu juga dengan variabel y, yang sebelumnya bernilai 7, sekarang berubah nilai menjadi 3.
Untuk menampilkannya pada output console java kita, tambahkan code di bawah ini :

7 | System.out.println("nilai x: "+x);
8 | System.out.println("nilai y: "+y);

Bandingkan nilai output dengan nilai variabel pertama yang kita buat tadi. Jangan lupa, di setiap akhir baris tambahkan symbol titik koma / semicolon ( ; ) supaya tidak terjadi error pada program kita.

Jika menukarkan variabel dengan perantara di atas kita sudah paham, maka mari kita lanjutkan menukarkan variabel tanpa perantara dengan rumus yang sudah disediakan java kepada kita.

Ok, pertama - tama jangan lupa buat variabelnya dulu disertai dengan nilainya. :)

1 | int x = 3;
2 | int y = 7;

Dalam penulisan variabel kali ini, kita hanya membuat dua variabel saja yaitu x dan y. Selanjutnya, untuk menukarkan dua buah variabel tanpa perantara, kita akan menggunakan operator bitwise (logika) XOR (Exclusive OR). Pada operator XOR, berlaku hukum alternatif, yaitu hanya salah satu saja yang boleh bernilai true. Perbedaannya dengan OR adalah pada operator OR berlaku hukum kumulatif, yaitu boleh salah satu atau keduanya bernilai true.

Untuk lebih mudah memahaminya, simak tabel kebenaran di bawah ini,

x   y   OR   XOR
b   b     b        s
b   s     b        b
s   b     b        b
s   s     s         s

Keterangan :
b = Benar (True) = 1
s = Salah (False) = 0

Pada tabel di atas, terlihat jelas bahwa perbedaan OR dan XOR adalah terletak pada baris yang paling atas, yaitu perbandingan nilai x dan y yang bernilai benar semua.
- Pada OR, nilai x dan y yang benar semua dinyatakan benar atau true.
- Pada XOR, nilai x dan y yang benar semua dinyatakan salah atau false.

Setelah memahami hukum alternatif dan kumulatif OR dan XOR di atas, kita akan langsung mengcoding!
Ok, operator XOR mempunyai simbol berupa caret atau ( ^ ).
Langsung saja, pastikan kita sudah membuat variabelnya dan sudah menentukan nilai dari variabel tersebut.

3 | x = x ^ y;
4 | y = x ^ y;
5 | x = x ^ y;

Jika anda bingung, marilah kita simak penjelasan di bawah ini :)

Penjelasan dari keajaiban rumus di atas adalah karena operator XOR memiliki dua sifat. Pertama, menggabungkan / mencampurkan informasi, dan kedua, mampu memisahkannya kembali dengan cara melakukan lagi operasi XOR kepadanya.

- Pada baris pertama, nilai x dan y digabungkan sehingga membentuk suatu nilai hybrid di antara keduanya, dan nilai hybrid tersebut tersimpan pada variabel x.
- Pada baris kedua, nilai hybrid di XOR kan lagi dengan y yang akan memunculkan lagi nilai x semula, dan nilai x tersebut tersimpan di y.
- Pada baris ketiga, nilai hybrid di XOR kan lagi dengan nilai y (ingat y sekarang bernilai x) sehingga muncul nilai y yang semula, dan nilai y tersebut tersimpan di x.

Jika anda masih tetap bingung, simak contoh program di bawah ini :)

1 | int x = 3;
2 | int y = 7;
3 |
4 | x = x ^ y;           // x = 3 ^ 7
5 | y = x ^ y;           // y = 3 ^ 7 ^ 7 = 3
6 | x = x ^ y;           // x = 3 ^ 7 ^ 3 = 7

Dalam contoh program di atas, kita dapat mengetahui bahwa pada baris ke empat nilai dari variabel x berubah menjadi 3^7 yang berarti variabel x tersebut memiliki nilai hybrid

Pada baris ke lima, kita dapat mengetahui bahwa nilai y yang semula bernilai 7 di XOR kan dengan nilai x yang sebelumnya bernilai 3^7. Lalu, kita mendapatkan ( 3 ^ 7 ) ^ 7. Karena ada nilai yang sama, maka XOR menganggap nilai tersebut ( 7 ) sebagai nilai yang salah atau bersifat false. Maka,kita mendapatkan nilai 3 untuk variabel y.

Pada baris ke enam, kita juga dapat mengetahui bahwa nilai x sebelumnya bernilai ( 3 ^ 7 ), dan juga nilai y bernilai 3. maka, dalam rumus tersebut ( x = x ^ y ) berarti x = ( 3 ^ 7 ) ^ 3. Karena ada nilai yang sama, yaitu 3 maka, XOR menganggap nilai tersebut ( 3 ). Sebagai nilai yang salah atau false. Sehingga diperoleh nilai 7 untuk variabel x.

Full Code untuk penukaran dua variabel tanpa perantara :

1  | int x = 3;
2  | int y = 7;
3  |
4  | System.out.println("sebelum");
5  | System.out.println("nilai x: "+x);
6  | System.out.println("nilai y: "+y);
7  |
8  | x = x ^ y;
9  | y = x ^ y;
10| x = x ^ y;
11|
12| System.out.println("sesudah");
13| System.out.println("nilai x: "+x);
14| System.out.println("nilai y: "+y);

Download Source :
Netbeans IDE Download
Full All Source Code [NetBeans Projects]
Cara Membuka Project Hasil Download

Jika ada kurang lebihnya, mohon di Share di komentar di bawah dengan bahasa Indonesia yang baik dan benar. Terima Kasih!! :D

Leave a Reply