Operator Aritmatika Dart

Operator Aritmatika Biner Dasar

Digunakan untuk operasi dua bilangan, ada total 7 jenis, meliputi empat operasi hitung biasa, pembagian bulat, sisa bagi, operator negasi unary

OperatorKeterangan Fungsi
+Penjumlahan
-Pengurangan
-ekspresiUnary minus (membalik tanda bilangan)
*Perkalian
/Pembagian biasa, hasil selalu tipe double bilangan pecahan
~/Pembagian bulat, buang bagian pecahan, kembalikan tipe int
%Modulus (mengambil sisa hasil pembagian bulat)

Pembagian memiliki ciri khas yang berbeda dari bahasa pemrograman lain: operator / selalu menghasilkan bilangan pecahan. Jika ingin hasil bilangan bulat pakai ~/, ini hal penting untuk pembaca yang sudah punya dasar pemrograman.

Contoh kode:

void main() {
        // Uji penjumlahan, pengurangan, perkalian, pembagian, pembagian bulat dan modulus
	print(2 + 3 == 5);
	print(2 - 3 == -1);
	print(2 * 3 == 6);
	print(5 / 2 == 2.5);  // Pembagian biasa menghasilkan double pecahan
	print(5 ~/ 2 == 2);   // Pembagian bulat hanya simpan bagian bilangan bulat int
	print(5 % 2 == 1);    // % ambil sisa dari pembagian bulat

	// Contoh gabung string hasil bagi dan sisa
	print('5/2 = ${5 ~/ 2} r ${5 % 2}' == '5/2 = 2 r 1');
}Code language: Dart (dart)

Hasil eksekusi kode

Operator Increment / Decrement

Dart mendukung dua bentuk prefix dan postfix untuk increment ++ dan decrement --. Perbedaan utama: apakah variabel diubah dulu atau nilainya diambil dulu

OperatorLogika KerjaNilai yang dikembalikan ekspresi
++varTambah variabel 1 terlebih dahulu, baru pakai untuk operasiNilai baru setelah increment
var++Ambil nilai asli variabel untuk operasi, setelah selesai baru tambah variabel 1Nilai asli sebelum increment
--varKurangi variabel 1 terlebih dahulu, baru pakai untuk operasiNilai baru setelah decrement
var--Ambil nilai asli variabel untuk operasi, setelah selesai baru kurangi variabel 1Nilai asli sebelum decrement
void main() {
	int a;
	int b;

	// 1. Prefix increment ++a: ubah dulu, baru assign
	a = 0;
	b = ++a;
	print(a == b); // a=1, b=1, bernilai true

	// 2. Postfix increment a++: assign nilai lama dulu, baru ubah
	a = 0;
	b = a++;
	print(a != b); // a=1, b=0, bernilai true

	// 3. Prefix decrement --a: ubah dulu, baru assign
	a = 0;
	b = --a;
	print(a == b); // a=-1, b=-1, bernilai true

	// 4. Postfix decrement a--: assign nilai lama dulu, baru ubah
	a = 0;
	b = a--;
	print(a != b); // a=-1, b=0, bernilai true
}
Code language: PHP (php)

Semua output contoh bernilai true

Penting: posisi ++ atau — di depan atau belakang variabel memberikan hasil berbeda jika ada dalam ekspresi.

Jika dipakai berdiri sendiri contohnya:

int a = 1;
++a;

int b  = 1;
b++;

print(a);
print(b);Code language: PHP (php)

Kode di atas akhirnya output keduanya 2

D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
2
2
Code language: CSS (css)

Sama halnya dengan –, variabel tetap akan bertambah atau berkurang satu.

Tapi jika ++ — ada di dalam ekspresi perhitungan contoh:

void main() {
  int a = 5;
  // Postfix: pakai nilai 5 dulu untuk hitung, setelah itu a jadi 6
  int res1 = a++ * 2;
  print(res1); // 10
  print(a);  // 6

  int b= 5;
  // Prefix: ubah b jadi 6 dulu, baru kalikan dua
  int res2 = ++b * 2;
  print(res2); // 12
  print(b); // 6
}Code language: PHP (php)

Hasil akhir a dan b sama-sama 6, tapi res1 dan res2 berbeda hanya karena posisi ++ berbeda.

Penjelasan postfix a++: awalnya pakai nilai a=5 untuk a*2=10, simpan ke res1, baru kemudian a ditambah satu jadi 6.

Sedangkan prefix ++b: pertama b ditambah satu jadi 6, baru hitung 6*2=12 masuk ke res2.

Baris int res1 = a++ * 2; dipecah menjadi dua langkah:

int res1 = a * 2;
a = a +1;

Baris int res2 = ++b * 2; dipecah menjadi dua langkah:

b = b+1;
int res2 = b * 2;

Panduan mudah diingat:

Prefix ubah duluan, postfix pakai duluan;

Prefix kembalikan nilai baru, postfix kembalikan nilai asli.

Ringkasan

Prefix ++a / --a: ubah nilai variabel terlebih dahulu, baru pakai nilai yang sudah diubah untuk operasi atau penugasan

Postfix a++ / a--: pakai nilai asli variabel untuk operasi atau penugasan terlebih dahulu, setelah operasi selesai baru ubah variabel

Coba jalankan contoh berikut untuk latihan:

void main() {
  int a = 0;
  int b = ++a; 
  // Langkah1: a = a + 1 → a jadi 1
  // Langkah2: assign nilai a yang baru (1) ke b
  print(a); // 1
  print(b); // 1
}
void main() {
  int a = 0;
  int b = a++;
  // Langkah1: assign nilai lama a (0) ke b
  // Langkah2: jalankan a = a + 1 → a jadi 1
  print(a); // 1
  print(b); // 0
}
void main() {
  int a = 0;
  int b = --a;
  // Langkah1: a = a - 1 → a jadi -1
  // Langkah2: assign nilai a yang baru (-1) ke b
  print(a); // -1
  print(b); // -1
}
void main() {
  int a = 0;
  int b = a--;
  // Langkah1: assign nilai lama a (0) ke b
  // Langkah2: jalankan a = a - 1 → a jadi -1
  print(a); // -1
  print(b); // 0
}

Di atas adalah contoh paling sederhana prefix dan postfix increment/decrement. Silakan kompilasi dan jalankan sendiri untuk merasakan perbedaannya.

Tinggalkan Balasan

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