Bekerjasama Dengan Operator, Session 8: Logical Operators

5:20 PM , 2 Comments

Hallo para pembaca yang masih belum bosen sama saya, ketemu lagi dengan saya sang programmer yang katanya berbakat (hahaha). Masih melanjutkan curhatan sebelumnya mengenai Operator, sebelumnya saya ngecurhat soal Equality Operator, kali ini saya mau mengeluarkan uneg-uneg tentang Logical Operators.


~ Weih, suka nih sama yang logic-logic
* Yoi mas bro
Logical operators terdiri dari logical AND (&), logical complement (!), logical exclusive OR (^), dan
logical inclusive OR (|).
~ Loh loh loh, bentar deh, kok kayak pernah liat kata-kata itu ya.
* Iya bro, ga asing ya?
Dari anggotanya logical operators ini mirip dengan bitwise operators, hanya saja untuk complement dalam logical menggunakan tanda seru (!) sedangkan dalam bitwise menggunakan tanda indefinite (~). Antara bitwise dan logical operators yang beda hanya penggunaan simbol tadi sebagai operatornya, dan juga operannya. Dalam bitwise operators yang digunakan sebagai operan adalah integer/character sedangkan dalam logical operators yang digunakan sebagai operan adalah boolean (true atau false), sedangkan fungsinya sama saja.

Sebelum masuk ke contoh ingat saja jika dalam bitwise operator nilai 0 sama dengan nilai false dalam logical operator, sehingga nilai 1 sama dengan true.

1. Logical Complement (!)

Logical complement berfungsi untuk membalik nilai dari operan. Jika dalam bitwise operators ~0 = 1, maka dalam logical operators !false = true. Contoh penggunaan,
class Main{
    boolean bisaTerbang = true;
    
    public static void main (String[] args){
        System.out.print("Ayam bisa terbang " + !bisaTerbang); 
        // output Ayam bisa terbang false
    }
}
Jika method ayamBisaTerbang dipanggil maka nilai yang didapat adalah false.

2. Logical AND (&)

Logical AND digunakan untuk membandingkan dua buah operan. Dalam bitwise operators jika kedua operan bernilai 1 maka hasilnya adalah 1, selain itu hasilnya adalah 0. Serupa dengan itu, dalam logical operators jika kedua operan bernilai true maka hasilnya adalah true, selain itu hasilnya adalah false. Silakan coba code berikut,
class Main{
    public static void main (String[] args){
        System.out.println(true & true); // output true
        System.out.println(true & false); // output false
        System.out.println(false & true); // output false
        System.out.println(false & false); // output false
    }
}

3. Logical exclusive OR (^)

Logical exclusive OR digunakan untuk membandingkan dua buah operan. Dalam bitwise operators jika kedua operan bernilai sama maka hasilnya adalah 0, jika berbeda bernilai 1. Serupa dengan itu, dalam logical operators jika kedua operan bernilai sama maka hasilnya adalah false, jika berbeda hasilnya adalah true. Silakan coba code berikut,
class Main{
    public static void main (String[] args){
        System.out.println(true ^ true); // output false
        System.out.println(true ^ false); // output true
        System.out.println(false ^ true); // output true
        System.out.println(false ^ false); // output false
    }
}

4. Logical inclisive OR (|)

Logical inclusive OR digunakan untuk membandingkan dua buah operan. Dalam bitwise operators jika salah satu operan bernilai 1 maka hasilnya 1, jika kedua operan bernilai 0 maka hasilnya 0. Serupa dengan itu, dalam logical operators jika salah satu operan bernilai true maka hasilnya adalah true, jika kedua operan bernilai false maka hasilnya adalah false. Silakan coba code berikut,
class Main{
    public static void main (String[] args){
        System.out.println(true | true); // output true
        System.out.println(true | false); // output true
        System.out.println(false | true); // output true
        System.out.println(false | false); // output false
    }
}

Cukup simple kan? Udah mulai pegel nih ngetik, saya sudahi aja ya sesi curhat ini. Istirahat dulu, besok lagi kita lanjut. Sampai jumpa di curhatan berikutnya.

2 comments:

Bekerjasama Dengan Operator, Session 7: Equality Operators

4:08 PM , 0 Comments

Hallo para pembaca yang baik hatinya, ketemu lagi dengan saya sang programmer pemula. Masih melanjutkan curhatan sebelumnya mengenai Operator, sebelumnya saya ngecurhat soal Conditional Operator, kali ini saya mau mengeluarkan uneg-uneg tentang Equality Operators.


~Equality? Mau ngomongin soal persamaan hak nih?
* Ya enggak lah vroh, yang bener ajah
Equality kalo diterjemahkan ke dalam bahasa Indonesia artinya persamaan. Ya, pembahasan kali ini adalah masalah persamaan dan tidak persamaan. Untuk mengetes apakah dua nilai sama digunakan operator (==), hasil pengetesan adalah benar (true) jika kedua operan nilainya sama. Sedangkan untuk mengetes apakah dua nilai tidak sama digunakan operator (!=), hasil pengetesan adalah benar (true) jika kedua operan memiliki nilai yang berbeda.

Equality operators ini hanya bekerja untuk operan berupa angka bulat (byte, short, int, long), jika equality operators digunakan untuk operan berupa angka desimal (float, double) dan juga data berupa objek (termasuk juga tipe data String) maka ceritanya akan lain. Contoh penggunaan equality operators,
int a = 4;
int b = 4;
int c = 8;
boolean sama = a == b; // akan bernilai true
boolean beda = a != c; // akan bernilai true
Nah, ceritanya akan berbeda jika kita mencoba membandingkan dua buah variable bertipe float atau double. Tipe data float atau double memang kurang menyenangkan bagi kita-kita yang math-holic karena dalam dunia Java 1/10 bukan berarti 0.1 dan 0.1 + 0.2 bukan berarti 0.3. Lihat lagi soal tipe data di sini. Silakan coba kode berikut jika tidak percaya,
class Main{
    public static void main (String[] args){
        System.out.println(0.6 == 0.2 + 0.2 + 0.2); //output berupa false
        System.out.println(0.6 == 0.2 * 3); //output berupa false
    }
}
Console akan mengeluarkan output false untuk kedua baris kode tersebut karena 0.2 + 0.2 + 0.2 = 0.6000000000000001, begitu juga dengan 0.2 * 3 = 0.6000000000000001.

Sedangkan ketika kita membandingkan dua variable berupa objek (termasuk String) dengan menggunakan equality operators (== atau !=) yang akan dibandingkan bukan content/isi/nilainya tapi yang akan dibandingkan adalah reference dari objek tersebut.

*Note: Ingat baik-baik bahwa tipe data String bukan lah primitive tapi adalah objek.

Oke deh, saya sudahi saja sesi curhatan ini karena udah ga ada lagi yang mau diomongin. hehehe. Sampai jumpa lagi ya di curhatan berikutnya.

0 comments:

Bekerjasama Dengan Operator, Session 6: Conditional Operators

1:33 PM , 0 Comments

Hallo para pembaca yang budiman, ketemu lagi dengan saya sang programmer dadakan. Nyambung lagi lanjutkan curhatan sebelumnya mengenai Operator, sebelumnya saya ngecurhat soal Cast Operators yang digunakan ketika kita ingin merubah tipe data sebuah variabel. Nah sekarang saya mau ngelanjutin curhatan saya, kali ini tentang Conditional Operators.


Conditional operators, kalo diterjemahkan ke dalam bahasa Indonesia jadi operator persyaratan. Yah, operator ini digunakan untuk menentukan syarat-syarat tertentu, untuk menguji sebuah nilai apakah sesuai dengan kondisi/persyaratan yang kita ajukan. Conditional operators terdiri dari AND (&&), OR (||), dan tanda tanya (?:). Conditional AND dan OR membutuhkan 2 nilai, sedangkan (?:) hanya 1. Nilai-nilai yang ada dalam conditional AND dan OR akan diuji dari kiri ke kanan.

1. Conditional AND (&&)

Conditional AND (&&) akan menguji dua buah nilai apakah kedua benar atau tidak, jika keduanya benar (true) maka conditional tersebut akan memberikan hasil benar (true), jika salah satu saja salah (false) maka conditonal ini akan memberikan hasil salah (false).
int umur = 10;
boolean lakiLaki = true;

umur > 7 && lakiLaki; //akan menghasilkan true
umur < 7 && lakiLaki; //akan menghasilkan false
Karena conditional AND mensyaratkan keduanya harus benar dan pengujian nilai dilakukan dari kiri, maka ketika nilai yang ada di sebelah kiri bernilai salah (false) maka nilai yang ke dua atau yang di sebelah kanan akan diabaikan.

2. Conditional OR (||)

Conditional OR (||) akan menguji dua buah nilai apakah salah satu dari mereka benar atau keduanya salah, jika salah satu bernilai benar (true) maka conditional tersebut akan menghasilkan nilai benar (true), jika keduanya salah (false) maka conditional tersebut akan menghasilkan nilai salah (false).
int umur = 10;
boolean lakiLaki = false;

umur > 7 || lakiLaki; //akan menghasilkan true
umur < 7 || lakiLaki; //akan menghasilkan false
Karena conditional OR mensyaratkan hanya salah satu saja yang benar dan pengujian nilai dilakukan dari kiri, maka ketika nilai yang ada di sebelah kiri bernilai benar (true) maka nilai yang ke dua atau yang di sebelah kanan akan diabaikan.

3. Conditional tanda tanya (?:)

Conditional ini sebenernya bentuk ringkas dari conditional statement (if ... else ...). Conditional statement digunakan ketika kode yang kita tulis cukup pangjang dan rumit, misalnya.
int umur = 10;

if (umur > 7){
    si anak bisa sekolah;
    si anak mulai belajar bahasa inggris;
    bla bla bla....;
    bla bla bla....;
}
sedangkan (?:) digunakan untuk sesuatu yang singkat-singkat saja, misalnya
int faktorAngka = ganjil ? 1:2;
Kode di atas mendeklarasikan variable faktorAngka, dan diterjemahkan ke dalam manusia menjadi seperti
"Hei Java, tolong berikan variable faktorAngka ini sebuah nilai, jika variable ganjil bernilai true maka tolong berikan variable faktorAngka nilai 1 jika false berikan nilai 2"
Seperti itu aja sih permasalahan Conditional Operators ini, cukup simple kan? Ya sudah kalo gitu udahan dulu curhatan kali ini. Sampai ketemu lagi di celotehan berikutnya.

0 comments:

Bekerjasama Dengan Operator, Session 5: Cast Operators

9:14 AM , 0 Comments

Hallo para pembaca yang budiman, ketemu lagi dengan saya setelah beberapa lama istirahat nyurhat karena banyak kesibukan kemaren. Okelah kita lanjutkan curhatan sebelumnya mengenai Operator, terakhir kemaren saya ngecurhat soal Bitwise Operators yang isinya mengenai operator-operator yang digunakan untuk memanipulasi tiap-tiap bit kode binary yang merepresentasikan variable character atau integer. Nah sekarang saya mau ngelanjutin curhatan saya, kali ini tentang Cast Operators.


Cast Operators digunakan untuk mengkonversi suatu tipe data menjadi tipe data yang lainnya dengan menggunakan operator "(tipe baru)". Cast operators diperlukan karena Java compiler tidak mengijinkan kita (secara tidak sengaja) mengkonversi data dari satu tipe data ke tipe data lainnya akibat dari kita melakukan operasi aritmatik dimana hasil dari operasi tersebut Java akan secara otomatis melakukan konversi tipe data dan ada informasi yang terbuang dari data tersebut.
int a = 2.65 + 3;
Operasi di atas akan menghasilkan error karena kita mencoba menjumlahkan data bertipe double floating point (2.65) dan integer/int (3) dan Java secara otomatis akan mengkonversi hasilnya menjadi bertipe double floating point, sedangkan kita mengharapkan hasilnya bertipe integer.
~ Kenapa begitu? Kan sama-sama angka juga.
* Ya itu kan dalam dunia manusia, kalo dalam dunia komputer, terutama Java, ga ngeliat itu angka atau huruf, tapi tipe datanya, apakah byte, short, integer, dll.
Java tidak mengijinkan operasi ini karena akan terdapat informasi yang hilang karena Java memberikan data bertipe double floating point (dengan koma) sedangkan kita menginginkan data bertipe integer (tanpa koma). Atau dapat diilustrasikan teman kita memberikan kita minuman sebanyak 1,5 liter sedangkan botol-botol yang kita miliki hanya berukuran 1 liter, maka akan ada minuman sebanyak 0,5 liter yang terbuang.
int a = 2.65 + 3;
Pada saat kita melakukan operasi di atas Java akan berteriak,
"Hai kamu, kami peringatkan kami tidak bisa mengkonversi data tersebut karena akan ada informasi yang hilang (angka di belakang koma)."
Maka peranan Cast Operators ini adalah untuk menjawab bentakan si Java,
"Hai Java, tidak apa-apa kalo ada sebagian informasi yang hilang, jadi konversi aja ga usah protes."
Dan Java pun akan menjawab,
"Oke, ya sudah kalo maunya gitu" 
Jadi untuk membungkam Java ketika melakukan operasi aritmatik di atas kita melakukannya seperti berikut.
int a = (int) 2.65 + 3;// Hasilnya 5, bukan 5.65
int b = (int) (1.5 + 3.2);//Hasilnya 4, bukan 4.7
Jadi pada intinya Cast Operators ini berfungsi untuk memberitahu Java bahwa kita memiliki intensi/maksud untuk merubah tipe data sesuai kebutuhan kita.

Untuk konversi tipe data primitive, selain karena perbedaan jenis data karena keberadaan koma java juga akan berteriak jika kita berusaha mengkonversi data yang walopun sama-sama tidak memiliki koma tapi di luar jangkauan, sehingga akan ada informasi yang hilang. Misalnya,
byte a = 100 + 50;
Kode di atas akan menghasilkan error karena kita berusaha menjumlahkan dua data integer dan mengharapkan hasil berupa byte. Data byte hanya memiliki jangkauan dari -128 sampai 127, sedangkan hasil dari penjumlahan tersebut sebesar 150. Untuk membungkam Java biar ga teriak tinggal ditambahkan cast (byte).
byte a = (byte) (100 + 50);
/*
Walopun Java diem tapi hasil dari penjumlahan ini bukan 150 tapi -106, silakan dicoba
*/
Cast Operators juga digunakan untuk merubah data berupa objek dari superclass objek ke subclass objek agar kita bisa mengakses member dari objek subclass. Contoh,
class Kendaraan{
    int jumlahPintu;
    int jumlahRoda;
    String merek;

    public int getJumlahPintu(){
        return jumlahPintu;
    }

    public int getJumlahRoda(){
        return jumlahRoda;
    }

    public String getMerek(){
        return merek;
    }
}

class Mobil extends Kendaraan{
    double diameterRoda;

    public double getDiameterRoda(){
        return diameterRoda;
    }
}

class Motor {
    String jenisVelg;

    public String getJenisVelg(){
        return jenisVelg;
    }
}


class Application {
    public static void main (String[] args){
        Kendaraan kendaraan= new Kendaraan();
        kendaraan.getDiameterRoda();
        /*
         Baris di atas akan menghasilkan error karena objek kendaraan tidak memiliki akses terhadap method getDiameterRoda(). Untuk mendapatkan akses terhadap method tersebut kita perlu mengkonversi objek tersebut menjadi objek yang memiliki method tersebut, yaitu Mobil.
        */

        Mobil mobil = (Mobil) kendaraan;
        mobil.getDiameterRoda();

        Motor motor = (Motor) kendaraan;
        /*
         Konversi di atas tidak bisa dilakukan (error) karena class Motor bukan subclass dari (tidak meng-extends) class Kendaraan.
        */
    }
}

Sepertinya udah ya curhat saya soal  Cast Operators ini, semoga kalian ga neg sama uneg-uneg saya. hehehe

Terima kasih udah mau mampir baca uneg-uneg saya. Sampai ketemu lagi di curhatan berikutnya.

0 comments:

Bekerjasama Dengan Operator, Session 4: Bitwise Operators

7:10 AM , 1 Comments

Hallo semuanya, ketemu lagi dengan saya. Ga bosen ya? Saya aja udah bosen nih ngetik banyak bener, capek cui. Oke lah dilanjut deh, sekarang saya mau nyurhat masalah Bitwise Operator.


~Apaan tuh bitwise? Bit yang bijak?
*Mbuhlah saya juga ga ngerti maksudnya apa, yang jelas....
Operator bitwise terdiri dari bitwise AND (&), bitwise complement (~), bitwise exclusive OR (^), dan bitwise inclusive OR (|). Operator ini memanipulasi tiap-tiap bit kode binary yang merepresentasikan variable character atau integer. Mungkin itu kenapa operator ini dinamakan bitwise.
public class BitwiseOperators{
    byte a = 20;
    byte b = 4;
    byte c = 11;
 
    public static void main(String[] args) {
        System.out.println(~a); //Menghasilkan -21
        System.out.println(b & c); //Menghasilkan 0
        System.out.println(b ^ c); //Menghasilkan 15
        System.out.println(b | c); //Menghasilkan 15
    }
}
Variabel a merupakan data bertipe byte sehingga menggunakan memori sebesar 8 bit (lihat mengenai alokasi memori di sini), sehingga
(1). Variabel a yang memiliki nilai 20 memiliki representasi kode binary 00010100

00010100
0 x 27 0 x 26 0 x 25 1 x 24 0 x 23 1 x 22 0 x 21 0 x 20

0 + 0 + 0 + 16 + 0 + 4 + 0 + 0 = 20

(2). Variabel b yang memiliki nilai 4 memiliki representasi kode binary 00000100

00000100
0 x 27 0 x 26 0 x 25 0 x 24 0 x 23 1 x 22 0 x 21 0 x 20 

0 + 0 + 0 + 0 + 0 + 4 + 0 + 0 = 4

(3). Variabel c yang memiliki nilai 11 memiliki representasi kode binary 00001011

0 0 0 0 1 0 1 1
0 x 27 0 x 26 0 x 25 0 x 24 1 x 23 0 x 22 1 x 21 1 x 20

0 + 0 + 0 + 0 + 8 + 0 + 2 + 1 = 11

1. Bitwise Complement (~)

Baris kode pertama dalam method main di atas mencetak nilai complement dari a (~a) yang menghasilkan -21.
~Weh weh weh, kenapa bisa demikian?
*Bisa dong
Kode binary yang merepresentasikan ~a adalah kebalikan dari a, artinya 0 diganti dengan 1 dan 1 diganti dengan 0, sehingga kode binary yang merepresentasikan ~20 adalah 11101011, kebalikan dari 20 (00010100)

1 1 1 0 1 0 1 1
- (1 x 27) 1 x 26 1 x 25 0 x 24 1 x 23 0 x 22 1 x 21 1 x 20

-128 + 64 + 32 + 0 + 8 + 0 + 2 + 1 = -21

2. Bitwise AND (&)

Baris selanjutnya kita ingin mencetak bitwise AND (&) antara b dan c. Bitwise AND akan bekerja dengan mencocokan masing-masing bit data jika keduanya bernilai 1 maka akan menghasilkan 1 sedangkan jika selain itu akan menghasilkan nilai 0.

b = 00000100
c = 00001011
    ____________ &
      00000000

Maka nilai dari b & c atau 4 & 11 adalah 0.

3. Bitwise Exclusive OR (^)

Baris selanjutnya kita ingin mencetak bitwise exclusive OR (^) antara b dan c. Bitwise exclusive OR bekerja dengan mencocokan masing-masing bit data jika keduanya bernilai sama maka akan menghasilkan 0 sedangkan jika berbeda maka akan menghasilkan nilai 1.

b = 00000100
c = 00001011
    ____________ ^
      00001111

Maka nilai dari b ^ c atau 4 ^ 11 adalah 15.

4. Bitwise Inclusive OR (|)

Baris terakhir kita ingin mencetak bitwise inclusive OR (|) antara b dan c. Bitwise inclusive OR bekerja dengan mencocokan masing-masing bit data jika keduanya bernilai 0 maka akan menghasilkan 0 sedangkan jika selain itu akan menghasilkan nilai 1.

b = 00000100
c = 00001011
    ____________ |
      00001111

Maka nilai dari b | c atau 4 | 11 adalah 15.

Akhirnya kelar. Pusing ya? Saya yang nulis juga pusing nih. Ya sudah saya sudahi sesi curhat hari ini, sampai ketemu lagi di sesi berikutnya.

1 comments:

Bekerjasama Dengan Operator, Session 3: Assignment Operator

7:10 AM , 0 Comments

Hallo pembaca semuanya yang masih belum mual denger curhatan saya, berjumpa lagi dengan saya si programmer pemula yang masih berjuang pelan-pelan menjadi developer. Setelah kemaren ngecurhat sedikit tentang operator dan sudah masuk ke operator Additive Operator dan Array Index Operator sekarang saya mau membahas masalah Assignment Operator.


Assignment operator adalah operator sama dengan (=) yang berfungsi untuk meng-assign sebuah variabel dengan sebuah nilai. Misalnya int x = 4. Selain assignment sederhana seperti itu Java juga memiliki compound assignment untuk memudahkan operasi.

Jika kemaren sudah berkenalan dengan ++ dan -- yang hanya menjumlahkan variable dengan nilai 1. Maka compound assignment ini sebagai penolong jika kita tidak hanya ingin menjumlahkan variable dengan nilai 1, melainkan banyak. Compound assignment ditulis dengan += atau -=. Jika x++ adalah bentuk sederhana dari x = x + 1, maka x += y adalah bentuk sederhana dari x = x + y.

Woke kelar, cepet kan? Sampai jumpa lagi di curhatan berikutnya.

0 comments:

Bekerjasama Dengan Operator, Session 2: Array Index Operator

7:09 AM , 0 Comments

Hallo pembaca semuanya yang katanya budiman, berjumpa lagi dengan saya si programmer pemula yang ga lolos beasiswa buat kuliah (belum rejeki, hehehe). Setelah kemaren ngecurhat sedikit tentang operator dan sudah masuk ke operator pertama, yaitu Additive Operator, sekarang masuk ke operator yang ke-2, yaitu Array Index Operator.


~Mmmmmm
*Arep komen ngawur opo meneh?
~Ga jadi, hehehe
Array index operator berupa sepasang tanda kurung siku ([]), operator ini digunakan untuk memanggil element di dalam sebuah array.
public class ArrayIndexOperator{
    char[] huruf = {'A','B','C','D','E','F','G','H'};

    char c = huruf[2];//char c akan bernilai 'C'
}
Ingat bahwa index array dimulai dari 0. Sehingga huruf[2] akan memanggil nilai dari element array huruf nomor 3 yaitu C. Jika kita memanggil element yang diluar jangkauan element array akan menghasilkan ArrayIndexOutOfBoundsException. Contohnya array huruf di atas terdiri dari 8 huruf atau 8 element dimana elemetnya dari 0-7, maka jika kita memanggil huruf[8] akan menghasilkan ArrayIndexOutOfBoundsException. Exception akan dibahas nanti pada pembahasan khusus exception.

Sepertinya curhatan saya cukup sekian ya.
~Weh kok dikit kali?
*La wong ga ada yang mau dicurhatin lagi kok.
~Yoweslah
Oke sampai ketemu lagi di curhatan masalah kerjasama saya dengan operator jilid 3 mengenai Assignment Operators.

0 comments:

Bekerjasama Dengan Operator, Session 1: Additive Operator

7:09 AM , 0 Comments

Hallo pembaca yang ternyata masih mau mampir, berjumpa lagi dengan saya si programmer pemula yang kerjaannya cuma curhat. Setelah kemaren ngecurhat sedikit tentang operator sekarang saya ingin sedikit lebih masuk ke permasalahan operator. Untuk jilid 1 ini saya pengen curhat masalah Additive Operator.


~Wait wait wait, kok jadi ngomongin yang bahaya-bahaya nih? Ga ikut-ikutan saya
*Apanya yang bahaya dah?
~Itu zat additive segala mau dicurhatin
*Addictive kali ooom. -_-'
Operator additive terdiri dari plus (+) dan minus (-) untuk penambahan (a + b), pengurangan (a - b), postincrement (x++), postdecrement (x--), preincrement (++x), predecrement (--x), dan penggabung string/string concatenation ("Aku " + "laki").

Operator ++ akan menambahkan variabel numerik dengan nilai 1, begitu juga dengan operator -- akan mengurangi variabel numerik dengan nilai 1.
public class AdditiveOperators{
    int a = 2;
    int x = 8;

    int b = a + 3;//b akan bernilai 5
    int c = 3 - a;//c akan bernilai 1
    int y = x++;//y akan bernilai 9
    int z = x--;//z akan bernilai 7
}
~Itu kenapa sih ada post sama pre? bukannya sama aja menambah/mengurangi 1?
*Ya, hasil nilainya sama aja menambah/mengurangi 1, tapi cara kerjanya beda
Cara kerja operator tersebut berbeda dilihat dari urutan eksekusi kodenya, sesuai dengan posisi operatornya. Hmmm, gimana ya cara ngejelasinnya, saya juga bingung. Gini aja deh, langsung ilustrasi.
public class AdditiveOperator{
    int post = 5;
    int pre = 7;

    public static void main (String[] args){
        System.out.println(post++);
        /*Di console akan dicetak nilai 5, karena variabel post sudah digunakan/dipanggil sebelum dijumlahkan*/

        System.out.println(post);
        /*Di console akan dicetak nilai 6, karena pada baris sebelumnya variable post sudah dijumlahkan dengan nilai 1*/

        System.out.println(++pre);
        /*Di console akan dicetak nilai 8, karena sebelum dipanggil variabel pre telah dijumlahkan terlebih dahulu*/

        System.out.println(pre);
        /*Di console akan tetap dicetak nilai 8*/
    }

    //Berlaku juga untuk x-- dan --x
}
Operator plus jika digunakan pada data bertipe string akan berfungsi sebagai lem untuk menggabungkan dua string.
public class AdditiveOperator{
    String string1 = "Aku anak ";
    String string2 = "jendral.";
    String string3 = string1 + string2;

    String a = "A";

    public static void main (String[] args){
        System.out.println(string3);/*Di console akan dicetak Aku anak jendral*/
        System.out.println(a+5);/*Di console akan dicetak A5*/
    }
}
Sepertinya semua uneg-uneg saya soal additive operator ini udah kluar semua, udah lega perut saya. hehe

Sampai jumpa di pembahasan operator selanjutnya yaitu mengenai Array Index Operator.

0 comments:

Bekerjasama Dengan Operator

7:08 AM , 1 Comments

Hallo, selamat sore pembaca yang kurang kerjaan mampir ke tempat saya terus, ketemu lagi dengan saya yang lagi galau sama komputer. Setelah kemaren curhat tentang expression yang ga tuntas nyangkut di operator, sekarang saya ingin menuntaskan curhatan itu dengan membahas masalah operator.


~Operator? Operator jalan tol?
*Bukaaaaan, kan kemaren udah dikasitau
Dalam Java, mungkin dalam bahasa lainnya juga, disediakan banyak sekali operator. Berdasarkan jumlah operand yang digunakan operator dikelompokan ke dalam tiga kategori. Unary, binary, dan ternary.
~Bentar, bentar. Operand? Apa itu? Maen bola?
*Lha kok nyangkut ke bola sih om?
Operand itu, dalam bahasa matematika, artinya objek dari sebuah operasi matematik. Misalnya 1 + 2, maka 1 dan 2 adalah operand dan + adalah operatornya.
*Paham?
~Sip, lanjuuuut
Oke, kita lanjut. Operator unary adalah operator yang menggunakan satu operand, misalnya -6. Operator binary menggunakan dua operand dalam operasinya, misalnya 6 + 3. Dan operator ternary menggunakan 3 operand dalam operasinya, misalnya untuk conditional (?), benar ? simpan : buang (dijelaskan nanti kalo bingung).

Berdasarkan posisi operator dalam operasi, operator dikelompokan dalam tiga kategori juga, yaitu prefix, postfix, dan infix. Operator prefix adalah operator yang mendahului operandnya, misalnya -6. Operator infix adalah operator yang berada diantara operand-operandnya, misalnya 6 + 3. Sedangkan operator postfix adalah operator yang mengikuti operandnya, misalnya x++.

Sedangkan berdasar fungsinya, operator dibagi atas:
1. Additive Operators
2. Array Index Operator
3. Assignment Operators
4. Bitwise Operators
5. Cast Operator
6. Conditional Operators
7. Equality Operators
8. Logical Operators
9. Member Access Operator
10. Method Call Operator
11. Multiplicative Operators
12. Object Creation Operator
13. Relational Operators
14. Shift Operators
15. Unary Minus/Plus Operators

1 comments:

Membaca Expression Wajah si Java

11:46 PM , 0 Comments

Halo pembaca yang baik hatinya, berjumpa lagi dengan saya si tukang curhat yang ga jelas. Apa kabarnya hari ini? Semoga baik-baik saja.

Hari ini saya mau curhat soal "Expression".
~Wuih, keren ya si Java bisa juga berekspresi
*Eits, bukan itu maksudnya bro

Expression disini maksudnya bukan mengekspresikan diri. Tapi....(sambil mikir), apa ya, bingung. Ya kalo diterjemahin ya artinya ekspresi. Tapi secara garis besar expression ini maksudnya adalah gabungan dari sebuah literal/nilai (value), variable yang memiliki value, method yang menghasilkan sebuah value dan operator, dimana expression ini digunakan untuk meng-assign sebuah variable agar memiliki value, atau bahasa manusianya memberikan variable sebuah value/data.

1. Simple Expression

Dari namanya udah keliatan kalo simple expression adalah expression dalam bentuk yang simple (Penjelasan yang ga penting hahaha). Simple expression bisa berupa sebuah literal (value), atau sebuah variable yang memiliki value, atau sebuah method yang menghasilkan value. Literal yang ada di java antara lain string, boolean true dan false, character, integer, floating-point, dan null. Contoh simple expression:
public class SimpleExpression {

    /*Meng-assign variable dengan sebuah literal*/
    String simpleString1 = "Contoh simple expression";

    /*Meng-assign variable dengan sebuah variable*/
    String simpleString2 = simpleString1;

    /*Meng-assign variable dengan sebuah method yang menghasilkan value*/
    String simpleString3 = getValue();

    public static void main(String[] args){
     SimpleExpression simpleExpression = new SimpleExpression ();
     System.out.println(simpleExpression.simpleString1);
     System.out.println(simpleExpression.simpleString2);
     System.out.println(simpleExpression.simpleString3);
    }

    private String getValue(){
        return "Contoh simple expression";
    }
}
Pada contoh di atas saya meng-assign beberapa variable bertipe string secara sederhana.

2. Compound Expressions

Compound bisa berarti gabungan, tambahan, atau majemuk. Sehingga compound expression adalah expression yang majemuk (lagi-lagi penjelasan ga penting :p). Secara ringkasnya compound expression merupakan gabungan atau terdiri dari beberapa simple expression yang digabung dengan menggunakan operator.
~Opo meneh kui operator. Operator pulsa?
*Bukan vroh
Operator di sini maksudnya adalah karakter yang digunakan dalam operasi matematik seperti tambah (+), kurang (-), bagi (/), dll yang digunakan untuk merubah sebuah nilai. Contoh compound expression:
public class CompoundExpression {

    int compoundInteger1 = -9;//Compound expression
    String compoundString1 = "Contoh compound " + "expression";//Compound expression

    int simpleInteger1 = 4;// Simple expression
    int simpleInteger2 = 5;// Simple expression
    int compoundInteger2 = simpleInteger1 + simpleInteger2;//Compound expression

    String simpleString1 = "Contoh compound ";// Simple expression
    String simpleString2 = "expression";// Simple expression
    String compoundString2 = simpleString1 + simpleString2;//Compound expression

    public static void main(String[] args){
     CompoundExpression compoundExpression = new CompoundExpression();
     System.out.println(compoundExpression.compoundInteger1 );
     System.out.println(compoundExpression.compoundInteger2 );
     System.out.println(compoundExpression.compoundString1 );
     System.out.println(compoundExpression.compoundString2);
    }
}
Dalam dunia pemrograman ada banyak sekali operator yang digunakan yang akan saya bahas lebih lengkapnya di postingan selanjutnya. Sampai ketemu lagi :D

0 comments:

Kenalan Sama Variable

1:06 PM , 0 Comments

Halo semuanya, berjumpa kembali dengan saya sang mantan auditor. Sudah lama ya saya ga nyurhat, sudah hampir 4 bulan ya kalo ga salah? Kemaren saya sedang berkonsentrasi mengerjakan proyek, ga kelar-kelar, sampe lupa nyurhat lagi. Hehehe

Okay, langsung saja, kali ini saya akan curhat tentang kisah perkenalan saya dengan Variable. Kalo denger kata "variable" langsung teringat kenangan masa lalu saat mengerjakan skripsi yang hasilnya ga jelas itu, tapi alhamdulillah dapet A dan bisa wisuda dengan cepat. :)


Variable adalah "named memory location" untuk menyimpan berbagai tipe data (value), kalo diterjemahin kedalam bahasa Indonesia jadinya apa ya? Agak bingung. Secara harafiah terjemahannya adalah "nama dari lokasi memori". Variable yang menyimpan reference (User Defined Data Type) disebut dengan variable reference (reference variable).

Variable harus dideklarasikan terlebih dahulu sebelum digunakan. Dalam pendeklarasian variable minimal terdiri dari nama tipe datanya (data type identifier), misalnya berupa String, int, long, double, dll, dan nama dari variable yang akan kita buat kemudian diakhiri dengan titik koma (;). Untuk mendeklarasikan variable berupa array harus ditambahkan tanda kurung siku ([]) setelah nama tipe datanya atau bisa juga setelah nama variable. Pada saat mendeklarasikan sebuah variable bisa juga langsung diassign value-nya jika sudah tersedia datanya. Contoh pendeklarasian variable,
int jumlahRoda;//Mendeklarasikan variable integer bernama jumlahRoda.
String merk;//Mendeklarasikan variable string bernama merk
double kecepatan;//Mendeklarasikan variable double bernama kecepatan
boolean bisaTerbang;//Mendeklarasikan variable boolean bernama bisaTerbang
int[] ukuranRoda;//Mendeklarasikan variable array 1 dimensi bernama ukuranRoda
char[] nomerPlat;//Mendeklarasikan variable array 1 dimensi bernama nomerPlat
int x, y[], z[][];//Mendeklarasikan beberapa variable sekaligus yang bertipe sama
Contoh diatas adalah contoh pendeklarasian variable tanpa memberikan nilai (value), jika ingin langsung memberikan nilai bisa langsung dimasukan.
int jumlahRoda = 4;
String merk = "Honda";
double kecepatan = 150.98;
boolean bisaTerbang = false;
int[] ukuranRoda = {16,18,16,18};
char[] nomerPlat = {'A','D','1','2','3','4','X','Y'};
int x, y[], z[][];
Untuk persoalan memberikan nilai pada variable akan dibahas lebih lanjut nanti di curhatan yang lain. Untuk curhatan masalah variable ini sepertinya sudah cukup. Sangat singkat biar pembaca ga neg sama uneg-uneg saya. Hehehe

Woke kalo begitu sampai disini perjumpaan kita, ketemu lagi nanti kalo ada yang mau dicurhatin lagi. :D

0 comments:

Merubah Kata Menjadi Kapital

5:30 PM , 0 Comments

Hallo semuanya, berjumpa lagi dengan saya sang programmer pemula. Cerita kali ini mengenai hasil iseng-iseng saya membuat sebuah method.

Singkat cerita saya sedang mengerjakan sesuatu, kemudian sampai pada suatu titik saya ingin mengubah format tulisan yang diinput oleh user yang tadinya huruf kecil semua atau HURUF BESAR SEMUA atau nYamPUr-NyaMPur menjadi Setiap Awal Kata Pakai Huruf Besar. Karena saya baru belajar dan karena penasaran saya ingin cepat-cepat menyelesaikan masalah itu. Akhirnya bertanyalah saya ke sebuah forum programmer Java dengan harapan Java memiliki method untuk melakukan tugas itu. Setelah menunggu ada beberapa yang membalas, dan ternyata semuanya memberikan jawaban dari hasil kreasi mereka sendiri, Java tidak menyediakan.

Karena kode mereka agak panjang dan saya juga ingin mengasah kemampuan saya akhirnya saya berusaha membuat method sendiri. Berikut hasilnya,
public static String capitalize(String kalimat){
   String kalimatBaru ="";
   String[] kata = kalimat.split(" ");
   char[] huruf;

   for (int k = 0; k < kata.length; k++){
      huruf = kata[k].toCharArray();
      kata[k] ="";
      for (int h = 0;h < huruf.length; h++){
         kata[k] += ((h==0)?(String.valueOf(huruf[h]).toUpperCase()):
         String.valueOf(huruf[h]).toLowerCase());
      }
            
      kalimatBaru += kata[k] +" ";
   }
   return kalimatBaru.trim();
}
Penjelasan:
1. Method tersebut saya beri nama "capitalize" sesuai dengan tujuannya, ingat untuk menamakan method biasakan menggunakan huruf kecil.

2. Method tersebut saya buat dengan return berupa data String dengan harapan method tersebut akan memberikan output data berupa kalimat baru yang sudah diformat.

3. Method tersebut saya buat sebagai static method agar ketika saya ingin memanggil method ini dari class yang berbeda saya tidak perlu membuat sebuah object dari class tempat method  ini bersarang, tinggal langsung panggil aja NamaClass.capitalize("Kalimat yang akan diformat");

4. Method tersebut saya buat dengan parameter sebuah data bertipe String, yaitu kalimat yang akan diformat.

5. Kemudian saya membuat variable bernama kalimatBaru dengan tipe data String yang nantinya akan menyimpan kalimat yang sudah diformat.

6. Selanjutnya saya membuat sebuah variable array bernama kata dengan tipe data String. Variable ini langsung saya assign value-nya karena data yang dibutuhkan sudah tersedia yaitu "kalimat". Jadi variable ini adalah variable yang menyimpan kata per kata hasil pecahan dari "kalimat". Kalimat tersebut saya pecah berdasarkan spasi.

7. Berikutnya saya buat sebuah variable array lagi bernama huruf namun kali ini bertipe  char, karena sesuai dengan namanya variable ini akan menyimpan data berupa huruf-huruf dari setiap kata yang tadi sudah dipecah-pecah.

8. Karena tadi si parameter "kalimat" sudah dipecah menjadi kata-kata dan disimpan di dalam array  kata maka saya buat sebuah "loop" yang akan memproses setiap kata tersebut. Dalam contoh ini saya menggunakan loop for. Karena loop ini untuk memproses data array dimana element array dimulai dari 0 dan berakhir di jumlah element - 1, maka loop tersebut saya buat for (int k = 0; k < kata.length; k++). Diterjemahkan kedalam bahasa manusia menjadi,
Hei compiler, tolong eksekusi setiap kode yang ada di dalam jangkauan loop ini dimulai dari k = 0, dieksekusi selama nilai k kurang dari banyaknya element kata, setiap selesai satu kali eksekusi tambahkan nilai k dengan 1.
9. Di baris pertama dalam loop saya memecah kata pada element ke k menjadi huruf-huruf, untuk nilai k = 0 maka kata yang dipecah adalah kata pertama, kemudian huruf-huruf tersebut saya simpan kedalam variable huruf.

10. Karena kata yang ada akan dirubah/diformat maka kata yang sudah disimpan saya hapus denga cara meng-assign variable kata pada element ke k dengan nilai kosong (hanya tanda petik tanpa ada apa-apa diantaranya).

11. Selanjutnya saya proses huruf-huruf hasil pecahan dari kata pada element ke k. Sama seperti sebelumnya saya menggunakan loop. Di dalam loop saya buat sebuah perintah yaitu,
Hei compiler, tolong di cek berapa nilai h, jika nilainya 0 maka huruf pada element ke h tersebut jadikan uppercase (kapital) jika bukan 0 maka jadikan lowercase (kecil). Setelah dicek tolong dimasukkan ke dalam kata ke k.
String.valueof() adalah sebuah method dari API Java yang berfungsi untuk mengkonvert data yang tadinya bukan String menjadi String.

12. Setelah huruf-huruf dari kata lama selesai dieksekusi/diformat menjadi kata baru selanjutnya kata baru tersebut dimasukan ke dalam kalimat baru dengan ditambahkan spasi.

13. Dan yang terakhir mengembalikan kalimat yang baru kepada si pemanggil method. Saya tambahkan trim() agar kelebihan spasi di ujung kalimat dihapus.

Method tersebut bisa dicoba dengan cara berikut,
public static void main(String[] args){
   System.out.println(capitalize("percobaan pertama")); // output: Percobaan Pertama
   System.out.println(capitalize("percobaan kedua dan ketiga")); /* output: Percobaan Kedua dan Ketiga*/
   System.out.println(capitalize("perCobAan keEmpAt")); // output: Percobaan Keempat
}

Silakan dicoba, jika bermanfaat bagi pembaca jangan sungkan untuk menggunakannya untuk tujuan apapun. Sekian dulu cerita hari ini. Sampai jumpa lagi di curhatan-curhatan berikutnya. :D

0 comments:

Kenali Data Type Supaya Tidak Salah Pilih

2:29 PM , 1 Comments

Selamat sore para pembaca yang baik hatinya, berjumpa lagi dengan saya mantan mahasiswa ekonomi yang konon katanya nyasar. Pada curhatan sebelumnya  saya beberapa kali menyebut kata "data type". Apa sih data type? Ya kalo diterjemahin mentah ke dalam bahasa Indonesia jadinya tipe data. :P
~ Udah? Gitu aja?
* Enggak juga sih, mari kita lanjutkan.
Bahasa Java ga sesimple bahasa jawa, apalagi bahasa Indonesia, bahasa Java adalah strongly typed language. Ketika kita membuat program dalam bahasa Java kita harus mendefinisikan tipe-tipe data yang akan kita buat dalam program tersebut. Misalnya kita akan membuat variable jumlahPintu yang merepresentasikan berapa banyaknya pintu yang ada dalam rumah atau kamar atau gedung, seperti yang kita tahu "jumlah" merepresentasikan "angka" sehingga untuk variable jumlahPintu harus kita definisikan sebagai variable dengan data type yang merepresentasikan numerical value seperti int, long, double, dll. Contoh,
int jumlahPintu;

Java berbeda dengan javascript yang ketika membuat variable cukup dengan menambahkan kata "var" sebelum nama variablenya, atau PHP yang cukup dengan menggunakan simbol dollar ($) sebagai awalan nama variable. Untuk mendeklarasikan sebuah variable dalam Java harus diawali dengan data type identifier yang kita inginkan.

Dalam bahasa Java ada 3 bentuk data type, yaitu Primitive Type, User-Defined Type, dan Array Type.

1. Primitive Type

Oke, kita masuk ke data type pertama, Primitive Type.
~Makanan apakah itu?
~Apakah dia makhluk yang hidup di jaman purba?
Bukan, primitive type adalah katagori tipe data yang didefinisikan atau dibuat oleh si Java itu sendiri, kita sebagai (calon) developer tinggal memanfaatkan saja, nilai yang disimpan dalam data bertipe primitive ini adalah non-objek, hanya data biasa, seperti angka 1, atau huruf a, atau nilai benar atau salah. Berikut ringkasan jenis primitive data type.

Primitive Type Reserved WordSizeMin ValueMax Value
Booleanboolean------
Characterchar16-bitUnicode 0Unicode 65,535
Byte integerbyte8-bit-128+127
Short integershort16-bit-32,768+32,767
Integerint32–bit-2,147,483,648+2,147,483,647
Long integerlong64-bit-9,223,372,036,
854,775,808
+9,223,372,036,
854,775,807
Floating-pointfloat32–bitIEEE 754IEEE 754
Double precision floating-pointdouble64-bitIEEE 754IEEE 754

Mari gali sedikit saja apa maksudnya dari tabel diatas (cuma tahu sedikit, hehehe).

Yang pertama, yang paling atas, adalah data type Boolean. Variable yang didefinisikan ke dalam data type Boolean akan memiliki nilai berupa true atau false. Contoh pendeklarasian,
boolean bisaTerbang;

Lanjut ke nomor 2, kita ketemu dengan Character. Pada dasarnya setiap yang kita ketik adalah character, bisa berupa angka, huruf, simbol, tanda baca, dll. Character memiliki ukuran sebesar 16 bit, maksudnya adalah setiap kita mendeklarasikan sebuah variable bertipe char komputer akan mengalokasikan memori sebesar 16 bit untuk menyimpan nilai yang akan dimasukan ke dalam variable tersebut. Character memiliki nilai minimum Unicode 0, yang maksudnya Unicode code point pertama. Karena namanya character maka data yang bisa disimpan hanya "sebuah" character. Contoh pendeklarasian,
char letter;

Berikutnya, ada 4 data type untuk menyimpan data berupa angka bulat.
~ Semuanya untuk menyimpan angka bulat?
* Ya
~ Terus kenapa harus ada 4 kalo semuanya sama-sama untuk menyimpan angka bulat?
* Karena...
Jika diperhatikan keempat data type tersebut memiliki ukuran, nilai minimum, dan nilai maksimum yang berbeda, makin ke bawah makin besar. Ukuran data dan nilai minimum-maksimum memiliki hubungan. Untuk memahami konsepnya sepertinya cukup dijelaskan untuk yang tipe byte sebagai ilustrasi.

byte memiliki ukuran sebesar 8 bit. Tadi di atas sudah dijelaskan masalah memori, maka variable bertipe byte akan membutuhkan alokasi memori sebesar 8 bit untuk menyimpan data. Dari dalam tabel dapat dilihat bahwa semakin besar ukurannya maka jangkauan nilainya juga semakin besar.
~ Kenapa bisa begitu?
Karena setiap bit itu merepresentasikan banyaknya digit kode binary, pernah denger binary? Ya, itu, yang angka 01010101 dst. Jadi jika sebuah data berukuran 8 bit dia akan menggunakan 8 digit kode binary yang diisi angka 0 atau 1.
~ Terus hubungannya sama jangkauan nilai gimana?
Jadi, misalnya memori yang dialokasikan sebesar 8 bit maka nilai minimumnya adalah sebesar -(28-1) atau -(27) = -128 dan nilai maksimumnya sebesar 28-1-1 = 27-1 = 127. Angka 127 akan memiliki kode binary 01111111. Angka yang paling kiri menunjukan positif atau negatif, jika 0 maka positif jika 1 maka negatif. Untuk ilustrasi kode binary dibawah merepresentasikan angka 19,
0 0 0 1 0 0 1 1
0 x 27 0 x 26 0 x 25 1 x 24 0 x 23 0 x 22 1 x 21 1 x 20

0 + 0 + 0 + 16 + 0 + 0 + 2 + 1 = 19

Sedangkan untuk angkan -19 tidak semena-mena mengubah angka 0 di depan menjadi 1. Kode binary untuk angka -19 adalah 11101101. Sebenarnya saya masih belum paham masalah kode binary untuk yang minus ini. Jika pembaca ada yang mengerti tolong dijelaskan dengan simpel kepada saya yang masih pemula ini.

Tapi yang saya pahami dari angka -19 adalah kode binarynya 19 dibalik dari 0 jadi 1 dan 1 jadi 0 kemudian ditambahkan 1. Kode binary 19 adalah 00010011 dibalik menjadi 11101100 kemudian ditambahkan 1 jadi 11101101.
~Gimana kalo 2? kan 00000010 dibalik jadi 11111101, di ujung
kanan sudah 1
Karena sudah 1 maka ditambah 1 jadi 0, seperti 5+6, ada sisa lagi 1 digeser ke kiri, karena dikirinya 0 maka jadi 1, selesai, jadinya 11111110. Contoh lagi misalnya 4, kode binarynya 000000100 dibalik jadi 11111011 ditambah 1 jadi 11111100. (Mohon dikoreksi kalo salah :D)

====================
UPDATE 22 Juni 2015:
Akhirnya saya paham mengenai kode binary untuk nilai negatif, lupakan penjelasan binary negatif sebelumnya, agak ngasal memang.
Kita ambil contoh terakhir, yaitu 4, kode binarynya adalah 000000100, sedangkan -4 kode binarynya 11111100 (sama kayak penjelasan sebelumnya). Dengan penjelasan:

1 1 1 1 1 1 0 0
- (1 x 27) 1 x 26 1 x 25 1 x 24 1 x 23 1 x 22 0 x 21 0 x 20

-128 + 64 + 32 + 16 + 8 + 4 + 0 + 0 = -4

====================

Kembali kepada inti masalah, karena setiap tipe butuh alokasi memori yang berbeda maka bijaklah dalam menentukan data type yang akan dipake karena akan mempengaruhi penggunaan memori dan ujung-ujungnya mempengaruhi performance aplikasi kita. Jika hanya menyimpan angka dari 0 - 100 maka cukup gunakan short. Tapi ada kabar baik juga, dari buku yang saya baca, karena jaman sekarang komputer dan perangkat mobile sudah canggih punya power dan memori yang gede maka urusan data type ini sudah bukan jadi barang yang harus dipusingkan. Kalo mau pake long ya silakan-silakan saja.

Yang perlu diingat untuk angka bulat, ketika memberikan nilai pada variable bertipe long tambahkan huruf l atau L dibelakang angka. Untuk tahu bedanya silakan buat variable bertipe long yang berada diluar jangkauan int, misalnya 10,000,000,000.


Berdasarkan pesan errornya jika kita tidak menambahkan hurf L (atau l) dibelakang angka maka compiler akan menganggapnya sebagai int. Walaupun terasa aneh (angka ada hurufnya) tapi demi kesuksesan masa bodo aja. :D

*Untuk lebih lengkap masalah binary code tadi silakan baca disini: http://en.wikipedia.org/wiki/Two%27s_complement

Lupakan masalah binary code jika Anda senasib dengan saya (ga mudeng). Kita lanjut ke 2 data type terkahir, yaitu Floating-point dan Double precision floating-point. Keduanya dipakai untuk menyimpan data berupa angka desimal. Masalah nilai minimum dan maksimumnya silakan baca di sini http://en.wikipedia.org/wiki/IEEE_floating_point.

Yang agak ngeselin dari float dan double adalah jika kita melakukan operasi aritmatik terhadap data float atau double hasilnya bisa saja tidak sesuai dengan yang diharapkan, memang sih bedanya sangat tidak signifikan, tapi sebagai math-holic bikin agak kesel. Silakan dicoba kode berikut,
public class Main {
 
   static float a = 1.242f;
   static float b = 24.02f;
   static double x = 1.242d;
   static double y = 24.02d;
   
   public static void main(String[] args){
      System.out.println(a * 5 / 100); 
      //Output 0.0621
      System.out.println(b * 5 / 100); 
      //Output 1.2010001, kalo pake kalkulator hasilnya 1.201
      System.out.println(x * 5 / 100); 
      //Output 0.0621
      System.out.print(y * 5 / 100); 
      //Output 1.2009999999999998, kalo pake kalkulator hasilnya 1.201
   }
}

Tapi seharusnya ketidak-presisian itu tidak menjadi masalah, karena bedanya kecil sekali.

2. User-Defined Data Type

Sekarang saatnya masuk ke data type berikutnya, yaitu User-Defined Data Type, atau dalam bahasa manusianya tipe data buatan user. Dalam pembuatan data type biasanya user menggunakan konsep dari dunia nyata. Jika Java membuat primitive data type seperti int, boolean, double yang kita ga kenal sebelumnya, user biasanya membuat data type mereka sendiri seperti Color, Account, dll. Untuk membuat data type sendiri user menggunakan class, interface, enum, atau annotation type, karena itu nilai yang tersimpan dalam variable bertipe data buatan user akan selalu berupa objek.

User-defined data type disebut juga sebagai reference type dimana si variable tidak menyimpan objek secara langsung tapi hanya menyimpan "alamat"nya dimana si objek tersebut disimpan dalam memori, sedangkan variable bertipe primitive menyimpan nilainya sendiri secara langsung.

3. Array Type

Yang terakhir, Array Type, berfungsi untuk menyimpan data yang memiliki beberapa nilai ke dalam satu variable. Nilai yang disimpan bisa berupa primitive data atau objek. Deretan nilai yang disimpan disebut dengan element dimana element array dimulai dari 0. Untuk mendeklarasika array dibutuhkan tanda []. Contoh ilustrasi
public class Main {
   int[] x; //Hanya deklarasi tanpa assignment
   int[] no = {1,2,3,4,5}; // Deklarasi dan assigment
   int[] i = new int[5];/* Deklarasi tanpa assignment tapi mereserve element sebanyak 5 element */
}
Tanda [] bisa juga diletakan setelah pendeklarasian nama variable seperti int x[], namun biasanya diletakan setelah pendeklarasian tipe datanya. Tapi peletakan di belakang nama variable kadang-kadang bisa berguna jika kasusnya seperti ini,
public class Main {
   int x = 5, y[] = {1,2,3,4};
}
Yang menarik dari array adalah kemampuan yang dia miliki tidak hanya menyimpan banyak data dalam satu dimensi tapi bisa sampai 3 dimensi. Bayangkan sebuah array satu dimensi (array biasa) sebagai kaleng kecil yang dijejer (berperan sebagai element) yang masing-masing kaleng berisi permen (berperan sebagai value). Array dua dimensi bisa dibayangkan sebagai kaleng yang besar dijejer dan masing-masing kaleng berisi kaleng kecil dengan jumlah yang sama dan masing-masing kaleng kecil berisi permen (Atau bisa juga dibayangkan sebagai tabel yang dia punya baris dan kolom). Nah, untuk yang array tiga dimensi bisa dibayangkan sebagai kardus dijejer yang masing-masing berisi kaleng besar dengan jumlah yang sama, masing-masing kaleng besar berisi kaleng kecil dengan jumlah yang sama, dan masing-masing kaleng kecil berisi....., ya Anda benar, permen. :D

Untuk mengambil permennya kita hanya nunjuk dimana letak permen yang kita ambil. Kalo array satu dimensi tinggal tunjuk dia ada di kaleng nomer berapa (element ke berapa). Kalo array dua dimensi kita tunjuk dia di kaleng besar ke berapa dan kaleng kecil ke berapa. Kalo dibayangkan sebagai tabel kita tunjuk dia di BARIS berapa dan KOLOM berapa, bahasa kerennya dia ada di koordinat berapa (x,y). Untuk yang tiga dimensi tinggal ngikutin aja polanya. hahaha

Sepertinya semua unek-unek saya soal Data Type sudah keluar semua. Jadi saya sudahi saja sesi curhat kali ini, semoga pembaca semuanya enggak neg dan bosen. Jangan sungkan-sungkan jika ada yang salah, silakan diprotes. Saya sangat terbuka menerima kritik.

Oke, sampai di sini saja, jumpa lagi di curhatan berikutnya

1 comments:

Identifiers Dalam Java, Mari Berkenalan

4:35 PM , 1 Comments

Halo pembaca yang budiman, berjumpa lagi dengan saya sang calon programmer. Kali ini saya ingin mengeluarkan uneg-uneg/curhatan saya tentang Identifiers.

Pas pertama kali baca kata "identifiers" tiba-tiba saya langsung teringat sebuah adegan film dimana seseorang berkata kepada robot, "identify yourself", yang intinya orang tersebut meminta identitas si robot, kalo yang ditanya orang mungkin yang dimaksud adalah nama.

Ya, nama. Pembahasan Identifiers ini hanyalah masalah nama dalam bahasa pemrograman Java. Setiap kita membuat sebuah class, method, atau variable pasti membutuhkan nama, jika tidak bernama gimana caranya kita mengakses (manggil) mereka?

Identifier, atau nama, terdiri dari:
1. Huruf, A-Z, a-z, atau huruf-huruf lain, kanji misalnya.
2. Angka, 0-9
3. Karakter penghubung, seperti underscore ( _ )
4. Simbol mata uang, seperti $, £, dll

Dalam membuat nama, bisa dipakai semua jenis karakter di atas, tapi dilarang menggunakan angka sebagai awalan. Contoh nama yang valid seperti:
1. π
2. i
3. mobil
4. Ak47
5. anakIbu
6. _dia
7. roda$dua
8. silakan coba-coba sendiri, jika Anda menggunakan tool semacam Eclipse atau Netbeans atau yang lain pasti akan ada pesan error jika nama yang Anda buat adalah nama terlarang

Bahasa pemrograman Java sangat menuntut kita untuk memperhatikan penggunakan huruf kapital karena Java adalah bahasa yang case-sensitive. Misalnya, jika di awal kita men-declare sebuah variable dengan nama restuBundo, maka ketika kita memanggil variable tersebut harus dengan restuBundo juga. Dia tidak akan mau noleh jika dipanggil restubundo atau Restubundo atau RestuBundo, dll.

Perhatikan ilustrasi berikut,
package basic;

public class Main {

   String message;
   
   public static void main(String[] args){
       System.out.println(Message);/* Ini adalah contoh code yang buruk, message tidak sama dengan Message*/
       new Main().SomeMethod();/* Ini juga contoh code yang buruk, someMethod tidak sama dengan SomeMethod*/
   }
 
   void someMethod(){
   }
}
Banyak orang berkata "apalah arti sebuah nama". Well, dalam bahasa Java nama sangat berarti dan harus berhati-hati dalam membuat nama.

Dalam dunia persilatan Java ada sebuah ke-umum-an dalam penamaan, dan sebaiknya kita ikut juga
1. Untuk penamaan class dan interface (selalu) menggunakan huruf kapital (uppercase) untuk awal katanya, jika lebih dari satu kata maka setiap katanya diawali dengan huruf kapital. Contoh: Mobil, AngkutanUmum
2. Untuk penamaan package, variable non-konstan, dan method (selalu) digunakan huruf kecil, jika namanya lebih dari satu kata maka gunakan huruf kapital untuk setiap awal kata kecuali kata pertama. Contoh: int jumlahRoda, belokKanan()
3. Untuk penamaan variable konstan (selalu) digunakan huruf kapital seluruhnya, jika lebih dari satu kata maka disambung dengan "underscore" (_). Contoh: final String NAME, KOTA_TUA

Dalam memberikan sebuah nama biasakan untuk memberikan nama yang merepresentasikan "barang" yang memiliki nama tersebut.
package basic;

public class Kendaraan {

   int jumlahRoda;
   String warna;
   boolean bisaBelok;
   
   void gantiGigi(int gigiBaru){
   }

   void takeOff(){
   }
}
Dalam ilustrasi di atas saya membuat sebuah class bernama Kendaraan. Kenapa saya memberi nama class tersebut Kendaraan? Karena (ingat!) Java adalah bahasa berorientasi objek (Object Oriented Programming - OOP). Dalam OOP, class adalah blueprint atau cetakan atau model dari sebuah objek. Dari class nanti akan dibentuk sebuah objek dengan cara
Object obj = new Object();
Atau dalam kasus class Kendaraan saya tadi maka saya bisa membuat objek mobil dengan cara
Kendaraan mobil = new Kendaraan();
Jadi biasakan menamakan sebuah class dengan nama yang merepresentasikan sebuah objek.

Kemudian saya membuat sebuah variable dengan data type primitive int bernama jumlahRoda, sebuah variable dengan data type String bernama warna, dan sebuah variable dengan data type boolean bernama bisaBelok. Kita semua pasti tahu bahwa Kendaraan punya ciri-ciri, salah tiganya dia punya roda (kecuali kapal) dan warna dan apakah dia bisa belok atau tidak. Jadi untuk menamakan sebuah variable biasakan dengan nama-nama yang merepresentasikan apa yang dimiliki atau apa yang menjadi ciri-ciri objek yang akan dibuat dari class tersebut.

Untuk class Kendaraan tersebut saya membuat sebuah method bernama gantiGigi dan takeOff. Nama method ini merepresentasikan apa yang bisa dilakukan oleh sebuah kendaraan.

Kesimpulan dari pembahasan Identifier ini adalah kita bisa sebebas-bebasnya mebuat class, variable, dan method dengan nama semaunya kita. Tapi sangat disarankan untuk mengikuti kaidah-kidah yang telah berlaku umum untuk mempermudah pekerjaan kita nanti, terutama ketika kita bekerja dalam sebuah tim.

Cukup sekian curhatan saya kali ini, semoga Anda tidak mengantuk, jika mengantuk lain kali siapkan kopi dan singkong rebus jika ingin membaca curhatan yang lain. Sampai jumpa :D

1 comments:

Menggunakan Comments dalam Java untuk Mendeskripsikan Program

7:06 AM , 0 Comments

Selamat siang kawan-kawan, berjumpa lagi dengan saya sang mantan auditor. Kali ini saya mau posting masalah comments.

Hari ini saya belajar comments, apa itu comments? Dari yang sudah saya baca, comments itu hal yang sepele tapi punya manfaat yang luar biasa, yaitu untuk mendokumentasikan program atau code yang telah kita tulis.

Coba bayangkan Anda sudah capek-capek nulis ratusan atau bahkan ribuan baris code, menemukan sebuah terobosan baru, tapi tanpa ada keterangan apa-apa masalah code yang sudah Anda tulis. Kemudian Anda disibukkan oleh pekerjaan lain selama beberapa lama, setahun misalnya, tanpa melirik sedikitpun code-code yang sudah anda ciptakan. Sampai pada akhirnya pekerjaan Anda selesai dan Anda bisa kembali pada code-code Anda. Ketika dibuka Anda akan bingung dan berfikir
"Dulu bikin code ini buat apa ya?"
"Kata ini maksudnya apa ya?"
"Method ini kerjaannya ngapain ya?"
Alhasil Anda pun stres sendiri dan ujung-ujungnya memutuskan untuk mengulang pekerjaan yang sudah bertahun-tahun dikerjakan.

Dengan comments kita bisa memberikan penjelasan untuk setiap code yang kita buat agar nanti suatu saat jika kita membuka kembali code tersebut setelah sekian lama dianggurkan kita akan dengan mudah mengerti apa yang sudah kita kerjakan. Atau misalnya ketika kita bekerja dalam sebuah tim untuk membangun sebuah aplikasi maka rekan satu tim kita dapat mengerti apa dan bagaimana code kita bekerja sehingga mereka bisa menggunakan code kita tanpa harus dikit-dikit nanya kita.

Cara kerja comments sangat sederhana, setiap karakter (apapun) yang ada di dalam jangkauan comments akan diabaikan oleh komputer (compiler) sehingga tidak dieksekusi menjadi bagian dari program.

Dalam Java ada 3 macam comments yang bisa kita pakai untuk mendokumentasikan pekerjaan kita.
1. Single-Line Comments
Single-Line Comments mencakup satu baris (namanya juga single-line) dalam program kita yang akan diabaikan oleh komputer. Untuk membuat Single-Line Comments dimulai dengan "//" (tanpa petik) kemudian diikuti komen (keterangan) kita. Meneruskan contoh pada postingan sebelumnya saya akan memasukan comment ke dalam code HelloWorld saya
package greetings;

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World"); //Untuk menge-print satu baris tulisan "Hello World"
        System.out.println(Math.sqrt(3*3 + 4*4)); //Output = jarak koordinat (0,0) dan (3,4)
    }

}
Gunakan Single-Line Comments untuk memberikan penjelasan yang singkat namun bermakna. Jangan gunakan Single-Line Comments untuk memberikan penjelasan yang tidak perlu, seperti
package basic;

public class Comments{

    int i = 10; //Variable i untuk menyimpan data berupa primitive int

    public static void main(String[] args) {
        System.out.println(i);
    }

}

2. Multiline Comments
Jika Single-Line Comments hanya mencakup satu baris maka Multiline Comments mencakup lebih dari satu baris. Untuk membuat Multiline Comments dimulai dengan "/*" (tanpa petik) kemudian diikuti keterangan atau komen dan diakhiri dengan "*/" (tanpa petik).
package basic;

public class Comments {

   /*
    * Anggap saja ini adalah sebuah
    * method ga sederhana, sehingga
    * saya perlu memberikan penjelasan
    * agak panjang
    */
    double someMethod(int par1, int par2){
        return par1 * par2;
    }
}

Dalam Multiline Comment tidak diperbolehkan memasukan Multiline Comment lagi di dalamnya karena akan menyebabkan error. Contoh Multiline Comment terlarang:
package basic;

public class Comments {

   /*
    * Penjelasan pertama
    * /* terus ada penjelasan lagi */  << TERLARANG
    */
    double someMethod(int par1, int par2){
        return par1 * par2;
    }
}

Tanda * sebelum tiap kalimat jangan dipusingkan, hanyalah untuk memperindah. :D

3. Javadoc Comments
Javadoc Comments ini sangat bermanfaat, terutama jika bekerja dalam sebuah tim. Dengan Javadoc Comments kita tidak perlu membuka file Java atau class ketika ingin mengakses sebuah method dalam class tersebut. Semua keterangan yang kita berikan pada method tersebut akan muncul jika diakses dari class lain. Javadoc Comments dimulai dengan "/**" (lagi, tanpa petik) kemudian diikuti penjelasan dan diakhiri dengan "*/".
package basic;

public class Comments { 
   /** 
    * @param par1 sebuah angka dengan data type primitive int
    * @param par2 sebuah angka dengan data type primitive int
    * @return par1 * par2 sebuah angka dengan data type primitive double hasil perkalian par1 dan par2
    * @author Harry Marwanto
    * @category latihan
    * @since 28 January 2015
    */
    double someMethod(int par1, int par2){
        return par1 * par2;
    }

}

Kemudian beberapa bulan kemudian saya membuat class baru dengan nama Main dan ingin mengakses someMethod-nya class Comments dari class Main
package basic;

public class Main {
 
   public static void main(String[] args){
       Comments com = new Comments();
       com.someMethod(3, 2);
   }

}

Yang akan terjadi ketika ketikan code saya sampai pada "com.som" adalah Eclipse akan memunculkan sebuah window yang berisi informasi mengenai someMethod yang telah kita tulis di class Comments seperti berikut

Berikut adalah daftar identifier yang dipakai dalam Javadoc Comments:
1. @author untuk menjelaskan nama penulis program
2. @deprecated untuk menjelaskan bahwa code atau method sudah kadaluarsa, menekankan kepada pengguna code bahwa code atau method tersebut sebaiknya tidak digunakan lagi
3. @param untuk menjelaskan parameter apa yang digunakan/dibutuhkan oleh program
4. @see untuk memberikan referensi lain (see also....)
5. @since untuk memberitahukan kapan program tersebut direlease
6. @return untuk memberitahukan jenis data type yang diberikan oleh method, dalam contoh di atas adalah berupa data type primitive double
7. @throws menjelaskan exception apa yang dilempar oleh method

Oke, sekian dulu curhatan saya tentang Comments, jangan sungkan untuk protes jika ada yang salah dengan postingan saya, semoga curhatan saya ini tidak merusak mood Anda hari ini. Terima kasih sudah mampir, sampai jumpa di curhatan berikutnya. :D

0 comments:

Hello World

4:38 PM , 1 Comments

Halo pembaca yang masih ga bosen baca curhatan saya, berjumpa lagi dengan saya calon pelajar Computer Science.

HELLO WORLD, itulah pembahasan pertama dari setiap buku Java (juga PHP, mungkin semua bahasa juga).

Untuk tujuan latihan saya membuat project Java baru dengan nama Latihan. Kalo Anda terserah mau pake nama apapun.


Pertama buka menu File >> New >> Java Project

New Java Project
New Java Project

Berikutnya akan muncul window seperti ini

New Java Project

Karena saya baru belajar saya langsung saja klik Finish.


Oke, Siap untuk bertempur.


Sebelum menulis kode saya harus membuat Package. Package adalah cara untuk mengelompokan Class (file java), jika diilustrasikan Package itu adalah folder dalam komputer untuk menyimpan file. Untuk membuat package klik kanan di folder "src" >> New >> Package

New Package

Kemudian akan muncul window seperti ini

Greetings
Untuk latihan mencetak Hello World ini saya membuat package dengan nama greetings.

Woke, saatnya menulis code. Tapi sebelumnya saya harus membuat class baru, saya namakan class saya HelloWorld. Cara membuat class baru yaitu klik kanan pada package "greetings" >> New >> Class

New Java Class
New Class
Kemudian akan muncul window seperti ini
Java: HelloWorld
HelloWorld
Note: dalam penamaan Class tidak boleh ada spasi dan biasanya dimulai dengan huruf capital.

Setelah klik finish. Class HelloWorld akan otomatis memiliki code sebagai berikut

package greetings;

public class HelloWorld {

    public static void main(String[] args) {
    }

}
Ubah code tersebut menjadi seperti ini
package greetings;

public class HelloWorld {

    public static void main(String[] args) {
     System.out.println("Hello World");
    }

}
1. package greetings;
Ingat bahwa tadi saya membuat class HelloWorld ini di dalam package greetings. Sangat dianjurkan bagi pemula untuk selalu memulai code Java dengan deklarasi package-nya. Sebenernya tidak wajib, tapi sangat dianjurkan.

2. public class HelloWorld

Baris ini adalah untuk mendeklarasikan nama class-nya.
public, apa itu public? kenapa public? ini namanya access control level, fungsinya untuk menentukan class HelloWorld ini bisa diakses dari mana. Akan dijelaskan lebih detail nanti.
class, kata ini adalah yang paling wajib, harus ada, karena kata ini yang menentukan kita mau bikin apa, HelloWorld itu apa, apakah class, atau interface, atau method, atau variable.
HelloWorld, adalah nama class-nya. Untuk penamaan class biasanya dimulai dengan huruf kapital, jika terdiri dari lebih dari 1 kata maka semua katanya disambung (wajib) dengan masing-masing kata dimulai dengan huruf kapital, misalnya SatuDuaTiga. Cara penamaan seperti ini tidak wajib, tapi pada umumnya seperti itu untuk memudahkan kita nantinya.


3. public static void main (String[] args)
baris ini adalah pendeklarasian method. Dalam setiap aplikasi java wajib ada method ini karena Java Virtual Machine akan mencari method ini sebagai titik awal untuk mengeksekusi program.
Lagi-lagi public. Ya, access control level bisa digunakan untuk apapun, bisa untuk variable, class, method, interface & enum. 
static (opo meneh iki), dengan adanya static ini method main() menjadi miliknya class bukan miliknya object yang dibuat dari class ini. Bingung? Gapapa, nanti akan dibahas.
void, kata ini mengindikasikan bahwa method main() tidak memberikan return apa-apa, dia hanya melakukan sesuatu pekerjaan. Akan dibahas nanti lebih detail.
main(String[] args), ini adalah nama methodnya, yaitu main, dengan argument String[] args. String mengindikasikan bahwa argumennya merupakan data type String, tanda [] mengindikasikan bahwa dia berupa array, dan args adalah nama argumennya. Penamaan argument ini bisa juga dengan cara String args[], tapi pada umumnya tanda [] selalu melekat pada data typenya bukan pada nama argumentnya.

4. System.out.println("Hello World")
Inilah yang bertugas untuk memunculkan tulisan "Hello World" di console Anda. System adalah sebuah class di API Java, kemudian out adalah sebuah variable object yang ada di dalam class system, dan yang terakhir println (baca: print line) adalah method yang bertugas menge-print apapun yang ada di dalam tanda kurung (). Tanda petik "" tidak dibutuhkan jika Anda memasukan angka karena tanda "" hanya sebagai tanda untuk memberitahu komputer bahwa kita memasukan data type String sebagai argument.


Untuk mencoba menjalankan aplikasi pertama saya klik kanan file HelloWorld>>Run As>>Java Application. Perhatikan di bawah di bagian concole akan mucul tulisan "Hello World"

Jika Anda tidak menemukan window console silakan buka menu Window>>Show View>>Console


Oke, sekian dulu curhatan hari ini, postingannya panjang bener tapi ilmunya dikit. hehe


Sampai jumpa di postingan berikutnya.

1 comments: