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
x
tilldelas 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
win
tilltrue
om båda slagen gav en trea, annarsfalse
.
Dölj style3dev.css för att bli av med annoteringarna!