Functions/cs
From Original War Support Wiki
Contents |
Co to je
Funkce je pojmenovaný blok příkazů.Vytváří se pomocí příkazu 'function' nebo 'export function' aby bylo možné funkci volat ze všech modulů.
function mojeFunkce; begin // Sem přijde kód end;
nebo
function mojeFunkce(); begin // Sem přijde kód end;
Z výše uvedeného přikladu je patrné, že závorky v hlavičce funckce nejsou povinné a je běžnou praxí je vynechávat.
Proměnné ve funkcích
Ve funkcích se dají vytvářet nové proměnné:
function mojeFunkce; var mojePromenna; begin mojePromenna:=256; // Proměnné se ve funkcích používají běžným způsobem // sem přijde kód end;
Proměnné vytvořené uvnitř funkcí zanikají po dokončení běhu funkce a není možné je využívat mimo funkce.Proměnné vytvořené mimo funkce jsou použitelné i uvnitř funkcí.
function mojeFunkce; var mojePromennaZFunkce; begin mojePromennaZFunkce:=256; end; ... mojePromennaZFunkce:=110; // Chyba, proměnné jsou přístupné pouze z funkce ve které byly vytvořeny.
Funkce s parametry
Parametr je hodnota, která se předá funkci. V SAILu se proměnné v parametru předávají odkazem, to znamená že při změně proměnné ve funkci bude změněna i původní proměnná.
var x, y; ... export function prohozeni(parametr1, parametr2); var pomoc; begin pomoc:=parametr1; parametr1:=parametr2; parametr2:=pomoc; end; ... x:=10; y:=20; prohozeni(x, y);
Funkce v příkladu prohodí obsah proměnných. V proměnné 'x' je nyní uložena hodnota 20 a v proměnné 'y' je hodnota 10. Díky příkazu 'export' se dá funkce zavolat ze všech modulů.
Příklad funkce s parametrem
export function Zabij(jednotka); begin SetLives(jednotka, 0); end;
Pak stačí někde v kódu napsat:
Zabij(nejakyVojak);
Jednotka 'nejakyVojak' bude zabita. Na příkladu je vidět, že funkce SetLives přijímá 2 parametry(jednotku a počet životů).
Funkce s návratovou hodnotou
Funkce může mít návratovou hodnotu.Funkce s návratovou hodnotou se dají používat částečně jako proměnné(nelze je měnit, ale lze číst jejich hodnotu). Více prozradí následující příklad.
var cislo; ... function soucet(x, y); begin result:=x+y; // 'result' se nesmí deklarovat, používá se jako již deklarovaná proměnná. end; ... cislo:=soucet(3,4);
V proměnné 'cislo' je teď uložena hodnota 7.
Poznámky
1) Jména funkcí se nesmí shodovat s názvy proměnných
2) Jména funkcí nesmí(stejně jako jména proměnných) začínat číslicí ani matematickými a diakritickými znaménky(+ % $ - . *), ale mohou obsahovat podtržítka.
3) Proměnné vytvořené uvnitř funkcí zanikají po dokončení běhu funkce a není možné je využívat mimo funkce.Proměnné vytvořené mimo funkce jsou použitelné i uvnitř funkcí.