Fortran 90 oktatóanyag >> Kifejezések és értékadás

3. Kifejezések és értékadás

  1. Kifejezések
  2. Értékadás
  3. Beépített numerikus műveletek
  4. Relációt kifejező operátorok
  5. Logikai műveletek
  6. Karakteres műveletek

f) Karakteres műveletek

Az új, illetve bővített belső függvények miatt a karakterek kezelése sokkal egyszerűbbé vált. Ilyen függvények például:

c = ACHAR(1) Az ASCII tábla I. karaktere
i = IACHAR(C) A karakter ASCII táblában elfoglalt helye
i = LEN_TRIM(STRING) Hossz, sorvégi szóköz figyelmen kívül hagyása nélkül
s = TRIM(STRING) Karakterlánc a sorvégi szóköz eltávolításával
s = ADJUSTL(STRING) Beallítás balról: kezdő szóköz eltávolítása
s = ADJUSTR(STRING) Beállítás jobbról: záró szóköz eltávolítása
s = REPEAT(STRING, NCOPIES) Karakterlánc ismételt összefűzése
i = INDEX(STRING, SUBSTRING, BACK) Fordított keresés: részstring elejére ugrik
i = SCAN(STRING, SET, BACK) Keresés: karakterlánc bármely karaktere
i = VERIFY(STRING, SET, BACK) Keresés: karakterlánc minden eleme

Belső függvények alkalmazása

 c = ACHAR(I)  Példa:
 ACHAR (88)               ! eredmény: 'X'

 i = IACHAR(C)
 Példa:
 IACHAR ('X')             ! eredmény: 88
 
 i = LEN_TRIM(STRING) Példa:
LEN_TRIM (' A B ')        ! eredmény:  4
LEN_TRIM ('  ')           ! eredmény:  0
                             
 s = TRIM(STRING)
      – ha nem tartalmaz záró sorközt, a végeredmény megegyezik a bemenő karakterlánccal
      – ha csak üres karaktert tartalmaz, a végeredmény 0 hosszúságú

 Példa:
TRIM (' A B  ')            ! eredmény:  ' A B'
 
 s = ADJUSTL(STRING)
 Példa:
ADJUSTL (' WORD')          ! eredmény: 'WORD '
 
 s = ADJUSTR(STRING)
 Példa: 
ADJUSTR ('WORD ')          ! eredmény:  ' WORD'
 
 s = REPEAT(STRING, NCOPIES)
 Példa:
REPEAT ('H', 2)            ! eredmény: 'HH'
REPEAT ('XYZ', 0)          ! eredmény: 0 hosszúságú
 
 i = INDEX(STRING, SUBSTRING, BACK)
  1. ha 'back' nincs jelen, vagy .FALSE. értékű, akkor a végeredmény a 'STRING'-ben legelőször előforduló 'SUBSTRING' helye (legkisebb integer érték)                                 
  2. ha 'back' .TRUE. értékű, akkor a végeredmény a STRING'-ben legutoljára előforduló 'SUBSTRING' helye (legnagyobb integer érték)
  3. ha a 'STRING' nem tartalmazz a 'SUBSTRING'-et, az eredmény 0
 Példa:  
INDEX ('FORTRAN', 'R')                      ! eredmény: 3
INDEX ('FORTRAN', 'R', BACK = .TRUE.)       ! eredmény: 5
INDEX ('FORTRAN', 'K')                      ! eredmény: 0

 i = SCAN(STRING, SET, BACK)
  1. ha 'back' nincs jelen, vagy .FALSE. értékű, és 'STRING' legalább  egy karakterét tartalmazza 'SET'-nek, akkor a végeredmény a 'STRING'-ben lévő legelső 'SET' karakter helye
  2. ha ' back' .TRUE. értékű,  és 'STRING' legalább  egy karakterét tartalmazza 'SET'-nek, akkor a végeredmény a 'STRING'-ben lévő legutolsó 'SET' karakter helye
  3. ha a 'STRING' nem tartalmazz a 'SET'-et, vagy 'STRING' 0 hosszú, az eredmény 0
 Példa:  
SCAN ('FORTRAN', 'TR')                      ! eredmény: 3
SCAN ('FORTRAN', 'TR', BACK = .TRUE.)       ! eredmény: 5
SCAN ('FORTRAN', 'BCD')                     ! eredmény: 0
 
 i = VERIFY(STRING, SET, BACK)
  1. ha 'back' nincs jelen, vagy .FALSE. értékű, és 'STRING' legalább  egy karakterét nem tartalmazza 'SET'-nek, akkor a végeredmény a 'STRING'-ben előforduló első karakter helye, amely nem része 'SET'-nek
  2. ha ' back' .TRUE. értékű,  és 'STRING' legalább  egy karakterét nem tartalmazza 'SET'-nek, akkor a a végeredmény a 'STRING'-ben előforduló utolsó karakter helye, amely nem része 'SET'-nek
  3. ha a 'STRING' tartalmazza a 'SET' összes karakterét, vagy 'STRING' 0 hosszú, az eredmény 0
 Példa:
VERIFY ('ABBA', 'A')                       ! eredmény:  2
VERIFY ('ABBA', 'A', BACK = .TRUE.)        ! eredmény:  3
VERIFY ('ABBA', 'AB')                      ! eredmény:  0

Egyéb változások

 Példa:
text(1:5) = test(3:7)                      ! Fortran 77-ben nem megengedett

 

 Példa: Különböző hosszúságú (4, 6) karakterláncok összefűzése és kiíratása 10-karakter hosszúságú változóba.
CHARACTER(LEN=4) :: John = 'John', Sam = 'Sam'
CHARACTER(LEN=6) :: Lori = 'Lori', Reagan = 'Reagan'
CHARACTER(LEN=10) :: Ans1, Ans2, Ans3, Ans4

Ans1 = John // Lori                        ! Ans1='JohnLori  '
Ans2 = Sam // Reagan                       ! Ans2= 'Sam Reagan'
Ans3 = Reagan // Sam                       ! Ans3='ReaganSam '
Ans4 = Lori // Sam                         ! Ans4='Lori  Sam '

 

 Példa: részkarakterlánc definiálása, ahol k > n
string(k:n)                                ! eredmény: 0

 

 Példa: integer változó (k) konvertálása a megfelelő karakterré
achar = "0123456789"(k:k)                  ! megjegyzés: hiba ha k < 0 vagy k > 9 


<< Előző | Következő >>

Oldal tetejére | Vissza a főoldalra