Logiska uttryck
Ett logiskt uttryck är ett uttryck vars värde ärtrue eller false.
Sådan uttryck används huvudsakligen i så kallade villkors- och
iterations-satser (t ex if- och for-satser) men förekommer
bland annat även i tilldelningssatser.
Exempel:
int age = ...
boolean teenager = age>12 && age<=19;
som sätter den logiska variabeln till true om age har ett
värde i intervallet från 13 till 19,
Det finns operatorer som returnerar logiska värden:
- relationsoperatorer för jämförelser av värden och
- logiska operatorer som utför de logiska operationerna not, and och or.
Relationsoperatorerna är:
< | mindre än |
<= | mindre än eller lika med |
== | lika med |
>= | större än eller lika med |
> | större än |
!= | skiljt från |
De logiska operatorerna är:
! | logiskt icke |
&& | logiskt och |
|| | logiskt eller |
Relationsoperatorerna har högre prioritet än de logiska operatorerna och av de
logiska har ! (icke) högst och || (eller) lägst.
Beräkningsordningen kan styras med med parenteser.
Exempel:
boolean male = ... // true eller false
boolean gubbe = male && age >= 50;
boolean gumma = !male && age >= 50;
boolean x = !(male && age >= 50); // Vilka personer uppfyller detta?
De logiska operatorerna måste alltid ha logiska argument.
Om man t ex vill veta att x är större än både a och
b kan man alltså
inte skriva
if(x > a && b ) ... FEL
utan måste skrivas
if (x > a && x > b) ...
Övningar
- Hur kan den sista satsen i exemplet ovan (där
xtilldelas värde) skrivas enklare? - Hur kan uttrycket
!(a > b && c < d)skrivas utan användning av!-operatorn? -
Hur kan man skriva uttrycket
boolean female = male==false;utan relationsoperatorn
==? -
Skriv en sats som som simulerar två tärningsslag med en tresidig(!) tärning och
sätter den logiska variabeln
wintilltrueom båda slagen gav en trea, annarsfalse.
Dölj style3dev.css för att bli av med annoteringarna!