A GNU Octave programozási nyelv

Változók

A változóknak az Octave nyelvben nincsen fix típusuk. Így lehetõség van rá, például, hogy egy változóban elõször numerikus értéket tároljunk, majd a program további részében ugyanebben a változónak srting típusú értéket adjunk értékül. A változók használat elõtt kell, hogy értéket kapjanak, különben hiba jelentkezik.

Perzisztens változók

Egy függvényen belül perzisztensként deklarált változó megõrzi a tartalmát a memóriában az egymást követõ hívások között. A különbség a perzisztens és a globális változók között, hogy a perzisztens változók lokálisak hatókör tekintetében az adott függvényre és nem láthatóak máshol. Perzisztens változó deklarálása a persistant kulcsszó segítségével. Például:

persistent a persistent a b persistent c = 2 persistent d = 3 e f = 5

A perzisztens változók viselkedése megegyezik a C-ben ismert static változók viselkedésével. A static szót is felismeri az Octave, és ekvivalens a persistent kulcsszóval. A globális változóktól eltérõ módon, minden inicializálás újra inicializálja a változót. Például az alábbi kód végrehajtása során

persistent pvar = 1 persistent pvar = 2

a pvar perzisztens változó értéke 2.

Lokális-globális probléma

Minden változó, amely elé nem írjuk oda a global kulcsszót lokálisnak minõsül. A globális változókat csak egyszer lehet iniclializálni. Például, a következõ kód végrehajtása után

global gvar = 1 global gvar = 2

a gvar nevû globális változó értéke 1, nem pedig 2.

A global kulcsszóval deklarált azonosítok elérhetõk a hívott függvénytörzsekben is, anélkül, hogy ezeket formális paraméterekként átadnánk az adott függvénynek. Adott a következõ programrészlet:

global x function f() x = 1; endfunction f()

Itt a függvénytörzsön belül is látható az x változó, de az x globális változó értéke a függvény befejezõdése után nem állítódik 1-re. Ahhoz, hogy egy globális változó értékét megváltoztathassuk, a függvénytörzsön belül is globálisnak kell deklarálni:

function f() global x; x = 1; endfunction

Ha a globális változót átadjuk függvényparaméterként, akkor egy másolat jön létre róla, és a függvény nem fogja megváltoztatni a globális értéket. Például:

function f (x) x = 0 endfunction

és a külsõ szinten legyen az x globális változó definiciója:
global x = 13

Ekkor az f(x) kifejezés az x változó függvényen belüli értékét fogja mutatni, azaz a 0-t, de az x értéke a külsõ szinten változatlan marad, mert a függvény az argumentumainak csak egy másolatával dolgozik.

Beépített függvény: isglobal(name)
Visszatérési értéke 1, ha a name globális láthatóságú. Ellenben 0.

Változók státusza

Parancs: clear [-x] minta ...
Törli a mintának megfelelõ neveket a szimbólumtáblából. A minta az alábbi speciális karaktereket tartalmazhatja:


Ha clear argumentumok nélkül lett meghívva, akkor az összes, felhasználó által definiált változó törlésre kerül a szimbólumtáblából. A parancs nem használható függvénytörzsön belül!

Parancs: who opció minta
Parancs: whos opció minta
Kilistázza a jelenleg definiált szimbólumokat, melyek megfelelnek a megadott mintának. Az alábbi opciók használhatók. Lerövidíthetöek egy betûre, de nem kombinálhatóak egymással.

Érvényes minták mint a clear paracs esetében. Ha nem adunk meg mintát, akkor minden a kategóriánka megfelelõ szimbólum ki lesz listázva. Alapbeállítás, hogy egyedül a felhasználó által definiált függvények és a lokális láthatóságú változók kerülnek megjelenítésre. A whos parancs megegyezik a who -long paranccsal.