Mga lohikal na operator - 1

"Hi, Amigo!"

"Ngayon ay magkakaroon tayo ng isang maliit na aralin sa mga lohikal na operator."

"Anong logical operator ang alam mo?"

— O (||), AT (&&), HINDI(!)

"Yep. Good job. And do you remember how they work?"

"Oo."

"O yields true kapag kahit isang operand ay totoo."

"AND magbubunga ng totoo kapag ang parehong operand ay totoo."

"HINDI nagbabago ng totoo sa mali, at mali sa totoo."

"Tama. At sa anong pagkakasunud-sunod na sinusuri ang mga operator sa ekspresyong ito?"

boolean a = true;
boolean b = false;
boolean c = true;

boolean result = a && b || !c && b || !a;

"Ang lahat ng ito ay napakasimple."

"Una, HINDI (!), pagkatapos AT (&&), at pagkatapos O (||) sa pinakadulo."

Kung nagdagdag kami ng mga panaklong, makakakuha kami ng:

boolean a = true;
boolean b = false;
boolean c = true;

boolean result = (a && b) || ((!c) && b) || (!a);

"Tama lang yan, well done. At ano ang resulta?"

— 1) (a && b) == (totoo && mali) == mali

2) ((!c) && b) == (false && false) == false

3) (!a) == mali

4) false || mali || mali == mali

"Mali ang resulta."

"Mukhang alam mo na ang paksa. Pagkatapos ay sasabihin ko sa iyo ang ilang maliliit na sikreto."

"Una, sinusuri ang mga lohikal na expression mula kaliwa hanggang kanan."

"Pangalawa, ginagamit dito ang short-circuit evaluation (ginagawa lang ang mga kalkulasyon kung kinakailangan). Kung alam na ang huling resulta mula sa pagsusuri ng bahagi ng expression, hindi susuriin ang natitirang bahagi ng expression."

Halimbawa
boolean result = (true && false) || (true && true) || (true && false);

"Ang expression na ito ay nahahati sa tatlong bahagi na pinaghihiwalay ng OR (||) operator."

"Kung hindi bababa sa isang bahagi ay totoo, kung gayon ang sagot ay totoo at wala nang iba pang kailangang isaalang-alang. Alinsunod dito, ang expression ay sinusuri tulad nito:"

1)  Suriin ang unang bahagi:  (true && false) == false

2)  Suriin ang pangalawang bahagi:  (true && true) == true

3) Hindi namin sinusuri ang ikatlong bahagi, dahil malinaw na ang sagot ay totoo .

"Ang diskarte na ito ay tinatawag ding tamad na pagsusuri."

"OK. At ano ang espesyal dito?"

"Wala—hanggang sa magsimula kang tumawag ng mga pamamaraan sa loob ng expression. Kung ang bahagi ng expression ay nilaktawan, ang mga pamamaraan sa nilaktawan na bahagi ay hindi tatawagin."

"Ngunit naging pangkaraniwan na ang diskarteng ito. Narito kung bakit:"

Halimbawa:
Job job = null;

if (job != null && job.isDone())
{
…
}

"Kung null ang trabaho kapag nasuri ang expression, hindi mangyayari ang job.isDone() na tawag!"

"Sa katunayan, mali ang unang bahagi ng expression, na sinusundan ng AND (&&). Kaya, malalaman na mali ang buong expression, at hindi na kakailanganin ang pangalawang bahagi."

"Exactly. Maganda yung technique noh?"

"Oo."