"Hilsen, Amigo! Jeg blev så revet med af at løse logiske problemer, at jeg ikke bemærkede, at du kom ind. Her er en til dig: Hvis krokodiller flyver, så er sne hvid. Der er en flyvende krokodille. Hvad er konklusionen?"

"Øh... Så vi konkluderer, at sne er hvid?"

"Fremragende! Du bestod initieringstesten. Du er klar til at mestre det næste emne. Det kaldes 'logiske operatorer'. Og vi starter med boolsk logik. Instinktivt ved du det allerede. Du er jo en robot . Vi skal bare justere dine indstillinger, så de matcher Java-sproget."

"Boolsk logik? Jeg fik for nylig at vide om den boolske type..."

"Ja, der er en direkte forbindelse her. Booleske udtryk kan kun være sande eller falske. Og som det sker, handler denne form for logik om udtryk, der er sande eller falske, og kombinationer af sådanne udtryk. For eksempel udtrykket 18 < 25 er altid sandt, og 7 < 5 er altid falsk. Udtrykket (i < 10) afhænger af værdien af ​​i. Og hvis udtrykket for eksempel vurderes til sandt, så kan vi bede programmet om at gøre noget."

"Ahh, jeg forstår det. Booleske udtryk giver os ikke kun mulighed for at drage logiske konklusioner, men også at skabe gafler i programmer."

"Nøjagtigt. Det vigtigste er at lære at skrive dem. For eksempel i Java kan du ikke bare gå og skrive udtrykket 18 < age <65. Det ville være syntaktisk forkert, og programmet vil ikke kompilere.

"Men du kan skrive det sådan her:

(18 < age) AND (age < 65)

Selvfølgelig bruger vi faktisk ikke det engelske ord AND. I stedet skal du bruge en boolsk operator . Det vil sige, 'OG' er repræsenteret forskelligt.

"Der er tre logiske operatorer i Java: AND(&&), OR(||), NOT(!).

Den gode nyhed er, at du kan bruge parenteser til at konstruere logiske udtryk for enhver kompleksitet.

Den dårlige nyhed er , at Java-udviklere besluttede at bruge notation fra C-sproget i stedet for ordene andog or.not

Se på skærmen:

Logisk operator Forventning Virkelighed
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"Det er faktisk ikke så slemt... Ret kompakt. Jeg har næsten lært dem udenad."

"Nå, det er fantastisk. Her er nogle eksempler på brug af logiske operatorer i Java:

Udtryk Fortolkning 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å brug af sammenligningsoperatorer og booleske variable

"Husk, Amigo, hvor end du kan skrive et logisk udtryk, kan du skrive en logisk variabel."

"Hvordan er det?"

"Jeg mener, du kan skrive logiske udtryk på forskellige måder. For eksempel:

Kode Forklaring
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Hvis værdien af ​​alder er mellem 18og 65, så vises sætningen "Du kan arbejde".
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Vi oprettede en isYoungvariabel og flyttede den første del af udtrykket ind i den. Vi erstattede simpelthen 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 oprettede en isOld-variabel og flyttede den anden del af udtrykket ind i den. Derudover age <= 65blev erstattet af age > 65.

"Disse tre eksempler er ækvivalente. Kun i det andet eksempel flyttede vi en del af udtrykket fra sætningen iftil en separat boolsk variabel ( isYoung). I det tredje eksempel flyttede vi den anden del af udtrykket til en anden variabel ( isOld). Forresten er standardværdien for en boolesk variabel false."

"Det vil jeg huske. Jeg håber."

Logisk aritmetik

"Lad os nu kort gennemgå logiske operationer. De adlyder meget enkle og logiske (hvordan kunne det være anderledes!) regler.

"Lad os først se, hvordan ORoperatøren fungerer. Det er også kendt som ||eller disjunction .

Udtryk Resultat
true || true true
true || false true
false || true true
false || false false

"Kan du nu udlede, hvad resultatet af udtrykket a || ber baseret på tabellen?"

"Jeg ser!" Værdien af ​​et udtryk er true, hvis mindst et led i udtrykket er true. Hvis begge er false, så er resultatet false.

"Det er korrekt. Eftersom du er så klog, så tag et nyt kig på tabellen og forestil dig, at det falseer 0 og trueer 1. Når du ser på det på den måde, minder operatørens ||adfærd dig så om noget fra almindelig regning?"

"Øh... Nå, det er lidt ligesom addition... Men når du tilføjer, er 1 + 1 ikke lig med 1."

"Der er en forstand, hvor det er lige, hvis vi kun arbejder med 0 og 1. Men lad være med det lige nu. Det vigtige er, at du bemærkede ligheden mellem operation og addition. Det betyder, at du vinder ||" ikke blive overrasket over, at denne operation ofte kaldes 'logisk tilføjelse'.

"Forstået."

"Nu kommer AND, aka &&, alias konjunktionsoperatøren , ind på scenen.

Udtryk Resultat
true && true true
true && false false
false && true false
false && false false

"Som jeg forstår det, er resultatet af et udtryk truekun, hvis begge værdier, der udgør udtrykket, er true. Ellers er det altid false."

"Godt gået, Amigo! Du absorberer alt dette som en svamp. Kan du se en anden lighed med aritmetik?"

"Multiplikation!"

"Nøjagtigt. Så her har vi en 'logisk multiplikation'".

"Dernæst ser vi på operatoren NOT, også kendt !som den logiske inverse .

Udtryk Resultat
!true false
!false true

"Nå, alt er ret simpelt her. Operatøren skifter truetil falseog omvendt."

"Nøjagtigt. Her er nogle nyttige udtryk til dig:"

Udtryk Resultat
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b