"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 orog 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
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Hvis verdien av alder er mellom 18og 65, vises uttrykket "Du kan jobbe".
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Vi opprettet en isYoungvariabel og flyttet den første delen av uttrykket inn i den. Vi byttet rett og slett ut age >= 18med age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
Vi opprettet en isOld-variabel og flyttet den andre delen av uttrykket inn i den. I tillegg age <= 65ble erstattet av age > 65.

"Disse tre eksemplene er likeverdige. Bare i det andre eksemplet flyttet vi en del av uttrykket fra setningen iftil 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 ORoperatø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 || ber basert på tabellen?"

"Jeg skjønner!" Verdien av et uttrykk er truehvis 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 falseer 0 og trueer 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 truebare 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å NOToperatoren, aka !, aka den logiske inversen .

Uttrykk Resultat
!true false
!false true

"Vel, alt er ganske enkelt her. Operatøren bytter truetil falseog 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