Senin, 31 Oktober 2016

Dasar-dasar Java Bagian 2: Tipe, Metode, dan Kondisi

Setelah membahas dasar-dasar java pada postingan sebelumnya kali ini kita akan membahas materi lanjutannya. Yaitu mengenai tipe-tipe data yang lain, apa dan bagaimana metode bekerja dan operasi kondisi. Baik langsung loncat ke pembahasannya.

Indeks Tutorial:

  • Mengenal tipe data secara lebih mendalam
  • Metode
  • Operasi Kondisi

Mengenal tipe data secara lebih mendalam

Pembagian

Untuk melakukan operasi pembagian di Java kita menggunakan simbol "/". Bagaimana cara sebuah operasi pembagian bekerja, berbeda jika diterapkan pada tipe data integer dan double.

Untuk lebih memahaminya mari kita simak contoh operasi berikut ini:

double a = 5.0/2.0;   // a = 2.5
int b = 4/2;   // b = 2
int c = 5/2;   // c = 2
double d = 5/2;   // d = 2.0

Penjelasan:
a bernilai 2.5, karena pada deklarasi variabel a, dilakukan assignment dengan nilai desimal secara eksplisit yaitu 5.0 dan 2.0. Jadi hasil operasinya pun menghasilkan nilai desimal/double yaitu 2.5 (satu titik di belakang koma).

b bernilai 2, sesuai dengan nilai assignmentnya 4/2 = 2.

c bernilai 2, muncul pertanyaan mengapa c tidak bernilai 2.5? Jawabannya adalah karena c bertipe data integer atau bilangan bulat, sehingga bilangan di belakang koma akan diabaikan.

d bernilai 2, muncul pertanyaan mengapa c tidak bernilai 2.5? padahal kan tipe datanya sudah double? Jawabannya adalah karena pada assignment variabel tidak ditulis dalam bilangan double (tidak ditulis bilangan di belakang koma), sehingga ketika operasi pembagian dilakukan nilai masih dianggap integer.


Urutan pengerjaan Operasi Aritmatika

Beberapa aturan yang perlu diperhatikan dalam pengerjaan operasi aritmatika yaitu:
Prioritas pengerjaan seperti pada operasi matematika, dari kiri ke kanan.
Sisi sebelah kanan dari tanda = dikerjakan dahulu
Tanda kurung adalah prioritas tertinggi

Contoh:

double x = 3 / 2 + 1;  //x = 2.0
double y = 3 / (2 + 1);  //y = 1.0

Dari contoh di atas dapat diketahui bahwa adanya tanda kurung dapat mempengaruhi hasil pengerjaan.


Kecocokan Tipe Data

Dalam assignment sebuah variabel, java selalu memastikan bahwa nilai yang dimasukkan ke dalam variabel adalah sesuai dengan tipe datanya.

Contoh:

String five = 5; //ERROR!

Deklarasi variabel di atas akan menghasilkan error di bawah ini:

test.java.2: incompatible types
found: int
required: java.lang.String
String five = 5;

karena terjadi ketidaksesuaian antara tipe data yang seharusnya string tapi dimasukkan variabel 5 yang bertipe integer. Begitu pula sebaliknya, ketika kita melakukan deklarasi variabel bertipe integer kemudian melakukan assignment dengan mengisinya dengan data bertipe string maka akan terjadi error.


Konversi dengan casting

Pada pembahasan sebelumnya sudah kita bahas bahwa tipe variabel dan tipe data yang dimasukkan ke variabel harus sesuai. Nah pada bagian ini kita akan belajar melakukan casting, agar bisa menyesuaikan tipe data yang dimasukkan ke variabel. Agar lebih jelas mari kita lihat contoh di bawah ini:


int a = 2;    // a = 2
double a = 2;   // a = 2.0 (Secara implisit akan dikonversi ke tipe double)

int a = 18.7;   // ERROR
int a = (int)18.7;  // a = 18

double a = 2/3;   // a = 0.0
double a = (double)2/3; // a = 0.6666...

Nah bagi yang belum tahu casting itu yg mana, lihat di bagian sebelah kanan tanda = ada sebuah tipe variabel yang ada di dalam kurung, itulah casting. Jadi tipe variabelnya ditegaskan kembali agar tidak menghasilkan ERROR incompatible type.


Metode / Methods

Method adalah sekumpulan statement yang berguna untuk melakukan tugas tertentu. Mari kita cermati contoh sebuah metode di bawah ini:

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

void adalah tipe nilai return dari method tersebut. Jadi method ada yang mengembalikan nilai ada yang tidak, nah jika tidak mengembalikan nilai maka memakai void. Menyesuaikan saja, kalau kembaliannya berupa angka ya memakai int atau double kalau teks ya memakai String.

main adalah nama dari method tersebut, method main sendiri adalah method utama yang harus ada disetiap program. karena compiler akan memanggil method main terlebih dahulu dalam eksekusi program.

String[] args adalah parameter yang dilewatkan ke method, parameter terdiri dari tipe data dan nama variabel. Pada contoh ini tipe datanya String[] dan nama variabelnya args.

tanda kurung kurawal "{}" menandai scope dari method tersebut, jadi semua statement yang ada dalam kurung kurawal adalah milik dari method tersebut.

Membuat method

berikut ini adalah contoh pembuatan method

public static void namaMethod(){
  STATEMENTS
}

Untuk memanggil sebuah method kita hanya perlu memanggil nama dari method tersebut, misalnya untuk memanggil method di atas yaitu dengan:

namaMethod();

Contoh yang lain:

class Lines{
 public static void newLine(){
  System.out.println(""); //mencetak 1 baris baru
 }
 
 public static void threeLines(){
  newLine(); newLine(); newLine(); //mencetak 3 baris baru
 }
 
 public static void main(String[] arguments){
  System.out.println("Line 1");
  threeLines();    //memanggil method threeLines()
  System.out.println("Line 2");
 }
}


Penjelasan:
Pada method newLine() berisi statement untuk mencetak 1 baris baru.
Method threeLines() berisi statement yang memanggil method newLine() sebanyak 3 kali. Jadi nanti akan mencetak baris baru sebanyak tiga kali.
Kemudian pada method utama/main dipanggil method threeLines(), yang fungsinya seperti telah dijelaskan mencetak tiga baris baru.


Parameter

Parameter adalah variabel yang dilewatkan ke dalam method untuk diproses, untuk mendeklarasikan parameter kita harus menulis tipe data kemudian diikuti dengan nama variabelnya.

Contoh:

public static void namaMethod(TIPE NAMA){
 STATEMENTS
}

Cara memanggil method yang memiliki parameter adalah:

namaMethod(EXPRESSION);

EXPRESSION disini bisa berupa nilai, variabel, objek, atau yang lain yang intinya harus bertipe sama dengan tipe parameter yang telah kita tentukan ketika deklarasi method.

Contoh penggunaan parameter:

class Square{
 public static void printSquare(int x){
  System.out.println(x*x);
 }
 
 public static void main(String[] args){
  int value = 2;
  printSquare(value);
  printSquare(3);
  printSquare(value*2);
 }
}

Sintaks di atas akan menghasilkan output sbb:
4
9
16

Contoh penggunaan parameter 2:

class Square2{
 public static void printSquare(int x){
  System.out.println(x*x);
 }
 
 public static void main(String[] args){
  printSquare("hello");
  printSquare(5.5);
 }
}

Silakan compile sintaks di atas, dan amati bagaimana hasilnya. Jika menghasilkan error kira-kira apa penyebabnya?

Contoh penggunaan parameter 3:

class Square3{
 public static void printSquare(double x){
  System.out.println(x*x);
 }
 
 public static void main(String[] args){
  printSquare(5);
 }
}

Multiple Parameters

Jumlah parameter yang dilewatkan di suatu argument tidak dibatasi jumlahnya. Kita bisa meletakkan lebih dari satu paremeter.

Contoh:

[...] namaMethod(TIPE namaParameter1, TIPE namaParameter2){
 STATEMENTS
}

Untuk memanggil method tersebut caranya dalah sbb:

namaMethod(argument1, argument2);


Contoh:

class Multiply{
 public static void times(double a, double b){
  System.out.println(a * b);
 }
 
 public static void main(String[] args){
  times(2, 2);
  times(3, 4);
 }
}

Jika dijalankan maka sintaks di atas akan menghasilkan out sbb:
4.0
12.0


Return Value

Sebuah method bisa mengembalikan suatu nilai setelah method tersebut dijalankan. Nah tipe data dari nilai kembalian tersebut harus dijadikan tipe dari methodnya.

Contoh:

public static TYPE NAME(){
 STATEMENTS
 return EXPRESSION 
}

Ingat! Jika tipe nya adalah void berarti tidak mempunyai tipe return value, berarti suatu method tidak mengembalikan return value.

Contoh method yang tidak mengembalikan nilai / tidak mempunyai return value:

class Square4{
 public static void printSquare(double x){
  System.out.println(x*x);
 }
 
 public static void main(String[] args){
  printSquare(5);
 }
}

Jika dijalankan maka sintaks di atas akan menghasilkan out sbb:
25.0

Sedangkan di bawah ini adalah contoh method yang mempunyai return value bertipe double:

class Square5{
 public static double Square(double x){
  return x*x;
 }
 
 public static void main(String[] args){
  System.out.println( square(5) );
  System.out.println( square(2) );
 }
}


Jika dijalankan maka sintaks di atas akan menghasilkan out sbb:
25.0
4.0


Variable Scope / Jangkauan Variabel

Penggunaan variabel hanya dibolehkan dilingkup dimana ia dideklarasikan, yaitu didalam blok ({}). Kemudian parameter dalam sebuah method, berlaku layaknya mendeklarasikan variabel baru dalam sebuah method.

Contoh:

class SquareChange{
 public static void printSquare(int x){
  System.out.println("printSquare x = + x");
  x = x * x;
  System.out.println("printSquare x = + x");
 }
 
 public static void main(String[] args){
  int x = 5;
  System.out.println("main x = " + x);
  printSquare(5);
  System.out.println("main x = " + x);
 }
}

Jika sintaks di atas dijalankan maka outputnya adalah sbb:
main x = 5
printSquare x = 5
printSquare x = 25
main x = 5

Dapat dilihat bahwa method printSquare() memproses angka 5 (variabel x) sehingga menghasilkan angka 5 dan 25 ketika method tsb dipanggil. Namun nilai dari variabel x pada method main tidak berubah nilainya karena nilai x yang diolah oleh method printSquare adalah sebuah parameter (variabel yang hanya berlaku di dalam method printSquare() ).

class Scope{
 public static void main(){
  int x = 5;
  if(x == 5){
   int x = 6;    //error duplikasi deklarasi variabel x
   int y = 72;
   System.out.println("x = " + x + " y = " + y);
  }
  System.out.println("x = " + x + " y = " + y); //error variabel y tidak dikenali
 }
}

Jika sintaks di atas dijalankan maka kan menghasilkan error, bahwa variabel y tidak dikenali karena varibel y hanya hidup di dalam statement if(). Kemudian deklarasi variabel x di dalam statement if juga error karena variabel x sudah dideklarasikan sebelumnya.


Metode = Membangun Blok

Beberapa konsep tentang metode:

Program yang besar dibangun dari kumpulan method kecil.
Method dapat dikembangkan, diuji, dan digunakan secara individual.
Pengguna tidak perlu tahu bagaimana sebuah method bekerja, yang terpenting method dapat berjalan dengan baik.
Dalam Ilmu Komputer, ini disebut abstraction/abstraksi.


Beberapa fungsi Matematika yang ada di Java:

Math.sin(x)   //Untuk mencari nilai sinus.
Math.cos(x)   //Untuk mencari nilai cosinus.
Math.pow(x, y)  //Untuk mencari nilai bilangan berpangkat.
Math.PI    //Untuk menulis nilai phi (3.14).
Math.log(x)   //Untuk mencari nilai log.


Operasi Kondisi

Operasi kondisi adalah sebuah operasi yang dijalankan apabila syarat tertentu terpenuhi.

Statement if

Statement di dalam statement if dijalankan jika konsdisinya bernilai benar/true.

Bentuknya adalah sbb:

if(KONDISI){
 STATEMENT
}

Contoh:

class kondisi{
 public static void test(int x){
  if(x > 5){ //apakah x lebih besar dari 5
   System.out.println(x + "is > 5"); //jalankan statement jika kondisi bernilai true
  }
 }
 
 public static void main(){
  test(6);
  test(5);
  test(4);
 }
}

Jalankan sintaks di atas dan analisa apa yang terjadi.


Operator Perbandingan

Operator Perbandingan adalah operator yang digunakan untuk membandingkan 2 nilai.

x > y : x lebih besar dari y
x < y : x lebih kecil dari y
x <= y : x lebih kecil atau sama dengan y
x >= y : x lebih besar atau sama dengan y

x == y : x sama dengan y

Perlu diperhatikan jika == adalah operator perbandingan sedangkan = adalah operator assignment (untuk memberikan nilai).


Boolean Operator / Operator Logika

Adalah operator untuk mengetahui nilai kebenaran.

&& : logika AND (bernilai benar jika kedua pernyataan bernilai benar)
|| : logika OR (bernilai benar jika salah satu pernyataan bernilai benar)

Contoh:

if(x > 6){
 if(x < 9){
  ...
 }
}

Sintaks di atas sama dengan sintaks berikut ini:

if(x > 6 && x < 9){
 ...
}

Dengan menggunakan sintaks kedua ini kita bisa lebih menghemat baris kode, dari pada memeriksa dua kali mending digabungkan saja dengan operator AND.


else

Kondisi else adalah kondisi yang dipasangkan dengan kondisi if, jika kondisi if tidak terpenuhi maka statement milik kondisi else yang dijalankan.

Bentuknya adalah sbb:

if(KONDISI){
 STATEMENT
} else {
 STATEMENT
}

Contoh:

class kondisi{
 public static void test(int x){
  if(x > 5){
   System.out.println(x + " is > 5");
  } else {
   System.out.println(x + " is not > 5");
  }
 }

 public static void main(String[] args){
  test(6);
  test(5);
  test(4);
 }
}



else if

Jika kita ingin menggunakan beberapa kondisi maka else if lah jawabnnya.

Bentuk dari operasi kondisi else if adalah sbb:

if(KONDISI){
 STATEMENT
} else if(KONDISI) {
 STATEMENT
} else if(KONDISI) {
 STATEMENT
} else {
 STATEMENT
}

Contoh:

class kondisi{
 public static void test(int x){
  if(x > 5){
   System.out.println(x + " is > 5");
  } else if(x == 5) {
   System.out.println(x + " is equals 5");
  } else {
   System.out.println(x + " is not > 5");
  }
 }

 public static void main(String[] args){
  test(6);
  test(5);
  test(4);
 }
}


Method untuk Konversi Tipe Data
int ke String:
String five = 5;   //ERROR!
String five = integer.toString(5);
String five = "" + 5;  //five = "5"

String ke int:
int foo = "18";    //ERROR!
int foo = Integer.parseInt("18"); //foo = 18

Catatan:
Jangan pernah menggunakan operator == ke variabel bertipe double!


Studi kasus: Foo Corporation

Buatlah fungsi untuk mencetak gaji berdasarkan gaji pokok dan jam kerja.
Lembur: Lebih dari 40 jam, gajinya menjadi 1.5 dari gaji pokok.
Gaji minimum: Rp.100.000/jam
Jam kerja maksimal: 60 jam per minggu

Jawaban: (Jawaban bisa bermacam-macam tergantung bagaimana cara kita masing-masing)

class hitungGaji{
 public static void gaji(int jamKerja){
  int gajiPokok = 100000;
  
  if(jamKerja > 60){
   System.out.println("Anda melebihi jam Kerja!");
  } else if (jamKerja > 40){
   System.out.println("Jam kerja Anda : " + jamKerja + ", Gaji Anda adalah Rp." + ( (gajiPokok * jamKerja)*1.5) );
  } else {
   System.out.println("Jam kerja Anda : " + jamKerja + ", Gaji Anda adalah Rp." + (gajiPokok * jamKerja) );
  }
 }

 public static void main(String[] args){
  gaji(40);
  gaji(45);
  gaji(66);
 } 
}

Jika sintaks di atas dijalankan akan menghasilkan output sbb:

Jam kerja Anda : 40, Gaji Anda adalah Rp.4000000
Jam kerja Anda : 45, Gaji Anda adalah Rp.6750000.0
Anda melebihi jam Kerja!


Sekian tutorial kali ini semoga bermanfaat, jika ada pertanyaan maupun saran silakan tulis di kolom komentar :)

Referensi:
Sumber

0 comments:

Posting Komentar