Operátory I

Co jsou to operátory? K čemu jsou potřeba? Jaké operátory rozlišujeme?

Dle definice jsou operátory části programu, které obsahují předpis konverze dat určitou metodou za určitých podmínek. Tato definice nám ale asi příliš neřekne, a tak jsem opět pro nezdržování zbytečnou teorií a přejití rovnou ke konkrétním operátorům a jejich významu pro program. Analogicky by se operátory daly přirovnat k větám a odstavcům, jestliže celý kód je článek. Každý operátor má svůj specifický úkol. Například přiřazovací operátor daný znakem „=“ má za úkol přiřadit určitou hodnotu dané proměnné. Podmínkové operátory mají za úkol rozhodovat o pravdě nebo nepravdě určitého výrazu a podle toho konat nebo nekonat další akce. Cyklické operátory zase opakují exekuci stejného kódu dle zadaných určitých podmínek.

Jednoduché operátory jako sčítání, přiřazování, porovnávání atd. už známe z minulého dílu, tento proto bude věnován především těm složeným, jejichž pochopení je klíčové pro tvorbu efektivních programů.

Jednoduchý vs. složený

Jednoduchý operátor je ukončený středníkem. Díky středníku počítač pozná, kde končí jeden operátor (jedna operace) a začíná další. Dle analogie z prvního odstavce je to tedy pomyslná jednoduchá věta. Příkladem může být zmiňované přiřazení hodnoty, volání funkce, sečtení dvou hodnot apod. Většinu operací, které provádíme pomocí jednoduchých operátorů, jsme již shrnuli v minulém díle. Na další se podíváme později.

Naproti tomu složený operátor lze přirovnat k celému odstavci. Dělí se na takzvanou hlavičku (nezaměňovat s hlavičkou celého kódu) a tělo operátoru. V hlavičce jsou definovány vlastnosti operátoru – obvykle se jedná o podmínky, za kterých se bude exekuovat tělo. Tělo je složeno většinou z několika jednoduchých operátorů oddělených středníkem (věty odstavce). Celé tělo je potom uloženo ve složených závorkách tak, aby program poznal, kde skupina operátorů přidružená hlavičce začíná a končí. Mezi nejpoužívanější operátory patří podmínkové a cyklické. Složené operátory jsou v programu vyznačeny jasně modrou barvou, podobně jako zkratky datových typů. Ve zbytku tohoto dílu a v díle dalším si představíme a vysvětlíme všechny hlavní operátory.

Podmínkový operátor if-else

Operátor if-else je nejpoužívanějším složeným operátorem. Pomocí něho můžeme vytvořit rozhodovací mechanismus, který vykoná nějakou akci (námi zadanou skupinu operací), pokud je splněna určitá podmínka a případně vykoná jinou akci, pokud tato podmínka splněna není. Obecně má operátor if-else následující tvar:

if („podmínka“)

{

blok operátorů k vyplnění, pokud je podmínka splněna;

}

else

{

blok operátorů k vyplnění, pokud podmínka splněna není;

}

 

Rozlišujeme tři struktury podmínkového operátoru if-else podle toho, jaké části obsahuje. Níže jsou všechny představeny na jednoduchém příkladu. Začneme základním typem.

if (Bid > Level)

{

Alert(„Cena překročila stanovenou úroveň“);

Level = 0;

}

else

{

Print(„Cena dosud stanovenou úroveň nepřekročila“);

}

První řádek, tedy if (Bid > Level) představuje hlavičku. V závorce za identifikátorem if je zadána podmínka, která bude operátorem nejprve vyhodnocena. V tomto příkladě musí rozhodnout, zda platí, že aktuální cena Bid je vyšší než hodnota proměnné Level. Pokud tomu tak je a podmínka je tedy splněna, vykoná se blok operací ve složené závorce pod hlavičkou. V našem případě se exekuuje funkce Alert, která traderovi zobrazí prostřednictvím dialogu upozornění s textem umístěným v závorce a hodnota proměnné Level se nastaví na nulu. Obě operace musí končit středníkem.

Pokud podmínka splněna není, tedy pokud je cena Bid nižší nebo rovna hodnotě proměnné Level, vykoná se blok operací ve složené závorce za identifikátorem else. V tomto případě vykoná pouze funkci Print, která zapíše záznam do programového logu (záložka Deník v terminálu). Záznam odpovídá zadanému parametru funkce, který se vepisuje do závorky. Tvar operátoru if-else může ale část else úplně postrádat.

if (Bid > Level)

{

Alert(„Cena překročila stanovenou úroveň“);

Level = 0;

}

V tomto případě by byl postup stejný v případě splnění podmínky, ale odlišný v případě, že by podmínka splněna nebyla. Z důvodu absence části operátoru else není dáno, co má program v takovém případě dělat. Nebude proto dělat nic, respektive bude pokračovat v exekuci dalšího kódu, ať už následuje za operátorem cokoliv. Nakonec existuje ještě jednodušší tvar:

if (Bid > Level)  Alert(„Cena překročila stanovenou úroveň“);

Exekuce je zde taková, že pokud je podmínka v hlavičce splněna, vykoná se funkce Alert. Všimněme si ale, že zde chybí složené závorky. Nyní už je vám asi jasný jejich význam. Podle složených závorek operátor pozná, co všechno má exekuovat. Pokud složené závorky nejsou, exekuuje se pouze první operace, další jsou z hlediska exekuce již mimo tělo operátoru a vyhodnocení podmínky na ně nemá vliv.

Cyklický operátor while

While je jednodušším ze dvou cyklických operátorů. Jeho účelem je vykonávat blok operátorů stále dokola, dokud je splněna zadaná podmínka. Obecně je jeho tvar takovýto:

while („podmínka“)

{

blok operátorů k vyplnění;

}

Podmínka je opět zadána v závorce v hlavičce. Následuje blok operátorů umístěný ve složených závorkách. Ten se exekuuje neustále dokola, dokud je podmínka v hlavičce splněna. Jedna exekuce cyklu se nazývá iterace. Kontrola podmínky je provedena na konci každé iterace. Pokud je splněna, exekuuje se znovu, pokud už není, blok se přeskočí a pokračuje se v následujícím kódu programu. Příklad je uveden pod operátorem for, kterým lze operátor while ve většině případů nahradit.

Cyklický operátor for

for (Výraz1; „podmínka“; Výraz2)

{

blok operátorů k vyplnění;

}

V hlavičce tentokrát najdeme tři výrazy oddělené středníkem. Při exekuci tohoto operátoru nejdříve program vykoná Výraz 1, tedy vlevo v hlavičce. Poté vykoná blok operátorů ve složených závorkách, přičemž na konci každé iterace vykoná Výraz2, který je v hlavičce úplně vpravo. Iterace vykonává neustále dokola, dokud je splněna podmínka, která je umístěna uprostřed hlavičky. Na následujícím příkladě si ukážeme, že operátory while a for jsou vzájemně nahraditelné. Srovnejte tuto část kódu s operátorem while:

while

…a tuto část s operátorem for:

for

Když si pozorně projdete tyto dva bloky kódu, měli byste dojít k závěru, že obě části kódu se exekuují s naprosto stejným výsledkem. Obě části začnou deklarací proměnné x a přiřazení hodnoty 1. Pak se vykonává blok operací neustále dokola, přičemž na konci každé iterace je hodnota x zvýšena o 1. Iteruje se do té doby, dokud platí, že x je menší než hodnota proměnné PocetUsecek. Také byste měli dojít k tomu, že hodnota proměnné Soucet bude na konci rovna průměru high a low všech svíček grafu, což je cílem obou bloků kódu. Na příkladech mimo jiné vidíme, proč se v praxi častěji používá operátor for. Tváří se sice složitěji, ale je praktičtější a úspornější na místo.

To byly nejvýznamnější operátory, bez kterých se žádný programátor neobejde. V příštím díle si ukážeme zbývající operátory, aby byl jejich výčet kompletní, a nakousneme poslední zásadní kapitolu, kterou je třeba probrat, než se pustíme do praktického programování – funkce.