Menguasai C++: Jenis-Jenis Operator Aritmatika hingga Logika (Part 4)
Rifqi An
Menguasai C++: Jenis-Jenis Operator Aritmatika hingga Logika (Part 4)
Wah, gak kerasa ya, kita udah sampai di Part 4 seri Belajar Dasar C++ ini! Kalau sebelumnya kita udah ngobrolin variabel dan tipe data yang bikin kepala sedikit pusing (tapi seru!), kali ini kita bakal bahas sesuatu yang lebih action-oriented: Operator. Anggap aja operator ini kayak alat-alat tempur kita buat manipulasi data. Tanpa operator, program kita cuma bisa diem aja kayak patung Pancoran. Siap ngoding lagi sambil ngopi? Yuk, kita bedah satu per satu!
Daftar Isi
- Apa Itu Operator?
- Operator Aritmatika: Si Tukang Hitung
- Operator Penugasan (Assignment Operator)
- Operator Relasional: Si Pembanding Sejati
- Operator Logika: Otak Program Kita
- Prioritas Operator: Mana Dulu yang Dikerjain?
- Latihan: Studi Kasus Kode Halu Ngitung THR
Apa Itu Operator?
Gampangnya, operator itu adalah simbol atau kata kunci khusus yang kita pakai buat melakukan operasi pada satu atau lebih nilai (disebut operand). Contohnya kayak tambah (+), kurang (-), kali (*), sampai yang lebih canggih buat ngecek kondisi. Intinya, kalau kamu mau variabelmu berinteraksi atau berubah, si operator inilah jembatannya. Jangan sampai programmu cuma berisi deklarasi variabel doang ya, nanti malah dikira program kalkulator yang error!
Operator Aritmatika: Si Tukang Hitung
Nah, ini dia operator yang paling sering kita temui di kehidupan sehari-hari (kalau kamu sering ngitung duit atau diskon). Operator aritmatika di C++ berfungsi persis kayak di matematika biasa. Kita punya:
+(Penjumlahan)-(Pengurangan)*(Perkalian)/(Pembagian)%(Modulo / Sisa Bagi)
Yang terakhir itu, % (modulo), sering banget kepakai buat ngecek angka genap/ganjil atau kalau kamu lagi ngoding jam digital. Keren kan?
Contoh kodenya biar makin paham:
#include <iostream>
int main() {
int a = 10;
int b = 3;
int hasil;
// Penjumlahan
hasil = a + b; // hasil akan 13
std::cout << "a + b = " << hasil << std::endl;
// Pengurangan
hasil = a - b; // hasil akan 7
std::cout << "a - b = " << hasil << std::endl;
// Perkalian
hasil = a * b; // hasil akan 30
std::cout << "a * b = " << hasil << std;::endl;
// Pembagian (hati-hati dengan tipe data integer)
hasil = a / b; // hasil akan 3 (karena integer, koma diabaikan!)
std::cout << "a / b = " << hasil << std;::endl;
// Modulo (sisa bagi)
hasil = a % b; // hasil akan 1 (karena 10 dibagi 3 adalah 3 sisa 1)
std::cout << "a % b = " << hasil << std;::endl;
// Kalau mau pembagian yang hasilnya ada koma:
double c = 10.0;
double d = 3.0;
double hasilDouble = c / d; // hasil akan 3.3333...
std::cout << "c / d (double) = " << hasilDouble << std;::endl;
return 0;
}
Penting: Ingat kasus pembagian int! Kalau kamu bagi int dengan int, hasilnya juga akan int (bagian pecahannya dipotong). Kalau mau ada koma, pakai double atau float!
Operator Penugasan (Assignment Operator)
Operator ini fungsinya buat = (sama dengan). Contohnya int x = 5; artinya kita kasih nilai 5 ke variabel x.
Tapi C++ juga punya versi "singkat" yang sering banget dipakai biar ngoding makin sat-set:
+=(Penjumlahan dan Penugasan)-=(Pengurangan dan Penugasan)*=(Perkalian dan Penugasan)/=(Pembagian dan Penugasan)%=(Modulo dan Penugasan)
Contohnya gini, daripada nulis x = x + 5;, kita bisa langsung nulis x += 5;. Lebih elegan, kan?
#include <iostream>
int main() {
int nilai = 10;
// nilai = nilai + 5;
nilai += 5; // Sekarang nilai = 15
std::cout << "nilai setelah += 5: " << nilai << std;::endl;
// nilai = nilai * 2;
nilai *= 2; // Sekarang nilai = 30
std::cout << "nilai setelah *= 2: " << nilai << std;::endl;
// Coba yang lain juga ya!
return 0;
}
Operator Relasional: Si Pembanding Sejati
Operator relasional ini gunanya buat membandingkan dua nilai. Hasil perbandingannya selalu berupa nilai boolean (yaitu true atau false). Ini penting banget buat logika program, misalnya buat ngecek kondisi if atau while yang bakal kita bahas nanti. Operator ini kayak mata-mata yang lagi ngecek kondisi, "Apakah nilai A lebih besar dari nilai B? True atau false?"
==(Sama Dengan) - Beda ya dengan=!!=(Tidak Sama Dengan)>(Lebih Besar Dari)<(Lebih Kecil Dari)>=(Lebih Besar Atau Sama Dengan)<=(Lebih Kecil Atau Sama Dengan)
Ingat, == itu buat membandingkan, sedangkan = itu buat menugaskan nilai. Salah tulis = di kondisi if bisa bikin pusing tujuh keliling nyari bug-nya!
#include <iostream>
int main() {
int x = 10;
int y = 5;
std::cout << "x == y: " << (x == y) << std;::endl; // Output: 0 (false)
std::cout << "x != y: " << (x != y) << std;::endl; // Output: 1 (true)
std::cout << "x > y: " << (x > y) << std;::endl; // Output: 1 (true)
std::cout << "x < y: " << (x < y) << std;::endl; // Output: 0 (false)
std::cout << "x >= 10: " << (x >= 10) << std;::endl; // Output: 1 (true)
std::cout << "y <= 5: " << (y <= 5) << std;::endl; // Output: 1 (true)
// Di C++, true itu direpresentasikan sebagai 1, dan false sebagai 0.
return 0;
}
Operator Logika: Otak Program Kita
Kalau operator relasional cuma bisa membandingkan dua nilai, operator logika ini bisa
&&(AND Logika) - Akantruekalau KEDUA ekspresitrue.||(OR Logika) - Akantruekalau SALAH SATU atau KEDUA ekspresitrue.!(NOT Logika) - Membalik nilaiboolean(truejadifalse,falsejaditrue).
Analoginya, kalau kamu mau ke bioskop, operator logika ini bisa nentuin: "Apakah aku punya uang DAN bioskopnya buka? Atau, apakah aku punya kupon ATAU aku diajak teman? Kalau TIDAK ada film bagus, aku gak jadi nonton." Paham kan?
#include <iostream>
int main() {
int umur = 20;
bool punyaSIM = true;
bool sudahLulusSMA = false;
// Operator AND (&&)
// Apakah umur >= 17 DAN punya SIM?
bool bisaNyetir = (umur >= 17 && punyaSIM); // true && true = true
std::cout << "Bisa nyetir: " << bisaNyetir << std;::endl;
// Operator OR (||)
// Apakah umur > 25 ATAU sudah lulus SMA?
bool kerjaAman = (umur > 25 || sudahLulusSMA); // false || false = false
std::cout << "Bisa kerja aman: " << kerjaAman << std;::endl;
// Operator NOT (!)
// Membalik nilai punyaSIM
bool tidakPunyaSIM = !punyaSIM; // !true = false
std::cout << "Tidak punya SIM: " << tidakPunyaSIM << std;::endl;
// Kombinasi!
bool kondisiKompleks = (umur < 18 && !punyaSIM) || (umur > 25 && sudahLulusSMA);
// (false && true) || (false && false) = false || false = false
std::cout << "Kondisi kompleks: " << kondisiKompleks << std;::endl;
return 0;
}
Prioritas Operator: Mana Dulu yang Dikerjain?
Sama kayak di matematika, C++ juga punya aturan main siapa yang harus dieksekusi duluan kalau ada banyak operator dalam satu baris. Ini namanya 2 + 3 * 4. Hasilnya 14 kan, bukan 20? Karena perkalian (*) punya prioritas lebih tinggi dari penjumlahan (+).
Kalau kamu ragu-ragu atau mau memaksa urutan eksekusi, selalu gunakan tanda kurung (). Tanda kurung akan selalu dievaluasi duluan. Daripada pusing ngapalin semua prioritas, mending pakai kurung aja biar aman dan kode jadi lebih mudah dibaca programmer lain (atau dirimu sendiri di masa depan yang udah lupa).
#include <iostream>
int main() {
int a = 5, b = 2, c = 3;
int hasil1 = a + b * c; // 5 + (2 * 3) = 5 + 6 = 11
int hasil2 = (a + b) * c; // (5 + 2) * 3 = 7 * 3 = 21
std::cout << "Hasil 1 (a + b * c): " << hasil1 << std;::endl;
std::cout << "Hasil 2 ((a + b) * c): " << hasil2 << std;::endl;
bool kondisiRumit = true || false && false; // true || (false && false) = true || false = true
// Operator AND (&&) punya prioritas lebih tinggi dari OR (||)
std::cout << "Kondisi rumit: " << kondisiRumit << std;::endl;
bool kondisiAman = (true || false) && false; // (true) && false = false
std::cout << "Kondisi aman (pakai kurung): " << kondisiAman << std;::endl;
return 0;
}
Jadi, jangan malas pakai kurung ya! Programmer yang baik itu bukan yang hafal semua prioritas operator, tapi yang kodenya clear dan minim potensi bug.
Latihan: Studi Kasus Kode Halu Ngitung THR
Bayangin kamu seorang developer game yang lagi lembur ngopi dan ngoding sampai mata panda. Tiba-tiba ada ide gila: bikin program buat ngitung berapa THR yang bakal kamu dapat berdasarkan beberapa kriteria aneh bin ajaib. Yuk, coba pecahin ini!
Skenario:
Kamu kerja di perusahaan startup "Fix Bug & Chill". THR di sana dihitung dengan aturan unik:
- THR dasar adalah gaji pokok.
- Jika kamu sudah kerja lebih dari 1 tahun DAN umurmu di atas 25 tahun, kamu dapat bonus 20% dari gaji pokok.
- Jika kamu sudah lembur lebih dari 100 jam ATAU punya sertifikasi ngopi kelas dunia (anggap
punyaSertifikasiNgopi = true), kamu dapat bonus tambahan Rp 500.000. - Namun, jika kamu pernah menyebabkan bug production fatal DAN tidak pernah ikut acara kantor (anggap
ikutAcaraKantor = false), THR-mu dikurangi 10% dari total THR yang sudah dihitung sebelumnya (termasuk bonus).
Tugasmu:
Buat program C++ yang menerima input:
gajiPokok(integer)lamaKerjaTahun(integer)umur(integer)jumlahLemburJam(integer)punyaSertifikasiNgopi(boolean:trueataufalse)pernahBikinBugFatal(boolean:trueataufalse)ikutAcaraKantor(boolean:trueataufalse)
Lalu, hitung dan tampilkan total THR yang kamu dapatkan. Jangan lupa pakai operator yang barusan kita pelajari ya!
Clue: Gunakan double untuk perhitungan THR biar hasilnya akurat, ada komanya kalau perlu!
Gimana? Seru kan belajar operator ini? Meskipun kelihatannya kecil, operator adalah fondasi logika program yang kuat. Tanpa operator, program kita cuma bisa jadi penampung data doang. Jadi, jangan malas ngulik dan coba-coba ya! Kalau ada error, itu tandanya kamu lagi belajar! Sampai jumpa di Part selanjutnya, kita bakal bahas Conditional Statements, alias gimana caranya bikin program kita bisa beneran mengambil keputusan!
