MQL4 COURSE By Coders guru www.forex-tsd.com -4 Operace & Výrazy Vítejte ve čtvrté lekci mého kurzu MQL4. Předchozí lekce Datové Typy prezentovaly mnoho nových konceptů ; Doufám, že jste všemu porozuměli, a že vás to bavilo. Předchozí lekci si můžete stáhnout odsud: http://forex-tsd.com/attachment.php?attachmentid=399 http://forex-tsd.com/attachment.php?attachmentid=372 http://forex-tsd.com/attachment.php?attachmentid=469 Nezapomeňte se nejprve zalogovat. Nyní si užijte lekci Operace & Výrazy. Co je význam operací a výrazů? Operace jsou vám známy velmi dobře. Např. (+,-, *, /) jsou základní aritmetické operace, takže si jistě velmi rychle zapamatujete, co znamená pojem operátor. Takže vás již slyším, jak říkáte OK,vím co jsou operace; mohl bys mi tedy říct, co znamená slovo výraz? Identifikátory (pamatujete si je? Pokud ne, nahlédněte zpět do lekce SYNTAX). Ty totiž spolu s operacemi vytvářejí výrazy. Připadá vám to jako puzzle? Pojďme si tedy provést ilustraci příkladem: x, y, z a w jsou zde identifikátory. =, * a / jsou operátory. To celé je výrazem. Při kombinaci výrazů vzniká sdělení. A když jsou sdělení kombinována spolu, tvoří funkci, když jsou spolu zkombinovány funkce, vytvářejí program.
Ve zbytku této lekce budeme mluvit o druzích operátorů používaných v MQL4. Začněme tedy se základními aritmetickými operátory: 1-Aritmetické operátory: V MQL4 se vyskytuje 9 aritmetických operací. Zde je seznam s použitím každého z nich: + Operátor pro sčítání A = B + C; B přičtěte k C a přiřaďte výslednou hodnotu k A. - Operátor odečítání A = B - C; Odečtěte C od B a výslednou hodnotu přiřaďte k A. + Operátor změny Změna znaménka na kladné nebo A = -A; znaménka záporné * Operátor násobení A = B * C; Vynásobení B a C a přiřazení výsledku k A. / Operátor dělení A = B / C; B dělí C a výsledek je přiřazen k A. % Modulový operátor A =A % C; A je zbytkem dělení B a C. ( např. z 10%2 vznikne 0, z 10%3 vznikne 1). ++ Operátor přírůstku A++; Přičítání A o 1 (např. pokud A =1, výsledek je 2). Operátor úbytku A--; Odečítání 1 od A (např. pokud A = 2, výsledek je 1). Poznámka: Zůstatkový operátor funguje dělením prvního čísla druhým pro první celočíselný výsledek a vrací zbytkové číslo. Příklad: 10%5=0 To proto, že pokud dělíte desítku pětkou, výsledek je 2 a zbytková hodnota není žádná, zbytek je tedy 0. 10%8=2 To proto, že pokud dělíte desítku osmičkou, dostanete 1(1*8=8), takže zůstatek je (10-8 = 2). 100%15=10 To je proto, že pokud dělíte 100 patnácti, výsledek bude 6 (6*15 =90 ), takže zbytková hodnota je (100-90 =10). A co třeba 6%8? Výsledek bude 6, protože pokud 6 vydělíte 8, dostanete 0 (8*0=0),takže zůstatek je 6 (6-0 =6). Poznámka: Nemůžete kombinovat operátory přírůstku a úbytku s ostatními výrazy. Např. nemůžete říct: Můžete však provést zápis tímto způsobem:
Poznámka: Jak funguje výše uvedený příklad? Tak se na něj podívejme: in t A=1; // nastavte A na 1 in t B; A+ + ; // navyšte A o 1, nyní A=2 B=A*5 ; // což znamená B=2*5 2- Přiřazovací operátory: Účelem jakéhokoliv výrazu je vytvořit výsledek a sestavení přiřazovací operátory přiřadí levému operandu tuto výslednou hodnotu. Příklad: Zde násobíme B a C a přiřazujeme výsledek k A. (=) zde slouží jako přiřazovací operátor. V MQL4 existuje 11 přiřazovacích operací. Zde je uveden seznam s jejich použitím: = Přiřazovací operátor A = B; Přiřazení B k A. += Sčítací přiřazovací A += B; Znamená: A = A + B; přiřadí B k A operátor a výsledek přiřadí k A. -= Odečítací přiřazovací A -= B; operátor *= Přiřazovací operátor A *= B; násobku /= Přiřazovací operátor A /= B; dělení Modulační přiřazovací %= operátor A %= B; >>= <<= &= = Levý přiřazovací A >>= B; operátor pro přesun Pravý přiřazovací A <<= B; operátor pro přesun Přiřazovací operátor AND A &= B; Přiřazovací operátor OR A = B; Znamená: A = A -B; Odečítá B od A a přiřadí výsledek k A. Znamená: A = A * B; Násobí A a B a přiřazuje výsledek k A. Znamená: A = A / B; dělí A s B a přiřazuje hodnotu k A. Znamená: A = A % B; získá zůstatek dělení A s B a přiřazuje výsledek k A. Přesunuje bity A vlevo o počet bitů specifikovaných v B. Přesunuje bity A vpravo o počet bitů specifikovaných v B. Nahlíží na binární reprezentaci hodnot A a B provede na nich bitovou operaci AND. Nahlíží na binární reprezentaci hodnot A a B provede na nich bitovou operaci OR.
^ = Přiřazovací operátor X OR A ^ = B; Nahlíží na binární reprezentaci hodnot A a B provede na nich bitovou operaci exclusive OR. 3-Porovnávací operátory : Porovnávací (relační) operátory srovnávají dvě hodnoty (operandy) a výsledek je pouze true nebo false. Je to stejné jako třeba u otázky Je John vyšší než Alfred?? Ano/ne? Výsledek bude false, pouze pokud výraz vyvolá nulu a true u každého jiného čísla než nula; Příklad: V MQL4 se vyskytuje 6 relačních operací. Zde je uveden jejich seznam a použití: == Operátor rovná se A == B; True, pokud se A rovná B, jinak False.!= Operátor nerovná se A!= B; True, pokud se A nerovná B, jinak False. < Operátor menší než A < B; True, pokud je A menší než B, jinak False. > Operátor větší než A > B; True, pokud A je větší než B, jinak False. <= Operátor menší než A <= B; True, pokud A je menší nebo nebo roven rovno B, jinak False. >= Operátor větší než nebo A >= B; True, pokud A je větší nebo rovno roven B, jinak False. 4-Logické operátory: Logické operátory jsou obecně derivovány z algebry Boolean, která je matematickým způsobem manipulace pravdivými hodnotami konceptů abstraktním způsobem bez ohledu na to, co daný koncept v daný moment znamená. Pravdivá hodnota konceptu hodnoty Boolean může mít pouze jednu z možných hodnot: true nebo false. MQL4 pojmenovává logické operátory jako operátory Boolean
MQL4 používá 3 nejdůležitější logické operátory. Zde je uveden jejich seznam a použití: && Operátor AND A && B; Pokud jsou některé z hodnot nula, hodnota výrazu je nula. Jinak je hodnoty výrazu jedna. Pokud je hodnota na levé straně nula, pravá hodnota pak není brána v potaz. Operátor OR A B; Pokud jsou obě hodnoty nula, pak je hodnota výrazu nula, jinak je hodnota výrazu jedna. Pokud je hodnota na levé straně nula, pravá hodnota pak není brána v potaz.! Operátor NOT!A; Pokud je operátor NOT aplikován do hodnoty, která je jiná než nula, zůstane nulovým, pokud je aplikován do nulové hodnoty, výsledek je jedna. 5-Bitové operace: Bitové operace jsou shodné s logickými operacemi, mimo práci s malými měřítky binární reprezentace dat. V MQL 4 jsou k dispozici tyto operace: & Operátor AND A & B; Srovnává dva bity a generuje výsledek 1, pokud oba bity jsou 1; jinak vrací hodnotu 0. Srovnává dva bity a generuje Operátor OR A B; výsledek 1, pokud se bity doplňují; jinak vrací hodnotu 0. ^ ~ >> Operátor EXCLUSIVE OR A ^ B; Operátor COMPLEMENT Operátor SHIFT RIGHT ~A; A >> B; Srovnává dva bity a generuje výsledek 1, pokud jeden nebo oba bity jsou 1; jinak vrací hodnotu 0. Používá se k invertování všech bitů a operandů. Přesouvá bity, vyřazuje nejkrajnější pravý bit a přiřazuje nejkrajnějšímu levému bitu hodnotu 0. Každý posun vpravo efektivně dělí op1 napůl.
<< Operátor SHIFT LEFT A << B; Přesouvá bity doleva, vyřazuje nejkrajnější levý bit a přiřazuje nejkrajnějšímu pravému bitu hodnotu 0. Každý posun vpravo efektivně násobí op1 dvěma. Poznámka: Oba operandy asociované s bitovými operacemi musí být celá čísla. 6-Ostatní operátory: Existují určité operátory, které se používají v MQL4 a nepatří do žádné z předchozích kategorií: 1- operátor indexování pole ( [] ). 2- operátor volání funkce ( () ); 3- operátor oddělovač čárka (,) Více se o operátorech Arrays a Functions dozvíte v další lekci, tak si teď jen zapamatujte, že se jedná o 3 typy jiných operátorů. Prioritní operátory: Pokud přesně neoznačíte příkaz, ve kterém chcete provést operace ve sloučeném výrazu, příkaz je zadán podle přiřazené priority k použití operátoru v rámci výrazu. Operátory s vyšší prioritou jsou vyhodnoceny přednostně. Např. operátor dělení má vyšší prioritu než operátor sčítání. Proto jsou následující výrazy ekvivalentní: Při zápisu sloučených výrazů byste měli být přesní a indikovat závorkami (), které operátory mají být vyhodnoceny jako první. Tím způsobem učiníte svůj kód jednodušším pro čtení i pro ošetřování. Následující tabulka vyobrazuje priority přiřazené k operátorům MQL4. Operátory v této tabulce jsou seřazeny podle priority: Čím výše jsou v tabulce uvedeny, tím vyšší je jejich priorita. Operátory s vyšší prioritou jsou vyhodnocovány před operátory s relativně nižší prioritou. Operátory ve stejné skupině mají shodnou prioritu. Pokud se ve výrazu vyskytnou operátory se stejnou prioritou, Musí být zavedeno pravidlo, který operátor vyhodnotit jako první. Veškeré binární operátory kromě přiřazených operátorů jsou vyhodnocovány zleva. Přiřazené operátory jsou vyhodnocovány zprava doleva. () Volání funkce Zleva [ ] Pole volba elementu Zleva
! Negace Zleva ~ Bitové negace Zleva - Znaménko změny operace Zleva * Násobení Zleva / Dělení Zleva % Zbytek po celočíselném dělení Zleva -+ Sčítání, odečítání Zleva << >> Posun vlevo, posun vpravo Zleva < Menší než Zleva <= Menší než nebo rovno Zleva > větší než Zleva => Větší než nebo rovno Zleva == Rovná se Zleva!= Nerovná se Zleva & Bitové operace AND Zleva ^ Bitové operace exclusive OR Zleva && Logické AND Zleva Logické OR Zleva = Přiřazení Zleva += přiřazení součtu Zleva -= Přiřazení odečtu Zleva *= Přiřazení násobení Zleva /= přiřazení dělení Zleva % = přiřazení modulu Zleva > = přiřazení pravého přesunu Zleva <<= přiřazení levého přesunu Zleva
& = přiřazení bitové operace AND Zleva = přiřazení bitové operace OR Zleva ^ = přiřazení operace exclusive OR Zleva, Čárka Zleva VŠE VÝŠE UVEDENÉ ZLEVA DOPRAVA Doufám, že se vám lekce líbila. Uvítám veškeré dotazy a náměty. S pozdravem Coders G uru 23-10 -20 0 5