A Fortran programozási nyelv

A nyelv alapjai

Fortran alapok, formai sajátosságok (a FORTRAN 77 alapján)

A Fortran programszegmens kifejezések sorozata, END kifejezéssel lezárva. A program sorokból áll, aminek bizonyos struktúrát kell követnie ahhoz, hogy abból egy futtatható program álljon elő. Minden programszegmens egy főprogram vagy egy alprogram.

A futtatható (vagy annak szánt) programnak főprogramnak kell lennie. Az alprogramnak három fő típusa van: eljárás, függvény vagy adatszegmens. Az eljárásokat és függvényeket más programok vagy a főprogram hívják meg. Az adatszegmenseket a programbetöltő (loader) kezeli.

A kifejezések állhatnak (ezek száma nulla is lehet) kulcsszavakból, szimbólumokból, konstans litertálokból, kifejezések címkéiből, operátorokból és speciális karakterekből. Az előbb felsorolt elemek a FORTRAN karakterkészletben lévő lexikális elemekből állnak:

  1. az angol ábébcé kis- és nagybetűi (a-z, A-Z)
  2. numerikus karakterek (0-9)
  3. speciális karakterek

Néhány speciális karakter:

Karakterek Használat
szóköz csak karakter konstansokban használható
= egyenlőségvizsgálat
+ - * / matematikai műveletek
( ) zárójelezés
, szeparátor (adatok, kifejezések, argumentumok stb.)
. elhatároló (logikai konstansok, operátorok, rekordmezők)
' karakter konstansok
" karakter konstansok, oktális konstansok
$ namelist input, direktívák
! kommentek
: tömbdeklarációk, részsztringek
% speciális függvények (%REF, %VAL, %LOC stb.)
\ escape karakterek előtt

Formai követelmények és I/O sajátosságok

A beolvasási és írási műveletekre jellemző, hogy formátumot kell megadni minden read vagy write utasításhoz.

A nyelv tervezésének idején a programok számítógépbe vitelére a legelterjedtebb eszköz a lyukkártya volt, ezért a nyelvnek több érdekes formai szabálya van. A programozó a FORTRAN programok kódolásához egy előregyártott formanyomtatványt kapott, amit ki kellett tölteni a forráskóddal, majd ezt a kódlapot leadta lyukasztásra, és egy kódlap után annyi lapos lyukkártyacsomagot kapott, ahány soros lett a kitöltött kódlapja. Az eljárásból következő speciális formai megkötések a kódra:

Ezeknek a megkötéseknek megfelelően egy példa egy beolvasó utasításra:

INTEGER A READ(*, 50)A 50 FORMAT(I3)

A * mondja meg, hogy a billentyűzetről várjuk az adatot, a FORMAT pedig a kért input formátumát adja meg. Az I3 jelentése, hogy 3 karakter hosszú egész. Az egészek hossza maximum 8 lehet, és ebben az előjel is benne van.

Az I/O műveletek általános formája

Beolvasás: READ (eszköz, [formátum címke]) [változók] Kiírás: WRITE (eszköz, [formátum címke]) [változók] Formátummegadás: FORMAT (formátumleíró lista)

Példa egy egész szám belolvasására, majd kiírására:

INTEGER M 1 FORMAT(I3) 2 FORMAT(20HA szám a következő: , I3) READ (*, 1) M WRITE(*, 2) M

További formátumokra példák

Ezek a formátumok nem csak beolvasásnál szükségesek, hanem kiírásnál is. Például:

WRITE(*, 30)A 30 FORMAT(I3)

Írásnál még egy formátum lehet szükséges. Szöveget a következő módon lehet kiírni:

WRITE(*, 12) 12 FORMAT(1x, 'szöveg')

Itt az 1x az elhatároló karakterek számát jelöli. A két kiírás egyébként kombinálható, tehát írhatunk például ilyet:

WRITE(*, 11)A 11 FORMAT(1x, 'szöveg', I3)

Itt A egy korábban definiált egész, amit 3 hosszon akarunk kiírni. Az 1x jelentése, hogy nem akarunk szóközt, a 2x jelentése 1 szóköz, stb.

A formátumoknak meg nem feleltethető olvasások és írások futási időben okoznak hibát!