Operátory

V poslednom príklade sme si ukázali využitie príkazu if za pomoci premennej typu Boolean (pravda alebo nepravda). Keďže táto premenná môže obsahovať len dve rôzne hodnoty, využitie podmienky s týmto typom premennej neponúka až toľko zábavy. V tejto kapitole si ukážeme využitie s premennou typu integer. Ako vieme, je to typ premennej, ktorý nám umožňuje ukladať ako hodnotu číslo. Tým, že premenná typu integer môže obsahovať omnoho viacej rôznych hodnôt (2, -5, 10, 30, 120...), otvárajú sa nám viaceré možnosti, ako sa dá využiť príkaz if.

 

Doteraz sme použili len podmienku (otázku počítaču), ak niečo platí alebo neplatí, tak urob toto. Vieme mu ale položiť aj oveľa zložitejšie a praktickejšie otázky (klásť podmienky), ktoré podmieňujú vykonanie našich príkazov. V programoch sa môžu vyskytovať otázky rôzneho typu zapísané kódom v podmienke príkazu if ako napríklad: Ak máš 30 rokov, ak si starší ako 18 rokov, ak si chlapec, ak nemáš deti, ak máš viac ako 100€, ak nemáš 20 rokov, ak klikneš na tlačíko číslo 5 a podobne. Na zapísanie týchto otázok si budeme musieť predstaviť (premietnuť) dané podmienky troška matematicky. Aby sme boli schopní zapísať matematické vyjadrenie týchto otázok kódom, potrebujeme poznať operátory.

 

V jazyku PHP existuje viacero druhov operátorov, ktoré slúžia na zapísanie vzťahu dvoch a viacerých premenných (operandov). Vzťah medzi premennými môže byť napríklad či sa rovnajú (či sú rovnaké – zhodné), či je jedna menšia alebo väčšie ako druhá a podobne. Na to nám slúžia porovnávacie operátory. Ako je z názvu zrejmé, tieto operátory nám budú slúžit na porovnávanie. Predstavme si otázku: ak máš presne 6 rokov, tak sa niečo stane. Ak chceme túto jednoduchú vetu zo života pochopiť troška matematicky, aby sme ju mohli zapísať do kódu, môžeme si to predstaviť nasledovne. Ak sa môj vek (počet rokov) rovná číslu 6, tak sa niečo udeje. Podotkol by som na časť vety rovná číslu. Ak sa chceme pýtať počítača, či sa niečo rovná niečomu, používame na to operátor rovnosti (zhody), ktorý sa zapisuje dvomi znamienkami rovná sa (==). Našu otázku by sme do kódu mohli prepísať nasledovne. Premenná moj_vek bude predstavovať to, koľko máme akože rokov a porovnáme ju s číslom 6. Čiže náš vzťah bude pozostávať z premennej, ktorá reprezentuje náš vek, za ňou bude nasleovať porovnávací operátor na zhodnosť a budem porovnávať s číslom 6. Náš program bude vyzerať nasledovne:


<?php
$moj_vek = 22;   //premenna, ktora vyjadruje nas vek, t.j. pocet rokov
if($moj_vek == 6){   //pytame sa, ci sa to rovna cislu 6, cize ci mame 6 rokov
    echo "Musim ist do skoly";
}else{
    echo "Nemam 6 rokov."; //podmienka nie je splnena, hodnota premennej sa nerovna cislu 6, takze sa vykona tento prikaz
}

 

Podobne môžeme vytvoriť aj iné podmienky – porovnávania, za pomoci iných porovnávacích operátorov. Tie sú v podstate založené na znamienkach, ako ich poznáme z matematiky. Pre otázku ak je premenná väčšia ako niečo (konkrétne číslo alebo premenná), používame otvorený zobáčik (>), analogicky pre menšie zatvorený zobáčik (<), pre väčší alebo rovný používame otvorený zobáčik a rovná sa (>=) a pre menší a rovný zatvorený zobáčik a rovná sa (<=). Pre vzťah, ak je niečo rôzne (iné ako), môžeme použiť znamienko väčší menší (<>) alebo výkričník a rovná sa (!=). Tieto operátory si ukážeme na viacero jednoduchých príkladov pre lepšie pochopenie.

 

Ešte predtým si však povieme ešte jednu vymoženosť príkazu if. Doteraz sme vedeli rozlíšiť iba dva stavy a to, keď podmienka platí (if) alebo neplatí (else). Čo keď ale chceme použiť viacero podmienok v jednom príkaze if? Predstavme si situáciu, kedy chceme jedným príkazom if ošetriť túto situáciu. Ak máme menej ako 15 rokov, vykonaj príkaz 1, ak máme presne 15 (náš vek sa rovná číslu 15), tak vykonaj príkaz 2 a ak máme viac ako 15, tak vykonaj príkaz 3. Takýto zápis vyzerá nasledovne. Prvá podmienka za príkazom if vyzerá tak ako doteraz. Zmena nastáva vo vetve else, kde tentokrát za slovom else nenasledujú množinové zátvorky s príkazmi, ktoré sa majú vykonať, ak neplatí prvá podmienka, ale za slovom else nasleduje ďalšie podmienka, pred ktorou stojí slovo príkaz if. Takýchto vetiev (if(podmienka1){príkazy1}else if(podmienka2){príkazy2}else if(podmienka3){príkazy4}) môže byť ľubovoľne veľa. Príkaz if sa vyhodnocuje smerom od hora dole a zaradom sa overujú všetky podmienky (v okrúhlych zátvorkách). Ak je podmienka splnená, vykoná sa blok príkazov v množinových zátvorkách zadefinovaný hneď za danou splnenou podmienkou a ostatné podmienky sa neoverujú. Ak podmienka nie je splnená, program skočí na overovanie ďalšej podmienky. Ak chceme vykonať príkaz, ktorý chceme, aby sa splnil, ak všetky uvedený predošlé podmienky nie sú splnené, použijeme iba príkaz else bez podmienky (namiesto else if(podmienka) použijeme iba else{príkazy}). Vyzerá to asi takto:

 

<?php
$moj_vek = 15;   // premenna, ktora vyjadruje nas vek, t.j. pocet rokov
if($moj_vek < 15){   //pytame sa, ci mame menej ako 15 rokov
    echo "Naco ti je obciansky ?!"; //tento prikaz sa nevykona, podmienka nie je splnena
}else if($moj_vek == 15){   //sem sa dostaneme, ak prva podmienka nie je splnena a kladieme dalsiu podmienku
    echo "Chod si spravit obciansky preukaz!"; //podmienka je splnena, takze sa vykona tento prikaz
}else{  //sem sa dostaneme, ak nebola splnena ani jedna ani druha podmienka
    echo "Obciansky uz mas:)";    //tento prikaz sa nevykona, pretoze nas prikaz if skoncil v druhej podmienke == 15
}

Máte nejakú otázku alebo Vám niečo nie je jasné? Napíšte nám na info@zacni-programovat.sk a poradíme!

Ťažko sa vám učí samému?

Máte problémy s niektorými časťami alebo sa neviete učiť sám? Využite našu možnosť individuálnej asistencie:

  • samostatný prístup
  • vysvetlenie nejasností prebraného učiva
  • úlohy a cvičenia navyše
  • všetko z pohodlia domova cez mail a skype

Pre viac info kliknite tu

Kľúčové slová prednášky

operatoryaritmeticke operatoryoperatorsphp operatoryporovnavanieporovnanie ciselporovnavanie premennychporovnavanie v podmienke

IT ftip

Stretnú sa dvaja povaľači. Prvý sa tak zamyslí a vraví: - Človeče, keby nebol ten INTERNET, sedel by som celý deň pri telke!