Struktur Kontrol

Mulai dari bab ini, kita akan melihat bagaimana komponen dasar tersebut berinteraksi sehingga menjadi program yang lebih kompleks.

Struktur kontrol, yaitu perulangan (loop) dan percabangan (branch), dapat digunakan untuk mengulangi perintah berulang-ulang atau untuk memilih dua atau lebih skenario. Java memiliki beberapa struktur kontrol dan kita akan lihat secara lebih detail kemudian.

Bab ini juga akan membahas tentang desain suatu program. Jika kita dihadapkan pada suatu permasalahan yang akan dipecahkan oleh program komputer, bagaimana caranya kita berfikir untuk merancang program tersebut. Kita akan melihat sebagian jawabannya di bab ini, dan kemudian akan kita gunakan dalam beberapa contoh yang tersedia.

1. BLOK

Blok adalah pernyataan sederhana yang dimulai dengan { dan diakhiri dengan }. Tujuannya untuk mengelompokkan beberapa perintah sehingga lebih dimengerti. Misalnya

{
    Perintah
}

Pernyataan blok biasanya terdapat dalam struktur kontrol, tetapi sebetulnya tanpa struktur kontrol pun, blok tetap berlaku. Contoh sederhana penggunaan blok ini adalah dalam subrutin main() yang kita lakukan pada contoh-contoh sebelumnya.

Berikut ini adalah 2 contoh penggunaan blok.

{
    System.out.println("Hallo");
    System.out.println("Dunia");
}
 
{ // blok ini digunakan untuk menukar isi variable x dan y
    int temp;
    temp = x;
    x = y;
    y = temp;
}

Pada blok kedua, kita mendeklarasikan variable baru temp. Dalam blok kedua ini, variabel apapun yang dideklarasikan tidak akan dapat diakses dari luar blok ini. Variabel ini disebut variabel lokal, karena hanya bisa diakses dari dalam blok.

Ketika komputer menjalankan program ini, komputer akan mempersiapkan memori untuk menyimpan variabel yang dideklarasikan di dalam blok ini. Ketika blok ini selesai dijalankan, komputer akan melepas memori yang digunakan dalam blok ini untuk digunakan oleh bagian program lain.

Konsep "scope" atau jangkauan pada konsep pemrograman, mengacu pada bisa atau tidaknya suatu variabel dilihat oleh bagian program lain. Jangkauan suatu variabel menyatakan di bagian mana variabel ini valid atau dengan kata lain bisa diakses. Jangkauan variabel dalam suatu blok terbatas hanya pada blok tersebut.

Blok sendiri sebetulnya bukan merupakan struktur kontrol. Program akan berjalan seperti biasa dari atas kebawah seperti biasa. Secara umum struktur kontrol dibagi menjadi 2 bagian, yaitu : perulangan dan percabangan.

2. PERULANGAN

Sebagai contoh untuk membahas tentang perulangan, kita lihat pernyataan while, yang memiliki bentuk seperti berikut 

while (suatu_kondisi) {
   perintah
}

Semantik pada pernyataan while tersebut adalah sebagai berikut. Ketika komputer sampai pada pernyataan while, komputer akan melakukan perhitungan pada suatu_kondisi

Apabila suatu_kondisi bernilai true, blok yang berisi perintah akan dilakukan. Setelah komputer sampai pada bagian akhir blok, komputer akan menghitung kembali suatu_kondisi. Jika masih bernilai true, maka blok tersebut akan dieksekusi, dan jika tidak, program akan melompat ke bagian program berikutnya setelah blok berakhir. Atau dengan kata lain, jika suatu_kondisi bernilai false, blok perintah tidak akan dieksekusi.

Berikut ini adalah contoh untuk menulis bilangan 1 hingga 10.

int angka = 1; // inisialisasi variabel, 
kita mulai dengan mengisi variabel angka dengan 1
 
while (angka <= 10) {
     System.out.println(angka); // cetak isi angka di layar
     angka = angka + 1;         // tambah angka dengan 1
}
 
System.out.println("Selesai..."); 


Variabel angka kita inisialiasi (persiapkan) dan kita isi mula-mula dengan 1. Ketika program sampai pada pernyataan while, program akan mengevaluasi apakah angka <= 10. Pada saat program baru dimulai, angka masih bernilai 1, sehingga pernyataan angka <= 10 bernilai true. Dalam hal ini perintah di dalam blok akan dieksekusi, yaitu mencetak angka ke layar, kemudian menambah angka dengan 1. Sekarang angka bernilai 2.
Setelah sampai pada akhir blok, program akan kembali pada awal pernyataan while. Sekarang angka bernilai 2, dan karena 2 masih kurang dari atau sama dengan 10, program akan kembali mengeksekusi perintah dalam blok. Begitu seterusnya hingga angka bernilai 11. Pada saat ini program akan berhenti melakukan perulangan dan berhenti melakukan eksekusi perintah di dalam blok tersebut, kemudian melakukan perintah berikutnya, yaitu menampilkan kata "Selesai...".

3. PERCABANGAN

Pernyataan if memperintahkan komputer untuk memilih salah satu aksi yang akan dilakukan, tergantung pada suatu kondisi tertentu. Bentuknya dapat ditulis sebagai berikut :
if (suatu_kondisi)
     perintah_1;
else 
     perintah_2;
Perintah_1 dan perintah_2 juga bisa berbentuk blok, sehingga pernyataan di atas dapat ditulis juga sebagai berikut

if (suatu_kondisi) {
     perintah_1;
} else {
     perintah_2;
}
 
Ketika komputer sampai pada pernyataan if, komputer akan menghitung apakah suatu_kondisi bernilai true. Jika iya, maka blok perintah berikutnya akan dieksekusi, dalam hal ini perintah_1. Jika tidak, maka blok setelah pernyataan else akan dieksekusi, yaitu perintah_2.

Sebagai contoh, mari kita kembali pada contoh program untuk membalik nilai x dan y, dengan syarat x harus lebih besar dari y. Dalam hal ini, setelah program ini dieksekusi, nilai x akan selalu bernilai lebih kecil dari y, karena jika nilai x lebih besar, nilai x akan ditukar dengan nilai y.

if (x > y) { // jika x lebih besar dari y
    // blok ini digunakan untuk menukar isi variable x dan y
    int temp;
    temp = x;
    x = y;
    y = temp;
}

Contoh berikut adalah program untuk menentukan apakah suatu bilangan merupakan bilangan genap atau bilangan ganjil. Dengan menggunakan operator %, yaitu sisa pembagian, kita dapat menentukan apabila sisa pembagian suatu bilangan dengan 2 adalah 0, maka bilangan tersebut merupakan bilangan genap. Jika tidak, maka bilangan tersebut adalah bilangan ganjil.


if ((x % 2) == 0) {
    System.out.println(x + " adalah bilangan genap");
} else {
    System.out.println(x + " adalah bilangan ganjil");
}
 
Kita akan bahas tentang struktur kontrol di bagian berikutnya. Semoga bagian ini yang merupakan bagian pendahuluan tentang struktur kontrol dapat dimengerti sehingga kita bisa mempelajari konsep yang lebih kompleks lagi.


 


 





Operator

Terbagi Menjadi  5

  • Aritmatika
  • Relasi
  • Logika
  • Kondisi
  • Pemberi Nilai & Type Casting

1. ARITMATIKA OPERATOR

Operator aritmatika digunakan untuk melakukan operasi matematika, seperti penambahan, pengurangan, pembagian, dan modulo (atau sisa pembagian). Contoh penggunaan :

Simbol       Nama operator                  Contoh penggunaan

  +          Operator penjumlahan          n = n + 1;
  -          Operator pengurangan          n = n - 1;
  *          Operator perkalian            n = n * 1;
  /          Operator pembagian            n = n / 1;
  %          Operator sisa pembagian       n = n % 1;
  +          Operator penyambung string    n = "saya "+"makan";

public class AritmatikaDemo {
   public static void main(String[] args) {
        //sedikit angka
        int i = 50;
        int j = 45;
        double x = 35.2569;
        double y = 12.4577;

        System.out.println("Nilai Variabel...");
        System.out.println("int i = " + i);
        System.out.println("int j = " + j);
        System.out.println("double x = " + x);
        System.out.println("double y = " + y);  

        //penjumlahan angka
        System.out.println("Penjumlahan...");
        System.out.println(" i + j = " + (i + j));
        System.out.println(" x + y = " + (x + y));  

        //pengurangan angka
        System.out.println("Pengurangan...");
        System.out.println(" i - j = " + (i - j));
        System.out.println(" x - y = " + (x - y));      

        //perkalian angka
        System.out.println("Perkalian...");
        System.out.println(" i * j = " + (i * j));
        System.out.println(" x * y = " + (x * y));
      
        //pembagian angka
        System.out.println("Pembagian...");
        System.out.println(" i / j = " + (i / j));
        System.out.println(" x / y = " + (x / y));

        //menghitung hasil modulus dari pembagian
        System.out.println("Sisa Pembagian...");
        System.out.println(" i % j = " + (i % j));
        System.out.println(" x % y = " + (x % y));      

        //tipe penggabungan
        System.out.println("Penggabungan Tipe...");
        System.out.println(" j + y = " + (j + y));
        System.out.println(" i * x = " + (i * x));
    }
}

Operator Increment dan Decrement
Operator             Penggunaan                    Keterangan

                                                                Menambahkan nilai 1 pada op;
  ++                          op++                         mengevaluasi nilai op sebelum
                                                                diincrementasi/ditambahkan
   
                                                               Menambahkan nilai 1 pada op;
  ++                          ++op                        mengevaluasi nilai op sesudah
                                                               diincrementasi/ditambahkan

                                                               Mengurangi nilai 1 pada op;
  --                            op--                         mengevaluasi nilai op sebelum
                                                               didecrementasi/dikurangkan

                                                               Mengurangi nilai 1 pada op;
  --                            --op                         mengevaluasi nilai op sesudah
                                                                didecrementasi/dikurangkan


    public class OperatorIncrementDecrement {

        /**
         * menggunakan operator increment dan decrement
         *
         *     
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int x = 0;
            int y = 0;
            y = ++x;
            System.out.println("Contoh operator pada prefix
            (awalan)");
            System.out.println("---------------------------");
            System.out.println("Nilai x baru : " + x);
            System.out.println("Nilai y = ++x : " + y);
    
            x = 0;
            y = 0;
            y = x++;
            System.out.println("\nContoh operator pada sufix
            (akhiran)");
            System.out.println("---------------------------");
            System.out.println("Nilai x baru :" + x);
            System.out.println("Nilai y = x++ :" + y);
        }
    }


2. RELASI OPERATOR

Operator    Penggunaan                          Keterangan
           
     >           op1 > op2                     op1 lebih besar dari  op2
               
     >=         op1 >= op2                   op1 lebih besar dari atau sama dengan op2
               
     <            op1 < op2                     op1 kurang dari op2
               
     <=          op1 <= op2                   op1 kurang dari atau sama dengan op2

     ==              op1 == op2                   op1 sama dengan op2

    !=                op1 != op2                   op1 tidak sama dengan op2


public class RelasiDemo {
    public static void main(String[] args) {
        //beberapa nilai
        int i = 37;
        int j = 42;
        int k = 42;

        System.out.println("Nilai variabel...");
        System.out.println(" i = " + i);
        System.out.println(" j = " + j);
        System.out.println(" k = " + k);

        //lebih besar dari
        System.out.println("Lebih besar dari...");
        System.out.println(" i > j = " + (i > j)); //false
        System.out.println(" j > i = " + (j > i)); //true
        System.out.println(" k > j = " + (k > j)); //false
      
        //lebih besar atau sama dengan
        System.out.println("Lebih besar dari atau sama 
        dengan...");
        System.out.println(" i >= j = " + (i >= j)); //false
        System.out.println(" j >= i = " + (j >= i)); //true
        System.out.println(" k >= j = " + (k >= j)); //true
      
        //lebih kecil dari
        System.out.println("Lebih kecil dari...");
        System.out.println(" i < j = " + (i < j)); //true
        System.out.println(" j < i = " + (j < i)); //false
        System.out.println(" k < j = " + (k < j)); //false
      
        //lebih kecil atau sama dengan
        System.out.println("Lebih kecil dari atau sama    
        dengan...");
        System.out.println(" i <= j = " + (i <= j)); //true
        System.out.println(" j <= i = " + (j <= i)); //false
        System.out.println(" k <= j = " + (k <= j)); //true

        //sama dengan
        System.out.println("Sama dengan...");
        System.out.println(" i == j = " + (i == j)); //false
        System.out.println(" k == j = " + (k == j)); //true
      
        //tidak sama dengan
        System.out.println("Tidak sama dengan...");
        System.out.println(" i != j = " + (i != j)); //true
        System.out.println(" k != j = " + (k != j)); //false
    }
}


3. LOGIKA OPERATOR

Operator         Penggunaan                Keterangan
=====================================================
            
   !             !var                      Logika Not
                
   &&            var1 && var2              Logika AND*
                
   &             var1 & var2               Logika AND
                
   ||            var1 || var 2             Logika OR*

   |             var1 | var2               Logika OR

   ^             var1 ^  var2              Logika XOR

============================================================
* short-circuit evaluation

Logika AND
====================================
var1         var2         Hasil

true         true         true
true         false        false
false        true         false
false        false        false
====================================

    public class TestAND {
        public static void main( String[] args ){

            int i = 0;
            int j = 10;
            boolean test= false;

            //demonstrasi &&
            test = (i > 10) && (j++ > 9);
            System.out.println(i);
            System.out.println(j);
            System.out.println(test);

            //demonstrasi &
            test = (i > 10) & (j++ > 9);
            System.out.println(i);
            System.out.println(j);
            System.out.println(test);
        }
    }

Logika OR
================================
var1         var2         Hasil

true         true         true
true         false        true
false        true         true
false        false        false
============================


    public class TestOR {
        public static void main( String[] args ){
            int i = 0;
            int j = 10;
            boolean test= false;

            //demonstrasi ||
            test = (i < 10) || (j++ > 9);
            System.out.println(i);
            System.out.println(j);
            System.out.println(test);

          
            //demonstrasi |
            test = (i < 10) | (j++ > 9);
            System.out.println(i);
            System.out.println(j);
            System.out.println(test);
        }
    }


Logika Not
=================
var1     Hasil

true     false
false    true
=================

     public class TestNOT {
        public static void main( String[] args ){
            boolean val1 = true;
            boolean val2 = false;
            System.out.println(!val1);
            System.out.println(!val2);
        }
    }


Logika XOR

    public class TestXOR {
        public static void main( String[] args ){
            boolean val1 = true;
            boolean val2 = true;
          
            System.out.println(val1 ^ val2);
          
            val1 = false;
            val2 = true;
            System.out.println(val1 ^ val2);

            val1 = false;
            val2 = false;
            System.out.println(val1 ^ val2);
          
            val1 = true;
            val2 = false;
            System.out.println(val1 ^ val2);
        }
    }
4. OPERATOR KONDISI
  • Simbol     ?:
  • Bentuk umum
             exp1 ? exp2 : exp3

public class ConditionalOperator {
    public static void main( String[] args ){
        int score = 0;
        char answer = 'a';
        score = (answer == 'a') ? 10 : 0;
        System.out.println("Score = " + score );
    }
}
5. Pemberi Nilai & Type Casting 

Operator    Contoh          Ekspresi setara
=====================================================
+=            x += y;         x = (x + y);
-=            x -= y;         x = (x - y);
*=            x *= y;         x = (x * y);
/=            x /= y;         x = (x / y);
%=            x %= y;         x = (x % y);
&=            x &= y;         x = (x &= y);
|=            x |= y;         x = (x | y);
^=            x ^= y;         x = (x ^ y);
<<=           x <<= y;        x = (x << y);
>>=           x >>= y;        x = (x >> y);
<<<=          x >>>= y;       x = (x >>> y);


======================================================
     public class OperatorPemberiNilai {
   
        /**
         * Contoh program menggunakan operator pemberi nilai (
         *
         *
         */
        public static void main(String[] args) {
            int x = 5;
            int y = 10;
    
            x += y;
            System.out.println("Hasil penjumlahan : " + x);
    
            x -= y;
            System.out.println("Hasil pengurangan : " + x);
    
            x *= y;
            System.out.println("Hasil perkalian : " + x);
    
            x /= y;
            System.out.println("Hasil pembagian : " + x);
    
            x %= y;
            System.out.println("Sisa pembagian : " + x);
    
            x &= y;
            System.out.println("Hasil operasi AND : " + x);
    
            x |= y;
            System.out.println("Hasil operasi OR : " + x);
    
            x <<= y;
            System.out.println("Hasil operasi pergeseran bit ke 

            kiri :"+ x);
                  }
           }
 

Variable dan Tipe Data

 Tipe Data
        Tipe Data terbagi menjadi dua :
  • Tipe Data Primitif
    • boolean
    • char
    • byte
    • short
    • int
    • long
    • double
    • float  
  •  Class    
Jenis-jenis Variabel 

Variable adalah item yang digunakan data untuk menyimpan pernyataan objek. Variabel memiliki tipe data dan nama. Tipe data menandakan tipe nilai yang dapat dibentuk oleh variabel itu sendiri. Nama variabel harus mengikuti aturan untuk identifier.
Java memiliki beberapa jenis variabel yang dapat dikelompokkan sebagai berikut :
  • Instance Variables (tidak statis). Dalam bahasa pemrograman berorientasi objek, objek menyimpan variabel yang tidak dideklarasikan dengan kata kunci static dalam kategori non-statis, atau dapat berubah-ubah. Suatu kelas dapat dijelmakan ke dalam beberapa objek. Nilai yang terkandung dalam variabel tak-statis ini berbeda untuk setiap objeknya.
  • Class Variables (statis). Variabel ini merupakan bagian integral dari suatu kelas, dan tidak ada satu objek pun yang dapat menyatakan kepemilikan atas variabel ini. Variabel yang dideklarasikan sebagai statis digunakan bersama oleh semua objek. Variabel ini lebih bersifat global yang nilainya sama untuk setiap objek pada kelas yang bersangkutan.
  • Local Variables. Variabel ini didefinisikan di dalam suatu metoda (method) atau dalam suatu prosedur. Variabel ini bersifat lokal karena hanya dapat diakses oleh metoda atau prosedur tersebut.
  • Parameter.  Paramater atau argumen adalah variabel yang digunakan pada saat suatu metoda atau prosedur dipanggil. Parameter berguna untuk memberikan nilai awal untuk diteruskan (pass) ke dalam suatu prosedur atau metoda.
Suatu variabel baru dapat digunakan apabila telah dideklarasikan. Pernyataan deklarasi variabel digunakan untuk mendeklarasikan satu atau lebih variabel dan memberinya nama. Ketika komputer mengeksekusi deklarasi variabel, komputer akan menyediakan ruangan di memori kemudian menyimpan alamat ini sesuai dengan nama variabel yang diberikan. Deklarasi variable berbentuk seperti :

    <tipe data> <nama> [= nilai awal]  
nama_variabel dapat berupa sebuah nama variabel atau beberapa nama sekaligus yang dipisah dengan koma. Gaya pemrograman yang baik yaitu dengan mendeklarasikan satu variabel dalam satu pernyataan, kecuali variabel tersebut berhubungan erat satu sama lain. Misalnya:
         float  num;
    String nama;
    String nama;
    boolean bol;
    int x,y; 
Atau pendeklarasian variabel bisa juga dilakukan sekaligus dengan pemberian nilainya, seperti pada contoh berikut:
         int num = 5000;
    char ch = 's';
    float angka = 3.14;
    boolean bol = false;

Literal
  • Integer
  • Floating Point
  • Boolean
  • Character
  • String
  • Null
1.Integer Literal
Integer literals dibedakan dalam beberapa format yang berbeda: 
  • Desimal (berbasis 10)
    int angka = 50;
  • Heksadesimal (berbasis 16)
    int angka = 0x2a;
  • Oktal (berbasis 8)
    int angka = 022;
2. Floating Point Literal
    Floating point literals mewakili bentuk desimal dengan bagian yang terpisah.
3. Boolean Literal
    Boolean literals hanya memiliki dua nilai, true atau false.
4. Character Literal
  • Character Literals diwakili oleh karakter single Unicode 16-bit yang menggantikan 8-bit ASCII character set.
  • dalam tanda single quote (' ') contoh: ‘a’    
        \n = tombol enter atau baris baru.
        \r = carriage return.
        \t = tombol tab.
        \b = tombol backspace.
        \\ = karakter \
        \’ = karakter ‘\
        \” = karakter ”\
5. String Literal
  • String literals mewakili beberapa karakter
  • dinyatakan dalam tanda double quote (“ ”)  contoh: “Hello World”
6. Null Literal
Literal terakhir pada bahasa java adalah literal null. Null merupakan kondisi di mana suatu objek tidak diberi alokasi memori. Pada saat suatu objek dideklarasikan, komputer akan mengalokasikan memori untuk objek tersebut. Apabila objek tersebut telah selesai dipergunakan, kita dapat melepas lokasi memori yang digunakan oleh objek tersebut sehingga memori itu dapat digunakan oleh objek lain. Berikut ini adalah contohnya 

obj = null; 

Literal null berfungsi memberi tahu garbage collector (pemulung memori) bahwa objek tersebut tidak lagi terpakai. Kemudian memori akan dilepaskan agar dapat digunakan oleh objek lain.
 
 Contoh Variables
public class VariableSamples {
    public static void main( String[] args ){
        //deklarasi tipe data dengan nama variable
        // result dan tipe data boolean
        boolean result;
        //deklarasi tipe data dengan nama variabel
        // option dan tipe data char
        char option;
        option = 'C'; //menandai 'C' sebagai option
        //deklarasi tipe data dengan nama variabel
        //grade, double tipe data dan telah diinisialisasi
        //ke 0.0
        double grade = 0.0;
    }
}


    Header Banner Ad