← Kembali ke kursus
Pelajaran kursus · C#
Pelajaran 07

Kondisi kompleks dengan && , || dan !

Gabungkan beberapa syarat jadi satu keputusan.

Pahami konsepnya

Kehidupan nyata jarang bersyarat tunggal: diskon untuk pelanggan baru DAN belanja di atas seratus ribu; masuk kalau punya tiket ATAU nama tamu. Operator logika menjahit syarat-syarat itu: && (dan) menuntut keduanya benar, || (atau) cukup salah satu, dan ! membalik kebenaran. Prioritasnya && lebih rapat daripada ||, jadi a || b && c dibaca a || (b && c) — kurung tetap penyelamat keraguan.

Jalan lain adalah if bersarang: if di dalam if, masing-masing menguji satu lapis syarat. Ia sah dan kadang lebih jelas bertingkat, tapi sering bisa diratakan — dua if bersarang setara satu if dengan &&. Pilih yang terbaca paling alami: bertingkat untuk proses dua tahap, gabungan untuk satu pertanyaan majemuk.

Trik membaca kondisi panjang: ucapkan dengan "dan"/"atau" manusiawi. umur < 12 && pendamping berlebih dari dua dibaca "usianya di bawah 12 dan pendampingnya lebih dari dua" — kalimat yang terbaca aneh menandakan logikanya perlu dirapikan, bukan sekadar diketik.

Coba contoh kode

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("id-ID");
Console.Write("Umur = ");
int umur = int.Parse(Console.ReadLine());

Console.Write("Hari (kerja/akhir) = ");
string hari = Console.ReadLine();

double tiket = 50000;
if ((umur < 12 || umur >= 60) && hari == "kerja")
{
    tiket *= 0.5;   // diskon 50%: rentan usia di hari kerja
}
else if (hari == "akhir")
{
    tiket *= 0.9;   // akhir pekan selalu -10%
}

Console.WriteLine($"Tiketmu: {tiket:C0}");

Kondisi utamanya majemuk sungguhan: kelompok (umur < 12 ATAU >= 60) DAN hari kerja — kurung mengelompokkan "atau" sebelum "dan" bekerja. Coba tiga kombinasi berbeda dan bandingkan harganya; lalu coba tukar posisi kurungnya dan rasakan bagaimana makna ikut berubah.

Bersarang vs digabung

string sandi = "rahasia";
int percobaan = 2;

// bersarang: dua gerbang berurutan
if (sandi == "rahasia")
{
    if (percobaan <= 3)
    {
        Console.WriteLine("Masuk!");
    }
}

// digabung: satu pertanyaan majemuk
if (sandi == "rahasia" && percobaan <= 3)
{
    Console.WriteLine("Masuk!");
}

Dua versi ini identik hasilnya — pilih sesuai selera keterbacaan. Versi bersarang bercerita dua tahap ("periksa sandi dulu, baru hitung percobaan"), versi gabungan bertanya sekali jadi. Bila kelak perlu aksi berbeda per tahap (pesan salah sandi vs pesan terkunci), bersarang menang karena bisa menyisipkan else di tiap tingkat.

Latihan singkat

Uji: dengan `tidak`, `ya`, `2` harus mencetak `masuk`; ganti buku ke `0` dan harus mencetak `ditolak`.