Percabangan Pada Pemrograman Dart

Percabangan dipakai untuk mengatur alur program tersebut sehingga terkadang disebut juga dengan kontrol alur atau control flow. Program paling sederhana sekalipun pasti akan memiliki bagian untuk memutuskan apa yang perlu dilakukan pada suatu kondisi:

  • Apakah user sudah dewasa (berumur lebih dari 17 tahun)?
  • Apakah user sudah terdaftar?
  • Apakah user sudah login?
  • Apakah email sudah terverifikasi?
  • Apakah status koneksi internet online?

Pertanyaan-pertanyaan di atas merupakan kondisi yang akan sering ditemukan pada sebuah aplikasi mobile. Semuanya merupakan pertanyaan dengan jawaban ya atau tidak atau dalam bahasa pemrograman pertanyaan yang bisa dijawab dengan true atau false.

Selanjutnya, bagaimana cara memeriksa suatu kondisi dalam bahasa pemrograman Dart?

Percabangan if

Metode yang paling dasar untuk melakukan percabangan dalam bahasa pemrograman apapun adalah perintah if. Ia dipakai untuk mengeksekusi suatu blok apabila komparasinya berhasilkan nilai true.

var age = 22;

if (age > 17) {
    print("Adult user");
}

Blok if pada kondisi di atas memeriksa apakah user sudah dewasa atau belum berdasarkan umurnya. Apabila umurnya lebih dari 17 tahun, maka user dianggap sudah dewasa.

Lalu bagimana bila kita ingin melakukan sesuatu bila user belum berusia 17 tahun?

Percabangan dengan else

Blok else dipakai untuk melakukan sesuatu apabila kondisi pada blok if tidak terpenuhi.

var age = 22;

if (age > 17) {
    print("Adult user");
} else {
    print("Non-adult user");
}

Saat menggunakan percabangan if-else, hanya akan ada salah satu blok saja yang dieksekusi berdasarkan hasil komparasinya, apakah memenuhi atau tidak memenuhi syarat.

Percabangan dengan else if

Untuk beberapa kasus, kita memerlukan kondisi tambahan lainnya seperti pada contoh:

  • Baby: 0-2 tahun
  • Child: 3-12 tahun
  • Teen: 13-17 tahun
  • Young Adult: 18-27 tahun
  • Adult: lebih dari 27 tahun

Kondisi di atas bisa dikontrol dengan memanfaatkan else if.

var age = 15;

if (age > 27) {
    print("An adult");
} else if (age > 17) {
    print("A young-adult");
} else if (age > 12) {
    print("A teenager");
} else if (age > 3) {
    print("A child");
} else {
    print("A baby");
}

Sama seperti sebelumnya, dalam suatu deretan if-else if-else, hanya akan ada satu blok yang dieksekusi. Program akan menguji kondisinya satu per satu sampai ada kondisi yang bernilai true. Bila tidak ada, maka blok else akan selalu dieksekusi. Ubah-ubah nilai variabel age untuk mendapatkan hasil yang berbeda-beda.

Saat membuat kondisi dengan banyak percabangan, perhatikan urutan yang ditulis karena bisa menentukan blok mana yang akan dieksekusi terlebih dahulu.

Operator Boolean

Pada contoh penggunaan percabangan if, kita melakukan komparasi dengan menguji apakah sautu nilai bernilai true atau tidak dengan memakai operator boolean. Operator inilah yang akan menghasilkan nilai true atau false dengan melakukan perbandingan.

Berikut bagaimana cara melakukan perbandingan dalam bahasa pemrograman Dart.

Menguji Nilai Sama Dengan

Menguji nilai sama dengan dilakukan menggunakan equality operator yang dipakai dengan simbol ==, dua kali tanda sama dengan. Salah satu kesalahan yang paling sering dilakukan pemula adalah menggunakan satu kali tanda sama dengan saat menulis kondisi if.

var department = "Computer Science";

print(department == "Mathematics"); // false

Menguji Nilai Tidak Sama Dengan

Apabila simbol == dipakai untuk menguji nilai sama dengan, maka untuk menguji nilai tidak sama dengan dilakukan dengan simbol != yang disebut juga sebagai inequality operator.

var department = "Computer Science";

print(department != "Mathematics"); // true

Menguji Nilai Lebih Dari dan Kurang Dari

Untuk membandingkan dua angka dan memeriksa apakah salah satunya bernilai lebih besar atau lebih kecil dapat dilakukan dengan simbol > atau <. Kedua simbol ini bersifat exclusive, artinya angka yang sama akan dianggap false.

print(4 < 5); // true
print(5 < 5); // false
print(4 > 5); // false
print(5 > 5); // false

Untuk memeriksa kondisi lebih dari sama dengan, dilakukan dengan simbol >=.

print(4 <= 5); // true
print(5 <= 5); // true

Sebaliknya memeriksa kondisi kurang dari sama dengan dilakukan dengan simbol <=.

print (5 >= 5); // true

Operator AND

Pada beberapa contoh kasus di atas, kita selalu memeriksa satu kondisi saja. Pada mayoritas kasus, memeriksa satu kondisi saja cukup. Namun tidak jarang juga akan ada dua kondisi yang perlu diperiksa sekaligus. Dua kondisi ini bisa digabungkan dalam satu komparasi, salah satunya dengan operator AND atau simbol &&.

var age = 16;
var withParent = true;

if (age < 17 && withParent) {
    print("Can buy ticket");
} else {
    print("Can't buy ticket");
}

Pada contoh di atas kita memeriksa apakah user berusia dibawah 17 tahun dan datang bersama orang tua. Bila keduanya bernilai true maka akan menghasilkan nilai true juga. Namun bila salah satu false, maka nilai akhirnya menjadi false juga.

Untuk memeriksa kondisi == true, bisa disingkat tanpa menuliskannya. Pada contoh di atas cara yang lebih lengkap adalah dengan menulis withParent == true, tapi karena variabel ini bertipe boolean, maka bisa disingkat saja.

Operator OR

Dalam kondisi AND, semua komparasi harus bernilai true sementara pada operator OR cukup satu saja ondisi bernilai true maka hasil ahirnya akan bernilai true. Penulisan operator or menggunakan simbol ||.

var status = "closed";

var isStatusAccepted = status == "closed" || status == "approved"

print (isStatusAccepted)

Operator NOT

Secara sederhana operator not akan menyangkal suatu nilai boolean. Operator not dipakai dengan menambahkan simbol ! didepan suatu variabel.

var age = 20;
var isAdult = age > 17;

print(!isAdult)

Pada contoh di atas isAdult akan bernilai true karena komparasi nilai variabel age lebih besar dari 17. Namun, dengan adanya operator not, maka nilai pada komparasi if menjadi false (not true berarti false dan not false berarti true).

Prioritas Operator dengan ()

Mirip seperti pada operasi aritmatika, penggunaan operator di bahasa pemrograman Dart bisa diatur urutan prioritasnya, mana kondisi yang akan diuji terlebih dahulu dengan menggunakan simbol (). Penambahan simbol dalam kurung tersebut akan membantu kode menjadi lebih mudah dibaca ketika satu proses komparasi melibatkan banyak kondisi.

print((6 > 2 && 1 < 3) || 1 < 3); // true

Ternary Operator

Saat memiliki kondisi if-else seperti pada contoh di bawah:

var level = 101;
String message;

if (level > 100) {
    message = "You win!";
} else {
    message = "Play more games";
}

Bisa kita tulis ulang dengan ternary operator untuk mendapatkan kode yang lebih ringkas.

String message = (level > 100) ? "You win!" : "Play more games";

Sintaks menggunakan ternary operator adalah:

(kondisi yang ingin diperiksa) ? nilai jika true : nilai jika false;

Terkadang menggunakan ternary operator membuat program menjadi tidak begitu jelas di baca. Kita harus lebih cermat memahami alur kode yang ditulis daripada menggunakan if-else biasa yang meskipun lebih panjang namun logic masing-masing blok akan terlihat lebih jelas.

Switch

Selain menggunakan if-else juga ternary operator, cara lain untuk melakukan kontrol alur program adalah menggunakan perintah switch. Aturan penulisannya sebagai berikut:

var command = 'OPEN';
switch (command) {
  case 'CLOSED':
    // do something
    break;
  case 'PENDING':
    // do something
    break;
  case 'APPROVED':
    // do something
    break;
  case 'DENIED':
    // do something
    break;
  case 'OPEN':
    // do something
    break;
  default:
    print("Command is not valid");
}

Setelah menuliskan perintah switch, tulis nama variabel yang ingin diperiksa isinya di dalam tanda kurung. Setiap case akan memeriksa apakah variabel yang ada di dalam tanda kurung nilainya sama dengan yang ditentukan oleh case. Jika sama, maka kode yang berada di antara titik dua dan break; akan dieksekusi.

Perintah break berfungsi untuk mengelompokkan satu case dengan case lain. Bila suatu case tidak memiliki break dan di bawahnya ada case lain, maka blok case di bawahnya akan ikut dieksekusi.

Blok default berfungsi sama dengan blok else, dieksekusi hanya bila tidak ada case yang sesuai.

Seperti percabangan if, dengan switch kita juga bisa memakai logical operator:

switch (value) {
  case value == 2 || (value / 2) == 0 : // or 
  case value > 0 && value % 2 == 1: // and
  default:
    print("Error");
}

Comments

One response to “Percabangan Pada Pemrograman Dart”

  1. […] bagaimana mendeklarasikan suatu variabel, bagaimana menentukan tipe data dari suatu variabel, serta bagaimana membuat program yang kita buat bisa memutuskan sesuatu berdasarkan suatu nilai. Program-program tersebut ditulis dalam program main yang dieksekusi baris demi baris sampai dengan […]

Leave a Reply

Your email address will not be published. Required fields are marked *