Podmienkový príkaz a logické výrazy

<< Aritmetické výrazy | Obsah | Cykly >>

Podmienkové príkazy

Podmienkové príkazy (alebo aj príkazy vetvenia) nám umožňujú vykonať nejaký príkaz alebo postupnosť príkazov, iba ak je splnená nejaká podmienka.

Na vetvenie budeme používať príkaz if. Jeho syntax je nasledovná:

if ( podmienka ) {
   príkazy vykonané ak je podmienka splnená
}

Podmienka je buď logický literál (true alebo false), premenná typu boolean, metóda, ktorá vráti hodnotu typu boolean alebo logický výraz - proste všetko čoho výsledkom je true alebo false. Príkazy, ktoré sú v zátvorkách sa vykonajú, iba ak je podmienka pravdivá (true), inak sa preskočia.

V nasledujúcom príklade presunieme korytnačku na pozíciu [50,50] a otočíme ju o 90 stupňov iba ak je jej x-ová súradnica aspoň 150. Potom sa korytnačka bez ohľadu na to, kde sa nachádza, posunie o vzdialenosť 30 pixelov.

if (this.getX() > 150) {
   this.moveTo(50,50);
   this.turn(90);
}
this.step(30);

Rozšírený typ podmienkového príkazu if-else obsahuje aj blok pre príkazy, ktoré sa majú vykonať, v prípade, že podmienka nie je splená. Syntax je nasledovná:

if ( podmienka ) {
   príkazy vykonané ak je podmienka splená
}
else {
   príkazy vykonané ak podmienka nie je splená
}

Logické výrazy

Logické výrazy sú výrazy, ktorých výsledkom je buď true (pravda) alebo false (nepravda).

Základnými operáciami v logických operáciách sú príkazy porovnania:

operátorvýznam
x == yx sa rovná y
x != yx sa nerovná y
x > yx je väčšie ako y
x >= yx je väčšie alebo rovné y
x < yx je menšie ako y
x <= yx je menšie alebo rovné y

x a y v tejto tabuľke môžu byť napríklad premenné, literály alebo metódy, ktoré vracajú nejaké hodnoty (napr. Math.sqrt()) Týmto spôsobom môžeme porovnávať iba primitívne hodnoty.

Ak x a y sú liretály, premenné typu boolean, alebo iné logické operácie, môžeme používať aj relačné operátory:

operáciavýznam
x && yx a súčasne y - nazývaný aj ako operátor AND
x || yx alebo y - nazývaný aj ako operátor OR
!xnegácia x - nazývaný aj ako operátor NOT

podľa toho akú hodnotu majú operátory x a y sú výsledkom výrazu nasledovné hodnoty:

xyx && yx || y!x
falsefalsefalsefalsetrue
falsetruefalsetruetrue
truefalsefalsetruefalse
truetruetruetruefalse

Pri operátoroch && a || je potrebné upozorniť na to, že sa vyhodnocujú z ľava do prava. Dôsledok toho je taký, že ak sa vo výraze (x && y) vyhodnotí x ako nepravdivé, pravdivosť y sa už neoveruje, lebo je jasné, že celý výraz bude nepravdivý. Podobne vo výraze (x || y) ak sa x vyhodnotí ako pravdivé, pravdivosť y sa už neoveruje, lebo celý výraz je už pravdivý. Zrejmešie to bude asi z príkladu:

double hodnota = -5.0;
boolean mamVelkuOdmocninu;

mamVelkuOdmocninu = (hodnota >= 0) && (Math.sqrt(hodnota) > 1000); // vráti false lebo hodnota je menšia ako 0, odmocnina sa nepočíta

mamVelkuOdmocninu = (Math.sqrt(hodnota) > 1000) && (hodnota >= 0); // vyhodí chybu lebo odmocnina zo záporného čísla sa počítať v reálnych číslach nedá

<< Aritmetické výrazy | Obsah | Cykly >>