Membandingkan Ekspresi Boolean
Diperkenalkan| English | Makna |
|---|---|
| equivalent/ɪˈkwɪvələnt/ | ekuivalen |
| De Morgan's Laws/də ˈmɔːɡənz lɔːz/ | Hukum De Morgan |
Satu contoh penyangkal menggagalkan penulisan ulang Boolean
- Penulisan ulang yang diusulkan mengubah !(a && b) menjadi !a && !b. Tetapkan a = true dan b = false.
- Pernyataan asli benar, sedangkan penulisan ulang yang diusulkan salah. Aturan De Morgan memerlukan !a || !b, yang sesuai dengan pernyataan asli.
Ketika dua syarat bermakna sama
- Dua ekspresi Boolean ekuivalen jika menghasilkan nilai yang sama untuk setiap input. Untuk integer
x,x >= 5dan!(x < 5)ekuivalen — keduanya bernilai true tepat ketikaxminimal5. - Untuk variabel Boolean tanpa efek samping, ekspresi ekuivalen menghasilkan hasil yang sama. Periksa juga urutan evaluasi jika ekspresi memanggil metode atau mengubah state. Tabel kebenaran membuktikan ekuivalensi: output yang sama di setiap baris.
Hukum De Morgan
- Hukum De Morgan menuliskan ulang NOT pada AND/OR:
!(a && b)setara dengan!a || !b. !(a || b)setara dengan!a && !b. Polanya: dorong!ke dalam, dan balik&&↔||.
Menyederhanakan kondisi
- Gunakan Hukum De Morgan dan aturan logika untuk menulis ekuivalensi yang lebih pendek dan jelas. Untuk integer score,
!(score < 60)menjadiscore >= 60— makna yang sama, lebih mudah dibaca. - Menghapus negasi ganda atau
!terluar sering memperjelas niat. Periksa domain input dan perilaku evaluasi secara spesifik; jumlah karakter yang lebih sedikit tidak menjamin lebih sedikit bug.
Menurut Hukum De Morgan, !(a && b) setara dengan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Dorong ! masuk dan balik && menjadi ||.
Menurut Hukum De Morgan, !(a || b) setara dengan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Dorong ! masuk dan balik || menjadi &&.
Untuk nilai integer yang setara dengan !(score < 60)?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
not-less-than-60 berarti at-least-60.
Dua ekspresi Boolean ekuivalen jika mereka memberikan hasil yang sama untuk setiap input.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Output sama di setiap baris tabel kebenaran = ekuivalen.
Menerapkan Hukum De Morgan, !(a && b) menjadi !a && !b.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Menjadi !a || !b — operator harus dibalik.
Pengujian dengan tabel kebenaran
- Untuk memeriksa apakah dua ekspresi ekuivalen, buat tabel untuk semua input. Jika setiap baris cocok, mereka ekuivalen; satu ketidakcocokan berarti mereka tidak ekuivalen.
- Untuk dua variabel Boolean murni terdapat empat baris input, yang sepenuhnya menentukan fungsi kebenaran. Ini tidak mengenumerasikan efek pemanggilan metode sembarangan atau membuktikan setiap penulisan ulang perbandingan floating-point.
Saat menerapkan Hukum De Morgan, Anda harus membalik operator juga, bukan hanya mendistribusikan !. !(a && b) adalah !a || !b (AND menjadi OR) — menulis !a && !b adalah salah. Mnemoniknya: dorong NOT ke dalam dan tukar && ↔ ||. Saat ragu, tabel kebenaran menyelesaikannya dalam empat baris.
Untuk a=true dan b=false, berapakah nilai dari !(a && b), !a && !b, dan !a || !b secara berurutan?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
The mismatching middle expression is a counterexample to the proposed equivalence.
Untuk double score yang sama dengan NaN, !(score < 60) and score >= 60 menghasilkan hasil Boolean yang sama.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Perbandingan skor < 60 and score >= 60 keduanya salah untuk NaN, sehingga ekspresi pertama yang dinegasi menjadi benar dan yang kedua menjadi salah.
Jika f() mengembalikan false, berapa kali g() dijalankan saat mengevaluasi !(f() && g())?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Operand pertama false melakukan short-circuit pada &&, sehingga g tidak dipanggil. Ekspresi setara !f() || !g() juga melewatkan g.
Menulis ulang !(a && b):
- Salah:
!a && !b. - Benar (De Morgan):
!a || !b— AND berbalik menjadi OR. - Periksa: jika
a = true, b = false, maka!(true && false) = !false = true, dan!a || !b = false || true = true. ✓
Terapkan penalaran ke kasus baru
- Untuk variabel Boolean murni, keempat pasangan input membuktikan ekuivalensi. Bentuk De Morgan mempertahankan evaluasi short-circuit dari kiri ke kanan:
!(f() && g())dan!f() || !g()kedua-duanya melewati g ketika f bernilai false. - Menukar operand adalah transformasi berbeda. Meskipun
a && bdanb && amemiliki tabel kebenaran yang sama untuk variabel murni,f() && g()dang() && f()mungkin memanggil metode berbeda. Untuk double score=NaN,!(score < 60)bernilai true tetapiscore >= 60bernilai false; aturan perbandingan integer tidak berlaku untuk NaN.
Dua ekspresi Boolean ekuivalen jika mereka setuju untuk setiap input (dapat dibuktikan dengan tabel kebenaran). Hukum De Morgan: !(a && b) = !a || !b dan !(a || b) = !a && !b — masukkan ! ke dalam dan balik && ↔ ||. Gunakan ini untuk menyederhanakan kondisi menjadi bentuk ekuivalen yang lebih jelas.