A Blue programozási nyelv

Alprogramok, modulok

Két típusú rutin van a nyelvben: az eljárás (procedure) és a függvény (function). Mindkettőnek lehet paraméterlistája. A függvény egy vagy több értékkel térhet vissza. Minden paraméterátadás érték szerint történik. (Megjegyzendő, hogy a változók referenciákat tartalmaznak, így a referenciák adódnak át érték szerint, olyan működést eredményezve, mintha magát az objektumot referencia szerint adnánk át.)

A paraméterek közvetlenül nem használhatók értékvisszaadásra. Csak a függvények segítségével lehet értéket visszaadni. Az eljárások meg tudják változtatni egy objektum állapotát referenciák segítségével.


Példa függvényre:
count(l:Boolean)->(val:Integer) is == Visszatér az elemek számával do if l then val := i_count else val := 0 end count

Egy egyszerű eljárás paraméterek, elő- és utófeltétel nélkül:
show is == megjeleníti az elemet a standard outputon do print ("Name: ", name, "\n") print ("Count: ", count, "\n") end show

Egy függvény két paraméterrel és két visszatérő értékkel:
lookup (n: Integer, show: Boolean) -> (nm: String, cnt: String) is == visszaadja a nevet és számot az n. elemhez pre n >= 1 and n <= nr_of_entries do nm := entries[n].name cnt := entries[n].count if show then entries[n].show end if post nr_of_entries = old nr_of_entries end lookup

A rutin fejlécében lévő megjegyzés, az úgynevezett interface comment kötelező része a nyelvnek és az interface-ben megjelenik. Ezzel szemben a -- jellel kezdődő ún. implementációs megjegyzés rejtve marad.

Az elő- és utófeltételek opcionálisak.

A visszatérési változók kezdetben inicializálatlanok, és a függvény futása közben értéket kell kapniuk. Hibát okoz az olyan függvényből való visszatérés, melynek visszatérési változója nem definiált értékű. Fordítási hibát okoz az olyan függvény, amelyben nincs a visszatérési változóra hozzárendelő utasítás. Futási hibát okoz az a függvény, amely tartalmaz ugyan hozzárendelő utasítást a változóra, de az utasításra nem kerül rá a vezérlés.

A rutinok láthatók az egész osztályon belül. Ez azt jelenti, hogy rutin hívás megelőzheti a rutin definícióját, megengedve így kölcsönösen rekurzív rutinokat.

A beépített rutinokat fejléc után írt builtin kulcsszóval különböztetjük meg a többitől. Csak a rendszerprogramozók használják a Blue környezet részeként megjelenő osztályok készítésére. Felhasználói programozók nem tudnak beépített rutinokat készíteni.