"Hilsen, Amigo! Jeg ble så revet med av å løse logiske problemer at jeg ikke la merke til at du kom inn. Her er en til deg: Hvis krokodiller flyr, så er snø hvit. Det er en flyvende krokodille. Hva er konklusjonen?"
"Ehm... Så vi konkluderer med at snø er hvit?"
"Utmerket! Du besto initieringstesten. Du er klar til å mestre neste emne. Det kalles "logiske operatorer". Og vi starter med boolsk logikk. Instinktivt vet du det allerede. Du er tross alt en robot . Vi trenger bare å justere innstillingene dine for å matche Java-språket."
"Boolsk logikk? Jeg ble nylig fortalt om den boolske typen..."
"Ja, det er en direkte sammenheng her. Boolske uttrykk kan bare være sanne eller usanne. Og som det skjer, handler denne typen logikk om uttrykk som er sanne eller usanne, og kombinasjoner av slike uttrykk. For eksempel uttrykket 18 < 25 er alltid sant, og 7 < 5 er alltid usant. Uttrykket (i < 10) avhenger av verdien av i. Og hvis uttrykket for eksempel vurderes til sant, så kan vi be programmet om å gjøre noe."
"Ahh, jeg skjønner det. Boolske uttrykk lar oss ikke bare trekke logiske konklusjoner, men også lage gafler i programmer."
"Akkurat. Det viktigste er å lære å skrive dem. For eksempel i Java kan du ikke bare gå og skrive uttrykket 18 < age <65
. Dette ville være syntaktisk feil og programmet vil ikke kompilere.
"Men du kan skrive det slik:
(18 < age) AND (age < 65)
Selvfølgelig bruker vi faktisk ikke det ENGELKE ordet AND
. I stedet trenger du en boolsk operator . Det vil si at 'AND' er representert annerledes.
"Det er tre logiske operatorer i Java: AND
(&&), OR
(||), NOT
(!).
Den gode nyheten er at du kan bruke parenteser til å konstruere logiske uttrykk for enhver kompleksitet.
Den dårlige nyheten er at Java-utviklere bestemte seg for å bruke notasjon fra C-språketand
i stedet for ordene or
og not
.
Se på skjermen:
Logisk operatør | Forventning | Virkelighet |
---|---|---|
AND (∧) |
and |
&& |
OR (∨) |
or |
|| |
NOT (¬) |
not |
! |
"Det er faktisk ikke så ille... Ganske kompakt. Jeg har nesten lært dem utenat."
"Vel, det er fantastisk. Her er noen eksempler på bruk av logiske operatorer i Java:
Uttrykk | Tolkning | Forklaring |
---|---|---|
(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)) |
Eksempler på bruk av sammenligningsoperatorer og boolske variabler
"Husk, Amigo, uansett hvor du kan skrive et logisk uttrykk, kan du skrive en logisk variabel."
"Hvordan er det?"
"Jeg mener du kan skrive logiske uttrykk på forskjellige måter. For eksempel:
Kode | Forklaring |
---|---|
|
Hvis verdien av alder er mellom 18 og 65 , vises uttrykket "Du kan jobbe". |
|
Vi opprettet en isYoung variabel og flyttet den første delen av uttrykket inn i den. Vi byttet rett og slett ut age >= 18 med age < 18 . |
|
Vi opprettet en isOld-variabel og flyttet den andre delen av uttrykket inn i den. I tillegg age <= 65 ble erstattet av age > 65 . |
"Disse tre eksemplene er likeverdige. Bare i det andre eksemplet flyttet vi en del av uttrykket fra setningen if
til en separat boolsk variabel ( isYoung
). I det tredje eksemplet flyttet vi den andre delen av uttrykket til en annen variabel ( isOld
). Forresten, standardverdien for en boolsk variabel er false
."
"Jeg vil huske det. Jeg håper."
Logisk aritmetikk
"La oss nå kort gå gjennom logiske operasjoner. De følger veldig enkle og logiske (hvordan kunne det være annerledes!) regler.
"Først, la oss se hvordan OR
operatøren fungerer. Det er også kjent som ||
eller disjunksjon .
Uttrykk | Resultat |
---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
"Kan du nå utlede hva resultatet av uttrykket a || b
er basert på tabellen?"
"Jeg skjønner!" Verdien av et uttrykk er true
hvis minst ett ledd i uttrykket er true
. Hvis begge er det false
, er resultatet false
.
"Det er riktig. Siden du er så smart, ta en ny titt på tabellen og se for deg at det false
er 0 og true
er 1. Når du ser på det på den måten, ||
minner operatørens oppførsel deg om noe fra vanlig regning?"
"Ehm... Vel, det er litt som addisjon... Men når du legger til, er 1 + 1 ikke lik 1."
"Det er en følelse av at det er likt hvis vi bare jobber med 0 og 1. Men ikke bry deg med det akkurat nå. Det viktige er at du la merke til likheten mellom operasjon og ||
addisjon. Dette betyr at du vil" Ikke bli overrasket over det faktum at denne operasjonen ofte kalles "logisk tillegg".
"Har det."
"Nå kommer AND
, aka &&
, aka konjunksjonsoperatøren , inn på scenen.
Uttrykk | Resultat |
---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
"Slik jeg forstår det, er resultatet av et uttrykk true
bare hvis begge verdiene som utgjør uttrykket er true
. Ellers er det alltid false
."
"Godt gjort, Amigo! Du absorberer alt dette som en svamp. Ser du en annen likhet med aritmetikk?"
"Multiplikasjon!"
"Akkurat. Så her har vi en 'logisk multiplikasjon'".
"Deretter ser vi på NOT
operatoren, aka !
, aka den logiske inversen .
Uttrykk | Resultat |
---|---|
!true |
false |
!false |
true |
"Vel, alt er ganske enkelt her. Operatøren bytter true
til false
og omvendt."
"Akkurat. Her er noen nyttige uttrykk for deg:"
Uttrykk | Resultat |
---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION