Operator Logika Dart

Operasi logika hanya memproses nilai boolean (true /false), berfungsi untuk memeriksa apakah suatu syarat terpenuhi. Hanya ada dua hasil akhir: true (benar, syarat terpenuhi), false (salah, syarat tidak terpenuhi).

Semua perintah if, pengecekan perulangan while/for, dan syarat switch di kode semuanya diimplementasikan dengan operasi logika di balik layar.

Terdapat tiga jenis utama: AND, OR, NOT

OperatorNamaKeterangan Fungsi
&&Logika ANDHasil baru true jika kedua sisi bernilai true; mendukung evaluasi pintas
||Logika ORHasil langsung true jika salah satu sisi bernilai true; mendukung evaluasi pintas
!exprLogika NOT (pembalik nilai)Membalik nilai boolean: true jadi false, false jadi true

Konsep AND, OR, NOT mirip dengan rangkaian seri dan paralel yang dipelajari di sekolah menengah. Rangkaian seri sama dengan AND, rangkaian paralel sama dengan OR.

1. Logika NOT !

Membalik nilai dari satu ekspresi boolean tunggal.

Sintaks:

!ekspresi_boolean

Contoh

void main() {
  bool isMale = false;
  print(!isMale); // true

  bool flag = true;
  print(!flag); // false
}Code language: PHP (php)

Nilai awal isMale adalah false dan flag adalah true, setelah diproses operator NOT akan berubah menjadi nilai kebalikannya.

Bisa juga diterapkan ke ekspresi utuh, contohnya

void main() {
  int age = 12;
  print(!(age>18)); // true
}Code language: JavaScript (javascript)

Hasil awal age > 18 adalah false, namun setelah diberi tanda ! di depan, nilainya terbalik dan keluar true.

2. Logika AND &&

EkspresiHasil
true && truetrue
true && falsefalse
false && truefalse
false && falsefalse

Hasil hanya true jika kedua sisi bernilai true; jika salah satu sisi false, hasil pasti false.

Karakteristik evaluasi pintas: jika sisi kiri bernilai false, kode di sisi kanan tidak akan dijalankan dan langsung mengembalikan false.

Lampu baru menyala (true) jika dua saklar sama-sama tertutup (true). Jika ada satu saklar terbuka (false), lampu tidak menyala (false). Apabila sisi kiri sudah diketahui false, bagian kanan tidak perlu dijalankan.

void main() {
  bool fun1() {
    print("Fungsi telah dijalankan!");
    return true;
  }

  bool left = false;
  // Sisi kiri false, maka fun1() di kanan tidak berjalan
  bool res = left && fun1();
  print("Hasil akhir: $res");
}Code language: PHP (php)

Hasil eksekusi

D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Hasil akhir: false
Code language: JavaScript (javascript)

Meskipun di dalam fun1 terdapat error atau pengecualian, tidak akan muncul pesan kesalahan karena fungsi sama sekali tidak dijalankan.

Contoh penggunaan logika AND

void main() {
  String name = 'admin';
  String password = '123321';

  // && syarat terpenuhi hanya jika kedua sisi true
  if (name=='admin' && password =='456654') {
    print("Login berhasil");
  } else {
    print("Username atau password salah");
  }
}Code language: JavaScript (javascript)

Hasil eksekusi

D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Username atau password salahCode language: CSS (css)

3. Logika OR ||

Jika sisi kiri bernilai true, kode di sisi kanan tidak dijalankan dan langsung mengembalikan true.

EkspresiHasil
true || truetrue
true || falsetrue
false || truetrue
false || falsefalse

Lihat contoh berikut

void main() {
  bool fun1() {
    print("Fungsi dijalankan");
    return true;
  }
  // Sisi kiri true, terjadi evaluasi pintas sehingga fun1() tidak berjalan
  bool res = true || fun1();
  print(res); // true
}Code language: PHP (php)

Karena sisi kiri operator || bernilai true, fungsi fun1 di sebelah kanan tidak akan dijalankan.

Dari dua saklar, lampu akan menyala jika minimal satu saklar tertutup (true).

void main() {
        bool isParentAgree = true;
	int age = 12;
	if(age>=13 || isParentAgree){
	  print("Boleh masuk");
	}
}Code language: JavaScript (javascript)

Ringkasan

A && B: Jika A bernilai false, langsung kembalikan false, B tidak akan diperiksa maupun dijalankan

A || B: Jika A bernilai true, langsung kembalikan true, B tidak akan diperiksa maupun dijalankan

Meningkatkan kecepatan eksekusi program sekaligus menghindari error (sering dipakai untuk pengecekan nilai null)

Contoh:

String? name;
// Hanya akses length jika name tidak null, evaluasi pintas menghindari error null
if(name != null && name.length > 0) 
{

}Code language: JavaScript (javascript)

Jika langsung memanggil name.length akan menghasilkan error, karena name bernilai null dan tidak memiliki properti length. Karena ada pengecekan name != null di awal, apabila name null maka syarat pertama sudah false sehingga bagian belakang tidak dijalankan dan tidak ada error.

Prioritas ketiga operator logika

! > && > ||

Sama seperti operasi matematika, operator dengan prioritas tertinggi dihitung duluan. Gunakan tanda kurung () jika ingin mengubah urutan perhitungan.

if (!done && (col == 0 || col == 3)) {
  // ...Lakukan sesuatu...
}Code language: JavaScript (javascript)

Urutan perhitungan langkah demi langkah:

  1. Dalam kurung: hitung dulu col == 0 || col == 3 (cek apakah kolom bernilai 0 atau 3)
  2. Lakukan pembalik nilai dengan !done
  3. Lakukan operasi && terhadap dua hasil sebelumnya

Contoh

void main() {
  bool done = false;
  int col = 3;

  // Contoh resmi
  if (!done && (col == 0 || col == 3)) {
    print("Logika dijalankan: belum selesai dan kolom adalah 0 atau 3");
  }

  // Demo logika NOT !
  bool isFinish = true;
  print(!isFinish); // false

  // Demo logika AND &&
  int a = 10, b = 20;
  if (a > 5 && b > 10) {
    print("a lebih dari 5 DAN b lebih dari 10");
  }

  // Demo logika OR ||
  int score = 55;
  if (score < 60 || score > 90) {
    print("Nilai tidak lulus ATAU nilai sangat bagus");
  }

  // Demo evaluasi pintas
  bool func() {
    print("Fungsi dijalankan");
    return true;
  }
  false && func(); // Sisi kiri false, func tidak mencetak apapun
  true || func(); // Sisi kiri true, func tidak mencetak apapun
}Code language: PHP (php)

Hasil eksekusi

D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Logika dijalankan: belum selesai dan kolom adalah 0 atau 3
false
a lebih dari 5 DAN b lebih dari 10
Nilai tidak lulus ATAU nilai sangat bagusCode language: JavaScript (javascript)

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *