From Zero to Hero

Cara Kerja Scope/Block dari Variabel

09:03 Posted by Didit Puji Hariyanto
Sesuai dengan postingan saya sebelumnya, ada hal yang harus kita perhatikan dalam membuat nested IF ataupun menginisialisasi suatu variable, yaitu Block atau sering disebut dengan Scope. Untuk dapat memahami hal ini dengan gampang, saya akan mengilustrasikan dengan memisalkan IF adalah orang.

Jadi ada beberapa orang yang sedang berdiri di gedung yang bertingkat tingkat dan sedang melihat ke arah bawahnya, orang pertama berada di gedung rendah, orang kedua berada di gedung yang lebih tinggi dari orang pertama, orang ketiga berada di gedung yang lebih tinggi dari orang yang kedua, begitu seterusnya. Sehingga orang pertama tidak bisa melihat /mengenal orang kedua dan ketiga, orang kedua hanya melihat/mengenal orang pertama karena ada di bawahnya tapi orang kedua tidak dapat melihat/mengenal orang ketiga, orang ketiga melihat/mengenal orang pertama dan kedua karena ada di bawahnya, sedangkan orang ketiga tidak dapat melihat/mengenal orang yang di atasnya, begitu seterusnya.
Sama seperti ilustrasi di atas, berikut versi java nya.

public class LatihanIf{
                public static void main(String[]args){
                        Scanner input = new Scanner (System.in);
                        int nilai;
                        System.out.println(“Masukkan nilai Anda: ”);
                        nilai = input.nextInt();
int kejujuran;
System.out.println(“Apakah Anda mengerjakannya dengan cara mencontek? ”);
System.out.println(“Tekan 1 jika Ya ; dan 2 jika Tidak ”);
kejujuran = input.nextInt();
if (nilai ==100){
int kedisiplinan = 75;
          if(kejujuran==1){
          System.out.println(“Maaf, Anda Gagal”);
          }else if(kejujuran==2){
          System.out.println(“Nilai Anda sempurna, Grade A);
          System.out.println(“Kedisiplinan Anda = ”+kedisiplinan);
}
} else if (nilai <100 && nilai > 80){
          System.out.println(“Nilai Anda Baik, Grade B”);
}else if(nilai <80 && nilai > 60){
          System.out.println(“Nilai Anda Cukup Baik, Grade C”);
}else {
          System.out.println(“Anda perlu mengulang Pelajaran”);
}
}
}
Berdasarkan codingan di atas, nilai kedisiplinan akan mucul 75, tapi hal ini berbeda jika penempatan coding nya berada di luar Scope.

 public class LatihanIf{
                public static void main(String[]args){
                                Scanner input = new Scanner (System.in);
                                int kedisiplinan = 0;
        int nilai;
        System.out.println(“Masukkan nilai Anda: ”);
        nilai = input.nextInt();
int kejujuran;
System.out.println(“Apakah Anda mengerjakannya dengan cara mencontek? ”);
System.out.println(“Tekan 1 jika Ya ; dan 2 jika Tidak ”);
kejujuran = input.nextInt();
if (nilai ==100){
kedisiplinan = 75;
      if(kejujuran==1){
      int kedisiplinan = 45;
      System.out.println(“Maaf, Anda Gagal”);
      System.out.println(“Kedisiplinan Anda#1 = ”+kedisiplinan);
      }else if(kejujuran==2){
      int kedisiplinan = 80;
      System.out.println(“Nilai Anda sempurna, Grade A);
      System.out.println(“Kedisiplinan Anda#2 = ”+kedisiplinan);
      }
System.out.println(“Kedisiplinan Anda#3 = ”+kedisiplinan);
} else if (nilai <100 && nilai > 80){
                System.out.println(“Nilai Anda Baik, Grade B”);
}else if(nilai <80 && nilai > 60){
                System.out.println(“Nilai Anda Cukup Baik, Grade C”);
}else {
                System.out.println(“Anda perlu mengulang Pelajaran”);
} System.out.println(“Kedisiplinan Anda#4 = ”+kedisiplinan);
}
}

Coba kita analisis sedikit, ketika ‘Kedisiplinan Anda#1’ muncul, maka nilai kedisiplinan adalah 45, ketika ‘Kedisiplinan Anda#2’ muncul, maka nilai kedisiplinan adalah 80, ketika ‘Kedisiplinan Anda#3’ muncul, maka nilai kedisiplinan adalah 75, ketika ‘Kedisiplinan Anda#4’ muncul, maka nilai kedisiplinan adalah 0. 

Hal ini disebabkan oleh adanya Scope / Block yang kita gunakan. Nilai yang berada di dalam tanda kurung kurawal, akan dapat membaca nilai yang berada di luar kurung kurawal, dan juga bisa mengganti nilai yang di luar kurung kurawal menjadi nilai baru di dalam kurung kurawal. Tetapi nilai yang berada di luar kurung kurawal tidak bisa melihat / mengenal nilai yang berada di dalam kurung kurawal.

Gimana, sudah mengerti kan? Sekian dulu untuk penjelasan dari Scope dan If, sebenarnya dalam java tidak hanya mengenal IF Condition untuk membandingkan beberapa kondisi yang ada, masih ada fungsi lainnya yang bernama Switch Case. Hampir sama penggunaannya dari IF, hanya ada beberapa kelebihannya.



Baca lanjutannya di Penggunaan Switch Case dalam Java