"Salut, Amigo! Am fost atât de purtat de rezolvarea problemelor de logică, încât nu am observat că intri. Iată unul pentru tine: dacă zboară crocodilii, atunci zăpada este albă. E un crocodil zburător. Care este concluzia?"
— Hm... Deci tragem concluzia că zăpada este albă?
„Excelent! Ai trecut testul de inițiere. Ești gata să stăpânești următorul subiect. Se numește „operatori logici”. Și vom începe cu logica booleană. Instinctiv, știi deja asta. Până la urmă ești un robot . Trebuie doar să vă modificăm setările pentru a se potrivi cu limbajul Java."
"Logica booleană? Mi s-a spus recent despre tipul boolean..."
„Da, există o legătură directă aici. Expresiile booleene pot fi doar adevărate sau false. Și, după cum se întâmplă, acest tip de logică se referă la expresii care sunt adevărate sau false și combinații ale unor astfel de expresii. De exemplu, expresia 18 < 25 este întotdeauna adevărat, iar 7 < 5 este întotdeauna fals. Expresia (i < 10) depinde de valoarea lui i. Și dacă expresia evaluează, de exemplu, la adevărat, atunci putem cere programului să facă ceva."
"Ahh, am înțeles. Expresiile booleene ne permit nu numai să facem concluzii logice, ci și să creăm bifurcări în programe."
„Exact. Principalul lucru este să înveți cum să le scrii. De exemplu, în Java nu poți doar să scrii expresia 18 < age <65
. Acest lucru ar fi incorect din punct de vedere sintactic și programul nu se va compila.
„Dar o poți scrie așa:
(18 < age) AND (age < 65)
Desigur, nu folosim de fapt cuvântul ENGLEZĂ AND
. În schimb, aveți nevoie de un operator boolean . Adică, „ȘI” este reprezentat diferit.
„Există trei operatori logici în Java: AND
(&&), OR
(||), NOT
(!).
Vestea bună este că puteți folosi paranteze pentru a construi expresii logice de orice complexitate.
Vestea proastă este că dezvoltatorii Java au decis să folosească notația din limbajul C în locul cuvintelor și and
.or
not
Priveste la ecran:
Operator logic | Aşteptare | Realitate |
---|---|---|
AND (∧) |
and |
&& |
OR (∨) |
or |
|| |
NOT (¬) |
not |
! |
"De fapt, nu e chiar atât de rău... Destul de compact. Aproape că le-am memorat."
„Ei bine, este minunat. Iată câteva exemple de utilizare a operatorilor logici în Java:
Expresie | Interpretare | Explicaţie |
---|---|---|
(0 < a) && (a < 100) |
(0 < a) and (a < 100) |
(0 < a) AND (a < 100) |
(!a) && (!b) |
(not a) and (not b) |
(NOT a) AND (NOT b) |
!(!a || !b) |
not((not a) or (not b)) |
NOT((NOT a) OR (NOT b)) |
Exemple de utilizare a operatorilor de comparație și a variabilelor booleene
— Amintește-ți, Amigo, oriunde poți scrie o expresie logică, poți scrie o variabilă logică.
"Cum e?"
„Vreau să spun că poți scrie expresii logice în moduri diferite. De exemplu:
Cod | Explicaţie |
---|---|
|
Dacă valoarea vârstei este între 18 și 65 , atunci este afișată expresia „Poți lucra”. |
|
Am creat o isYoung variabilă și am mutat prima parte a expresiei în ea. Pur și simplu am înlocuit age >= 18 cu age < 18 . |
|
Am creat o variabilă isOld și am mutat a doua parte a expresiei în ea. În plus, age <= 65 a fost înlocuit cu age > 65 . |
„Aceste trei exemple sunt echivalente. Numai în al doilea exemplu am mutat o parte a expresiei din if
instrucțiune într-o variabilă booleană separată ( isYoung
). În al treilea exemplu, am mutat a doua parte a expresiei într-o a doua variabilă ( isOld
). Apropo, valoarea implicită a unei variabile booleene este false
."
— Îmi voi aminti asta. Sper.
Aritmetică logică
„Acum să trecem pe scurt prin operațiuni logice. Ei se supun unor reguli foarte simple și logice (cum ar putea fi altfel!).
„În primul rând, să vedem cum OR
funcționează operatorul. Este cunoscut și ca ||
sau disjuncție .
Expresie | Rezultat |
---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
„Poți deduce acum care este rezultatul expresiei a || b
pe baza tabelului?”
"Înțeleg!" Valoarea unei expresii este true
dacă cel puțin un termen din expresie este true
. Dacă ambele sunt false
, atunci rezultatul este false
.
"Așa este corect. Din moment ce ești atât de deștept, aruncă o altă privire la tabel și imaginează-ți că false
este 0 și true
este 1. Când te uiți așa, ||
comportamentul operatorului îți amintește de ceva din aritmetica obișnuită?"
"Hm... Ei bine, este un pic ca adunarea... Dar când faci adunări, 1 + 1 nu este egal cu 1."
„Există un sens în care este egal dacă lucrăm doar cu 0 și 1. Dar nu vă deranjați cu asta chiar acum. Important este că ați observat asemănarea dintre operație și ||
adunare. Aceasta înseamnă că veți” nu fi surprins de faptul că această operație este adesea numită „adăugare logică”.
"Am înţeles."
„Acum AND
, , alias &&
, alias operatorul de conjuncție , vine pe scenă.
Expresie | Rezultat |
---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
„După cum am înțeles, rezultatul unei expresii este true
numai dacă ambele valori care alcătuiesc expresia sunt true
. În caz contrar, este întotdeauna false
”.
"Bravo, Amigo! Absorbi toate astea ca pe un burete. Mai vezi o asemanare cu aritmetica?"
"Multiplicare!"
"Exact. Deci aici avem o 'înmulţire logică'".
„În continuare, ne uităm la NOT
operator, alias !
, alias inversul logic .
Expresie | Rezultat |
---|---|
!true |
false |
!false |
true |
"Ei bine, totul este destul de simplu aici. Operatorul trece true
la false
și invers."
"Exact. Iată câteva expresii utile pentru tine:"
Expresie | Rezultat |
---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION