5. Kifejezések és elnevezéseik

Konstansok

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
      +15
Illetve 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)

Fontos, hogy a két pont közé tegyük ezen szavakat.

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'

Kifejezések

A legegyszerûbb nem konstans-kifejezés az alábbi formájú:

      operandus operátor operandus
egy példa rá:
      x + y
A 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)

Elnevezés

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**2
csak a ter értékét változtatja meg, a pi és r értékét nem

Típusok átalakítása

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 + 1
aminé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)


[Tovább] [Tartalomjegyzék]