HELP_TOPIC("AppDoc", "", "CalcNode", "CS-CZ windows-1250", "")
HELP_TEXT(
	"[3 $$0,0#00000000000000000000000000000000:Default]\r\n"
	"[b100;a50;*3 $$1,0#23046025415494101427921008701515:Paragraph]\r\n"
	"[{0}%EN-US \r\n"
	"[s0; Výrazový kalkulátor je výpočetní systém, který umožňuje počítat \r\n"
	"hodnoty uživatelsky zadaných výrazů. Vstupem pro výpočet je [/ zdrojový \r\n"
	"text výrazu], což je textový řetězec obsahující výraz utvořený \r\n"
	"podle níže popsaných pravidel, a [/ kontext výpočtu], což je vazba \r\n"
	"mezi výrazem a hostitelskou aplikací, ve které je výrazový systém \r\n"
	"použit. Kontext výpočtu může podle charakteru aplikace definovat \r\n"
	"například přídavné funkce a konstanty v_závislosti na aktuálním \r\n"
	"nastavení a_hodnotách zpracovávaných v_hostitelské aplikaci.&]\r\n"
	"[s0; &]\r\n"
	"[s0; Syntaxe výrazů rámcově vychází z_konvencí pro výrazy v_[/ programovacím \r\n"
	"jazyce C], obdobně jako Java nebo JavaScript. Základem výrazu \r\n"
	"jsou [/ literály] (čísla, textové řetězce uvedené přímo ve zdrojovém \r\n"
	"textu výrazu), [/ proměnné ](identifikátory odkazující se na konstanty \r\n"
	"nebo funkce podle kontextu výpočtu výrazu) a [/ operátory], pomocí \r\n"
	"nichž lze hodnoty různě kombinovat a_zpracovávat.&]\r\n"
	"[s0; &]\r\n"
	"[s0; Základní výrazový systém podporuje práci s_hodnotami následujících \r\n"
	"datových typů:&]\r\n"
	"[s0; &]\r\n"
	"[s0;i150;O0; [* číslo] (v_plovoucí řádové čárce)&]\r\n"
	"[s0;i150;O0; [* řetězec] (textová hodnota)&]\r\n"
	"[s0;i150;O0;* datum/čas&]\r\n"
	"[s0;i150;O0; [* pole hodnot] (jednotlivé prvky pole mohou být i různých \r\n"
	"typů)&]\r\n"
	"[s0;i150;O0; [* lambda-výraz] (část výpočetního výrazu, kterou lze \r\n"
	"předávat do funkcí jako parametr)&]\r\n"
	"[s0; &]\r\n"
	"[s0; Kontext výrazu (hostitelská aplikace používající výrazový systém) \r\n"
	"může podle svých potřeb rozšiřovat tento základní repertoár o \r\n"
	"další datové typy a_funkce.&]\r\n"
	"[s1; Operátory&]\r\n"
	"[s0; Operátory slouží podobně jako funkce k_výpočtu hodnot z_jiných \r\n"
	"zdrojových hodnot. Narozdíl od funkce, kterou lze vyvolat zápisem \r\n"
	"[/ identifikátor`_funkce(parametr1, parametr2...)], se operátory \r\n"
	"obvykle používají způsobem [/ výraz1 <operátor> výraz2] (tzv. [/ binární \r\n"
	"operátor]), případně [/ <operátor> výraz] ([/ prefixový unární operátor]). \r\n"
	"Podrobný popis operátory a_funkcí s_povolenými typy parametrů \r\n"
	"naleznete v_části \r\n"
	"{:LINK:dpp`:`/`/AppDoc`/`/host`/`/calc`_summary\t\t:}\r\n"
	".&]\r\n"
	"[s0; &]\r\n"
	"[s0; Kromě toho výrazový systém podporuje několik speciálních operátorů \r\n"
	"s_jiným způsobem zápisu. Jedná se o_následující operátory:&]\r\n"
	"[s1; `[<p1>, <p2>, <p3>, ...`]: konstruktor pole&]\r\n"
	"[s0; Vložením posloupnosti hodnot nebo výrazů oddělených čárkami \r\n"
	"do hranatých závorek vznikne pole obsahující zadané hodnoty jako \r\n"
	"své prvky.&]\r\n"
	"[s0; &]\r\n"
	"[s0;* Příklad: `[1, 2, 3 + 4`]&]\r\n"
	"[s1; `[<p1> .. <p2>`]: konstruktor posloupnosti&]\r\n"
	"[s0; Pokud do hranatých závorek napíšete dvě číselné hodnoty nebo \r\n"
	"výrazy oddělené dvěma tečkami (dvě tečky musí následovat ihned \r\n"
	"po sobě bez mezery), výsledkem takto vytvořeného výrazu je pole \r\n"
	"obsahující posloupnost hodnot [/ p1, p1 + 1, p1 + 2, p1 + 3] atd. \r\n"
	"až po hodnotu [/ p2]. Pokud rozdíl hodnot [/ p1] a [/ p2 ]není přesně \r\n"
	"celočíselný, poslední prvek pole bude mít hodnotu v_rozsahu [/ `[p2-0.5, \r\n"
	"p2+0.5)]. Pokud je [/ p2 <= p1 - 0.5], je výsledkem prázdné pole \r\n"
	"(pole neobsahující žádný prvek).&]\r\n"
	"[s0; &]\r\n"
	"[s0;* Příklad: `[1..7`] = `[1,2,3,4,5,6,7`]&]\r\n"
	"[s1; <p1> ? <p2> : <p3>: podmíněný výraz&]\r\n"
	"[s0; Podmíněný výraz lze použít v_situaci, kdy potřebujete rozhodnout \r\n"
	"pro jednu ze dvou variant na základě platnosti logické podmínky. \r\n"
	"Při výpočtu výrazu se nejprve vyhodnotí [/ p1]; pokud je jeho logická \r\n"
	"hodnota pravdivá (je to nenulové číslo nebo neprázdný textový \r\n"
	"řetězec), vyhodnotí se dále výraz [/ p2] a jeho hodnota je výsledkem \r\n"
	"celého výrazu ?:. Pokud podmínka neplatí, vyhodnotí se obdobně \r\n"
	"výraz [/ p3] a výsledkem výrazu je jeho hodnota.&]\r\n"
	"[s0; &]\r\n"
	"[s0;/ [*/ Příklad][/ : ][*/ 5 % 2 == 0 ? \"sudé\" : \"liché\"] = \"liché\"&]\r\n"
	"[s1; <p1>{<m1>, <v1>, <m2>, <v2>, ... }: podmíněný výraz s výběrem&]\r\n"
	"[s0; Pomocí funkce lze vybrat jednu ze zadaných hodnot (výrazů) podle \r\n"
	"hodnoty řídicího výrazu [/ p1]. Při výpočtu se nejprve vyhodnotí \r\n"
	"tento výraz; další postup závisí na počtu parametrů v_složených \r\n"
	"závorkách.&]\r\n"
	"[s0; &]\r\n"
	"[s0;i150;O0;/ [*/ 1 parametr][/ : pokud je v_závorkách jen jeden výraz \r\n"
	"(]m1[/ ), otestuje se, zda je hodnota výrazu ]p1 [/ prázdná (][/ \r\n"
	"{:LINK:dpp`:`/`/AppDoc`/`/`:`:`/`/Calc`$Cis`_nullV\tis`_null\t:}\r\n"
	"][/ ). Pokud prázdná není, ponechá se výraz ]p1[/  beze změny a vrátí \r\n"
	"se jako výsledek celého zápisu. Pokud je hodnota prázdná, vyhodnotí \r\n"
	"se výraz ]m1[/  a výsledkem celého výrazu {} je pak hodnota ]m1.&]\r\n")
	HELP_TEXT(
	"[s0;i150;O0; [* sudý počet parametrů]: pokud je počet parametrů sudý \r\n"
	"(a nenulový), program po vyhodnocení [/ p1] postupně prochází výrazy \r\n"
	"v_závorkách na [/ lichých pozicích] ([/ m1, m2, m3...]). Každý tento \r\n"
	"výraz vyhodnotí a porovná s hodnotou výrazu [/ p1]; pokud se hodnoty \r\n"
	"shodují, program vyhodnotí a vrátí odpovídající výraz na následující \r\n"
	"sudé pozici ([/ v1, v2, v3...]). Pokud ani jedna z hodnot [/ m1, \r\n"
	"m2, m3]... není rovna [/ p1], je výsledkem výrazu přímo původní \r\n"
	"[/ p1] beze změny.&]\r\n"
	"[s0;i150;O0; [* lichý počet parametrů]: pokud je počet parametrů lichý \r\n"
	"(a větší než jeden), program po vyhodnocení obdobně jako v_případě \r\n"
	"sudého počtu parametrů testuje rovnost s_parametry na lichých \r\n"
	"pozicích [/ m1, m2, m3...]. a_v_případě rovnosti vrátí parametr \r\n"
	"na následující nulové pozici. Pokud není nalezena ani v_jednom \r\n"
	"z případů shodná hodnota, program vyhodnotí a_vrátí poslední \r\n"
	"(nepárovou) hodnotu v_závorkách.&]\r\n"
	"[s1; #<výraz>: lambda-výraz&]\r\n"
	"[s0; Lambda výraz se používá v_situacích, kdy je třeba samotný výpočetní \r\n"
	"výraz poslat jako parametr do jiné funkce nebo operátoru (v_opačných \r\n"
	"případech do operátoru nebo funkce přichází jako parametr až \r\n"
	"[/ vypočtená hodnota] tohoto výrazu). Způsob nakládání s_matematickým \r\n"
	"výrazem v_této funkci závisí na charakteru konkrétní funkce. \r\n"
	"Obvykle jde o_to, že v_rámci jiné funkce je potřeba takto předaný \r\n"
	"výpočetní výraz několikrát postupně vyhodnotit (vypočítat), případně \r\n"
	"v_různém kontextu, a_získat tak několik výsledků, které se pak \r\n"
	"dále zpracují.&]\r\n"
	"[s1;*/ [*/ Příklad: ][*/ \r\n"
	"{:LINK:dpp`:`/`/AppDoc`/`/`:`:`/`/Calc`$CsumASC\tsum\t:}\r\n"
	"][*/ (`[1..4`], \"x\", #(x * x))] = 1 * 1 + 2 * 2 + 3 * 3 + 4 * 4 \r\n"
	"= 1+4+9+16 = 30&]\r\n"
	"[s1; <výraz>.<identifikátor>: objektové volání funkce&]\r\n"
	"[s0; Operátor [/ tečka] umožňuje zápis některých výrazů způsobem připomínajícím \r\n"
	"objektové programovací jazyky. Jedná se čistě o nástroj přehlednějšího \r\n"
	"zápisu, vnitřně se všechny takovéto zápisy chápou jako volání \r\n"
	"funkcí. Zápis [/ a.id] má stejný význam jako [/ id(a)], zápis a.id(b, \r\n"
	"c, d) je totéž co id(a, b, c, d).&]\r\n"
	"[s0; &]\r\n"
	"[s0;/ [*/ Příklad: sin(pi)] = pi.sin = 0, [*/ (1/3).nls(-2)] = nls(1/3, \r\n"
	"-2) = 0,33&]\r\n"
	"[s0; ")
HELP_END
