A legegyszerûbb kifejezési típus a konstans. A 6 adattípusnak megfelelõen 6 féle konstans típus van.
Néhány egész konstans:
1 0 -100 32767 +15Illetve néhány valós:
1.0 -0.25 2.0E6 3.333E-1
Az E-jelölés a tizes szám vmilyen hatványra utal, ami az "E" mögött van, azt a tizes hatványszámaként kell értelmezni. (tehát ez a normált alak jelölése). Példánkban, a 2.0E6 = 2*10^6 , azaz kétmillió, vagy a 3.333E-1=3,333*10^-1, ami 0,3333.
Azoknál a konstansoknál, amelyeknek az értéke túllépi a megengedettet, vagy nagyon nagy pontosságot igényelnek, az ún double precision forma használatos. A jelölésben ilyenkor a "E" helyett "D" betût használunk, de használata megegyezik a valóséval. Példák:
2.0D-1 1D99
Itt a 2.0D-1 egy double precision formájú 1/5, míg az 1D99, 1-es számjegy mögötti 99 nullát jelöl.
A következõ típus a komplex. Ezt egy konstans párral jelöljük (ami lehet integer vagy real), vesszõvel elválasztva a számokat és zárójelbe téve. Szemléltetve:
(2, -3) (1., 9.9E-1)
Az elsõ szám a valós, míg a második a képzetes részt jelöli.
Az ötödik a logikai típus. Ez csak kétféle lehet:
.TRUE. (=igaz) .FALSE. (=hamis)
Az utolsó típus a karakteres (szöveges) konstans. Legtöbbször karakterek halmaza, tömbje, szokták stringnek is nevezni. Ezeket aposztróf jelek közé tesszük.
'ABC' 'Barmi johet ide!' 'Ez egy szep nap.'Ezek a jelölések nagyon érzékenyek. Angol szöveg esetén például az aposztrof a szövegben is felbukkanhat. Ebben az esetben a szövegen belül további aposztrófokat kell tennünk.
'It''s a nice day'
A legegyszerûbb nem konstans-kifejezés az alábbi formájú:
operandus operátor operandusegy példa rá:
x + yA kifejezés eredménye is operandus, tehát többet is tehetünk egy kifejezésbe, például:
x + 2 * y
Ez mindjárt felveti a matematikai elsõbbrendûség kérdését is: a legutóbbi példánkban látott kifejezést a program hogy értelmezi x + (2*y) vagy(x+2)*y ?
A Fortran 77 az alábbi mûveleteket kezeli alapverzióban, kiértékelési sorrend (mûveletek közötti elsõbbség) szerint csoportosítva:
** {exponciális} *,/ {szorzás, osztás} +,- {összeadás, kivonás}
Mindegyik operátort balról jobbfelé értelmezi a program, kivéve az exponenciálist, melyet jobbról balfelé kezeli. Ha más mûveleti sorrendet kivánunk, zárójeleket kell alkalmaznunk. Ezek alapján a fenti kérdésre a válasz: a program az elsõ alakban értelmezi, hiszen a szorzás magasabb rendû mûvelet, mint az összeadás.
A fenti operátorok mind binárisak: tehát létezik az inverz opeáror is, a negatív jel - például elsõbbséget élvez a többihez képest. Tehát a -x+y kifejezest a program úgy értelmezi, ahogy várnánk.
Fokozott figyelmet kell fordítani az osztás operátorra, melynek kicsit más a jelentése egész illetve valós számoknál. Ha a operandusok egészek, akkor egész osztásként értelmezi, egyébként valósnak. Például: 3/2 egyenlõ 1, de 3./2. már 1.5-tel egyenlõ (fontos a tizedespont használata)
Az elnevezésnek a formája:
változó neve = kifejezés
Az interpretáció az alábbi: a jobb oldalon álló kifejezésbõl számoljuk ki a bal oldal változóját. A jobboldali kifejezésben többfajta változó is lehet, de ezeknek az értéke fix. Például,
ter = pi * r**2csak a ter értékét változtatja meg, a pi és r értékét nem
Mikor többfajta adattípus is megjelenik ugyanazon kifejezésben, típus átalakítást kell alkalmazni, akár impliciten, akár expliciten. A Fortran is alkalmaz néhány beépített átalakítást, például
real x x = x + 1aminél az integer egyet real formájú egyre alakítja át, és így adja hozzá az x értékhez. Azonban , fõleg bonyolultabb formuláknál, érdemes explicite kiírnunk minden változónk elé a típus átalakító parancsokat, amik számok esetében az alábbiak lehetnek:
int real dble ichar char
Az elsõ három értelme egyértelmû, az ichar utasítás egy karaktert egész számmá alakít, míg a char pontosan az ellenkezõjét teszi.
Példa: Hogyan szorozzunk össze két valós számot (x és y), double precision alakot használva és az eredményt (w) szintén double precision formában tárolva?
w = dble(x)*dble(y)Fontos, hogy ez mást jelent mint a
w = dble(x*y) kifejezés.
Copyright © 1995-7 by Stanford University. All rights reserved.
Fordították: Seres András Tamás és Szalai Szilvia (ELTE-TTK)