Úvod do funkcí

Úvod do funkcí

Funkce jsou hlavní hybnou částí programů. Jsou to části kódu určené k vykonání nějakého úkolu, jako třeba výpočtu, nalezení nějaké pozice, vypnutí nějakého grafu apod. Většina funkcí navíc vrací určitou hodnotu (s výjimkou funkce typu void).

Již v dřívějších dílech bylo řečeno, že veškerá exekuce se odehrává uvnitř funkcí. Jediným blokem mimo tělo jakékoliv funkce je hlavička programu, která však neslouží k exekuci, pouze k definicím. Funkce lze rozdělit do tří typů. V tomto díle si nastíníme účel a použití těchto typů a v dílech následujících je rozebereme dopodrobna.

Speciální funkce – veškerá exekuce pochází právě z těchto funkcí. Připomeňme diagram ze čtvrtého dílu:

Struktura běžného programu

Struktura běžného programu

Použití speciálních funkcí se liší od typu programu, jmenovat můžeme například funkce OnInit(), OnDeinit(), OnTick(), OnCalculate() atd. Tyto funkce jsou vyvolávány určitou událostí, jako třeba ukončení programu, nová příchozí cena nebo spuštění skriptu. Podrobně jsme je rozebrali ve čtvrtém dílu, proto přejdeme rovnou k dalším typům funkcí.

Vlastní uživatelské funkce jsou takové, které si programátor sám nadefinuje. Nadefinovat je může kdekoliv v programu mimo těla ostatních funkcí ve složených závorkách, před kterými je uveden název a typ funkce a případně její parametry. Aby danou funkci posléze exekuoval, je potřeba na ni zavolat. Volání funkce se také řadí mezi operátory, i na ně se zaměříme v příštím díle.

Předdefinované neboli standardní funkce jsou funkce, které není potřeba uživatelsky definovat. Jejich účel, datový typ, vrácená hodnota i množství parametrů jsou dány tvůrci jazyka MQL. Existují stovky předdefinovaných funkcí, jejich úplný seznam je na adrese http://docs.mql4.com/function_indices. Rozdělují se do kategorií jako informační funkce, konverzní, matematické, funkce indikátorů a další podle toho, k čemu jsou určeny. Pokud je to možné, vždy je dobré dát přednost těmto funkcím místo tvoření vlastních. Vlastní funkce totiž nikdy nebude efektivnější a rychlejší než standardní.

Jak uživatelské, tak standardní funkce si zaslouží samostatný díl série. Příště se ale ještě podíváme na funkce obecně a na operátor „volání na funkci“.