Trellis

Vezérlési szerkezetek

5. Vezérlési szerkezetek
5.1. Szekvencia
Minden utasítást ; karakter zár le.
5.2. Elágazás
  • if
  • : mint más nyelvekben.
    end if
    zárja le.
  • case
  • : nem találtam róla információt.
  • type case
  • : egy változó vagy kifejezés típusa szerinti elágazás
    type_case
    kifejezés
    on
    típus1
    do
    utasítás;
    on
    típus2
    do begin
    utasítások;
    end;
    [ on
    típus3
    do
    ... ; ]
    [ ... ];

    [
    otherwise do
    ... ; ]
    end type case
    A szerkezet alkalmazásakor létrejön egy
    selector_value
    nevű, a kifejezés típusával megegyező típusú lokális változó. Ezzel hivatkozhatunk a kifejezés értékére a szerkezeten belül.
    5.3. Ciklusok és kiugrások
    5.3.1. Számlálásos és iterátoros ciklusok
    A Trellis nyelvben iterátoros for ciklus van, mely ugyanúgy működik, mint a CLU nyelv for ciklusa.
    A for ciklus
    for
    változó:típus
    in
    iterátor(paraméterek)
    do
    ciklustörzs
    end for
    A ciklusváltozó lokális a ciklusra nézve. Az iterátor művelet visszatérési típusa megegyezik a változó típusával.
    Iterátor definiálása
    Iterátort hasonlóan készíthetünk mint függvényt, de
    returns típus
    helyett
    yields típus
    eredmény-specifikációt adunk meg. Az iterátor törzsében a
    yield kifejezés;
    utasításoknál határozzuk meg a ciklusváltozó következő értékét.
    Az iterátor lefut az első
    yield kifejezés;
    utasításig. A kifejezés értékét felveszi a ciklusváltozó, és lefut a ciklusmag. Ezután az iterátor futása a
    yield
    utasítás után folytatódik, a következő
    yield
    utasításig.
    Az iterátor általában maga is egy ciklus.
    A beépített típusokhoz vannak előre definiált iterátorok.
    5.3.2. Elöl- és hátultesztelős ciklusok
    Nincsenek.
    5.3.3. Végtelen ciklus és kiugrások
    Ciklust a
    loop ... end loop
    szerkezettel lehet létrehozni. Ez a ciklusmagot ismétli egy
    exit
    ,
    leave
    ,
    return
    vagy
    signal
    utasításig. Kilépési feltételt az
    exit
    utasítás segítségével lehet definiálni.
    Kiugrás a ciklusból:
    continue:
    A legbelső
    loop
    vagy
    for
    ciklus aktuális lépését megszakítja, és a ciklusmag következő végrehajtását kezdi meg.
    exit
    [
    when
    kifejezés1 ] [
    with
    kifejezés2 ];
    exit
    [
    unless
    kifejezés1 ] [
    with
    kifejezés2 ];
    A legbelső
    loop
    vagy
    for
    ciklust terminálja, és a ciklusmag után folytatja a program végrehajtását. A
    when/unless
    kulcsszó után írhatunk kilépési feltételt (ha kifejezés1 igaz / kivéve ha kifejezés1 igaz), illetve a
    with
    kulcsszó után megadhatjuk a ciklus visszaadott értékét.
    leave:
    Elhagy egy blokkot, amiben éppen benne vagyunk. A blokkot címkével kell megjelölni. A blokk visszaadott értékét is megadhatjuk a
    with
    kulcsszó után.
    címke
    begin
    [ ... ]
    leave
    címke [
    with
    kifejezés ];
    [ ... ]
    end;
    signal
    kivételnév [
    with
    objektum ];
    Befejezi az aktuális művelet futását, és a kivétel kiváltásával tér vissza. A hibát a hívó blokknak kell lekezelnie. Visszaadhatunk egy objektumot is, amely részletesebb információkat közöl a hibáról (lásd még: 8. fejezet: Kivételkezelés).