Meskipun sudah ada jawaban yang bagus, saya berpikir bahwa pendekatan ini mungkin lebih intuitif bagi seseorang yang baru mengenal aljabar Boolean kemudian mengevaluasi tabel kebenaran.
Hal pertama yang ingin Anda lakukan adalah melihat, di bawah kondisi apa Anda ingin mengeksekusi C. Ini adalah kasus ketika (a & b)
. Juga kapan !a
. Jadi kamu punya (a & b) | !a
.
Jika Anda ingin meminimalkan, Anda dapat melanjutkan. Sama seperti dalam aritmatika "normal", Anda dapat mengalikan.
(a & b) | !a = (a | !a) & (b | !a)
. a | ! a selalu benar, jadi Anda bisa mencoretnya, yang membuat Anda dengan hasil minimal:b | !a
. Dalam hal urutan membuat perbedaan, karena Anda ingin memeriksa b hanya jika! A benar (misalnya ketika! A adalah cek nullpointer dan b adalah operasi pada pointer seperti @LordFarquaad ditunjukkan dalam komentarnya), Anda mungkin ingin mengganti keduanya.
Kasus lain (/ * ... * /) akan selalu dieksekusi ketika c tidak dieksekusi, jadi kita bisa memasukkannya ke dalam kasus lain.
Yang juga layak disebutkan adalah bahwa mungkin masuk akal untuk memasukkan tindakan c ke dalam metode.
Yang membuat kita dengan kode berikut:
if (!A || B)
{
doActionC() // execute method which does action C
}
else
{
/* ... */ // what ever happens here, you might want to put it into a method, too.
}
Dengan cara ini Anda juga dapat meminimalkan istilah dengan lebih banyak operan, yang dengan cepat menjadi jelek dengan tabel kebenaran. Pendekatan lain yang baik adalah peta Karnaugh. Tapi saya tidak akan membahas ini lebih dalam lagi.