"Gegroet, Amigo! Ik werd zo meegesleept door het oplossen van logische problemen dat ik niet merkte dat je binnenkwam. Hier is er een voor jou: als krokodillen vliegen, dan is sneeuw wit. Er is een vliegende krokodil. Wat is de conclusie?"
"Eh... Dus we concluderen dat sneeuw wit is?"
"Uitstekend! Je bent geslaagd voor de initiatietest. Je bent klaar om het volgende onderwerp onder de knie te krijgen. Het heet 'logische operatoren'. En we beginnen met Booleaanse logica. Instinctief weet je het al. Je bent tenslotte een robot . We hoeven alleen uw instellingen aan te passen aan de Java-taal."
"Booleaanse logica? Ik heb onlangs gehoord over het booleaanse type..."
"Ja, er is hier een direct verband. Booleaanse uitdrukkingen kunnen alleen waar of onwaar zijn. En toevallig gaat dit soort logica helemaal over uitdrukkingen die waar of onwaar zijn, en combinaties van dergelijke uitdrukkingen. Bijvoorbeeld de uitdrukking 18 < 25 is altijd waar, en 7 < 5 is altijd onwaar. De uitdrukking (i < 10) hangt af van de waarde van i. En als de uitdrukking bijvoorbeeld resulteert in waar, dan kunnen we het programma vragen om iets te doen."
"Ahh, ik snap het. Met Booleaanse uitdrukkingen kunnen we niet alleen logische conclusies trekken, maar ook forks in programma's maken."
"Precies. Het belangrijkste is dat je leert hoe je ze moet schrijven. In Java kun je bijvoorbeeld niet zomaar de uitdrukking gaan schrijven 18 < age <65
. Dit zou syntactisch incorrect zijn en het programma zal niet compileren.
"Maar je kunt het zo schrijven:
(18 < age) AND (age < 65)
Natuurlijk gebruiken we het ENGELSE woord niet echt AND
. In plaats daarvan hebt u een booleaanse operator nodig . Dat wil zeggen, 'EN' wordt anders weergegeven.
"Er zijn drie logische operatoren in Java: AND
(&&), OR
(||), NOT
(!).
Het goede nieuws is dat u haakjes kunt gebruiken om logische uitdrukkingen van elke complexiteit te construeren.
Het slechte nieuws is dat Java-ontwikkelaars besloten om de notatie uit de C-taal te gebruiken in plaats van de woorden and
, or
en not
.
Kijk naar het scherm:
Logische operator | Verwachting | Realiteit |
---|---|---|
AND (∧) |
and |
&& |
OR (∨) |
or |
|| |
NOT (¬) |
not |
! |
"Het is eigenlijk niet zo erg... Vrij compact. Ik heb ze bijna uit mijn hoofd geleerd."
"Nou, dat is geweldig. Hier zijn enkele voorbeelden van het gebruik van logische operatoren in Java:
Uitdrukking | Interpretatie | Uitleg |
---|---|---|
(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)) |
Voorbeelden van het gebruik van vergelijkingsoperatoren en booleaanse variabelen
"Onthoud, Amigo, waar je een logische uitdrukking kunt schrijven, kun je een logische variabele schrijven."
"Hoe is dat?"
"Ik bedoel, je kunt logische uitdrukkingen op verschillende manieren schrijven. Bijvoorbeeld:
Code | Uitleg |
---|---|
|
Als de waarde van leeftijd tussen 18 en ligt 65 , wordt de zin "Je kunt werken" weergegeven. |
|
We hebben een isYoung variabele gemaakt en het eerste deel van de uitdrukking erin verplaatst. We hebben het gewoon vervangen age >= 18 door age < 18 . |
|
We hebben een isOld-variabele gemaakt en het tweede deel van de uitdrukking erin verplaatst. Bovendien age <= 65 werd vervangen door age > 65 . |
"Deze drie voorbeelden zijn equivalent. Alleen in het tweede voorbeeld hebben we een deel van de uitdrukking van de if
instructie verplaatst naar een aparte booleaanse variabele ( isYoung
). In het derde voorbeeld hebben we het tweede deel van de uitdrukking naar een tweede variabele verplaatst ( isOld
). Trouwens, de standaardwaarde van een booleaanse variabele is false
."
'Dat zal ik onthouden. Ik hoop het.'
Logische rekenkunde
"Laten we nu kort de logische bewerkingen doornemen. Ze gehoorzamen aan zeer eenvoudige en logische (hoe kan het ook anders!) regels.
"Laten we eerst eens kijken hoe de OR
operator werkt. Het staat ook bekend als ||
of disjunctie .
Uitdrukking | Resultaat |
---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
"Kunt u nu afleiden wat het resultaat van de uitdrukking a || b
is op basis van de tabel?"
"Ik zie!" De waarde van een uitdrukking is true
als ten minste één term in de uitdrukking true
. Als beide zijn false
, dan is het resultaat false
.
"Dat klopt. Omdat je zo slim bent, kijk je nog eens naar de tafel en stel je voor dat dat false
0 true
is en 1. Als je er zo naar kijkt, doet ||
het gedrag van de operator je dan denken aan iets anders dan gewoon rekenen?"
"Eh... Nou, het is een beetje zoals optellen... Maar als je optelt, is 1 + 1 niet gelijk aan 1."
"In zekere zin is het gelijk als we alleen met 0 en 1 werken. Maar doe daar nu geen moeite mee. Het belangrijkste is dat je de overeenkomst tussen de bewerking en ||
optelling hebt opgemerkt. Dit betekent dat je gewonnen hebt' Het zal u niet verbazen dat deze bewerking vaak 'logische optelling' wordt genoemd.
"Begrepen."
"Nu komt de AND
, ook wel &&
, ook wel conjunctie- operator genoemd, het podium op.
Uitdrukking | Resultaat |
---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
"Zoals ik het begrijp, is het resultaat van een uitdrukking true
alleen als beide waarden waaruit de uitdrukking bestaat true
. Anders is het altijd false
."
"Goed gedaan, Amigo! Je zuigt dit allemaal op als een spons. Zie je nog een overeenkomst met rekenen?"
"Vermenigvuldiging!"
"Precies. Dus hier hebben we een 'logische vermenigvuldiging'".
"Vervolgens kijken we naar de NOT
operator, ook wel bekend !
als de logische inverse .
Uitdrukking | Resultaat |
---|---|
!true |
false |
!false |
true |
"Nou, alles is hier vrij eenvoudig. De telefoniste verandert true
in false
en vice versa."
"Precies. Hier zijn enkele nuttige uitdrukkingen voor u:"
Uitdrukking | Resultaat |
---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION