Az OX programozási nyelv

Típusok, típuskonstrukciók

Típusszerkezet

A változók impicit típusúak, azaz életük során típust képesek változtatni. Egy változó élettartama a deklarációjának helyéhez kötődik, a láthatósága pedig a program azon része, ahonnan elérhető a változó. A két dolog nem mindig esik egybe.

Alap típusok és származtatott típusok

4 alaptípus és 3 származtatott típus létezik:

Felsorolási típus

A felsorolási típus lényegében integer konstansok listája. Alapértelmezésként az első tag 0, és minden következő tag az előzőtől eggyel nagyobb. Közvetlenül is lehet értéket adni a tagoknak.

Példák:

enum { C_FIRST, C_SECOND, C_THIRD }; // 0,1,2 enum { T_INT, T_DBL=2, T_STR, T_MAT=C_THIRD }; // 0,2,3,2 enum { FLAG0,FLAG1, FLAG2=FLAG1*2, FLAG3=FLAG2*2}; //0,1,2,4 enum { T_ERR = 1.0 } ; // hiba

Típuskonstrukciók

Ox-ban nincs lehetőség rekord és unió típus közvetlen létrehozására. Osztályokat kell használni.

Típuskonverziók

Double int-re történő konverziója esetén a törtrész figyelmen kívül marad, ha az eredményt nem lehet reprezentálni, akkor a viselkedés definiálatlan. Ha int-ről konvertálunk double-ra, akkor a legközelebbi reprezentáció kerül felhasználásra.

A string alapeleme a karakter, amit int reprezentál. Ezért stringnek értékül lehet adni int-et és double-t is.

Konstansok

Integer konstansok

Bármely számsorozat integer konstansnak számít.

Egy hexadecimális konstans számok és betűk sorozata: A..F vagy a..f sorozat 0x vagy 0X előtaggal.

Karakter konstansok

A karakter konstansok integer konstansokként interpretálódnak. Formátuma: 'a' vagy '0'.

Karakter konstansok a következõk is:

Double konstansok

Egy double konstans részei: integer rész, tizedes pont, törtrész, egy e, E, d vagy D és opcionálisan előjeles integer kitevő.l.

Mátrix konstansok

Az elemeket < és > jelek fogják közre, egy soron belül a vessző az elválasztójel, a sorokat pontosvessző választja el. A vesszők opcionálisak.

Pl.: <1, 23, 4; 2, 44, 7> vagy <1> vagy <2.3 4.2; 1 3>

Mátrixok feltöltésére vonatkozó egyéb szabályok:



Példa:

< [4]*1,2; 10,11,14-2; 1:4; [3][4]=99,2; 8:[-3]2 >

A definíció a következő mátrixot jelenti:

111120
101112000
123400
0000992
852000


Egy mátrix konstans hiányzó értékeit lehet ponttal is és .NAN jelöléssel is megadni, például:

< .,2,3; 4,.,6 >


A .Inf jelenti a végtelent.
Üres mátrixot a <> jelsorozattal lehet megadni.

String konstansok

String konstans megadásánal a karaktersorozatot idézőjelek veszik körbe, például “példa”. Speciális karakterek is felhasználhatók, de a string hossza nem haladhatja meg az 1024-et.

Tömb konstansok

Tömb konstansnak tekinthető egy vesszővel elválaszott és {} jelek közé foglalt konstans sorozat.

Tömb konstans tartalmazhat tömb konstanst.