Értékadás, üres utasítás
Értékadás ugyanúgy, mint C-ben, de van lehetőség szimultán értékadásra is. A baloldalon véges számú változónak
kell szerepelnie, a jobboldalon pedig egy olyan kifejezésnek, amelynek a típusa kompatibilis a baloldal változóival.
A jobb oldalon álló kifejezések minden értékét kötelező felhasználni! Azaz ha egy függvény
visszatérési értékét nem használjuk fel, akkor az fordítási hiba.
Tegyük fel, hogy n1 és v1, illetve n2 és v2 azonos típusúak.
n1, n2 = v1, v2;
Szemantikája:
n1 = v1; n2 = v2;
Egy összetettebb példa:
function f() : i32, u32 { return 1, 2u; }
...
i32 x; u32 y;
x, y = f();
Üres utasítást (assembly-ben
nop utasítás) csak egy üres függvény-törzzsel lehet kikényszeríteni,
de programok írásakor erre nincs szükség, mert az elágazásnál és a ciklusoknál minden esetben kötelező kitenni a
{ és a } jeleket.
Főprogram
A főprogram (másnéven a program belépési pontja) a main blokkban helyezkedik el. Ezt a blokkot
minden programnak tartalmaznia kell, és pontonsan egyet.
Ez tulajdonképpen egy függvény, de nincs se paramétere, se visszatérési értéke, és ezért azzal az egyszerűsítéssel
él, hogy a function kulcsszót elhagyja.
Szekvencia
Szekvencia ugyanúgy, mint C-ben.
Elágazás
Az elágazásoknál három kulcsszó használható: if, elif, else. A feltételek kiértékelése felülről lefelé történik,
és ha egy feltétel igaz lesz, akkor végrehajtja a hozzá tartozó blokkot, és elugrik az elágazás utáni első
utasításhoz.
if(felt_1)
{
// utasítások
}
elif(felt_2)
{
// utasítások
}
elif(felt_3)
{
// utasítások
}
else
{
// utasítások
}
A { és a } kötelező, nem hagyhatóak el. Ennek az az oka, hogy ne okozzon problémát a csellengő if.
Ciklus
Négyféle ciklus létezik a nyelvben.
Elöltesztelős, addig hajtja végre a ciklusmagot, amíg a feltétel igaz.
while(felt)
{
// utasítások
}
Hátultesztelős, addig hajtja végre a ciklusmagot, amíg a feltétel igaz, de legalább egyszer lefut a ciklusmag.
do
{
// utasítások
}
while(felt);
Számlálós ciklus, ez egy while ciklussal helyettesíthető. A feltétel és az értékadások opcionálisak. Értelmezés:
assign_1: kezdeti értékadás, felt: ciklusfeltétel (ha nincs, akkor végtelenciklus), assign_2: ciklusmag lefutása
után hajtja végre ezt az értékadást.
for(assign_1;felt;assign_2)
{
// utasítások
}
Iteráló ciklus, ami egy megadott egész intervallumot képes bejárni.
foreach(_ident_ in _from_ .. _to_ [inclusive/exclusive] [reverse])
{
// utasítások
}
Ahol:
- _ident_ egy azonosító, ami a ciklusmagban a megadott intervallum elemeit veszi fel.
A ciklusmagban nem lehet érteket adni ennek a változónak.
- _begin_ az intervallum eleje.
- _end_ az intervallum vége. Ugyanolyan típusúnak kell lennie, mint az intervallum
elejének. Ez a típus lesz majd az _ident_ típusa is. (A ..
helyett használható a to kulcsszó is.)
- Az inclusive/exclusive egy opcionális módosító. A szerepe az, hogy az intervallum
végét is feldolgozza, vagy ne. Az alapértelmezett az inclusive.
- Ha a reverse is szerepel a ciklus leírásában, akkor a megadott intervallumot fordított
irányban járja be. (Vagyis a _begin_ értéke minden esetben kisebbnek kell lennie,
mint a _end_ értéke ahhoz, hogy feldolgozza az intervallomot. Az
exclusive hatása minden esetben az _end_ értékére vonatkozik!)