[[oktatas:programozás:fortran|< Fortran]] ====== Fortran ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2011 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Bevezetés ===== Fortran 95 fordító Debian rendszeren: apt-get install gfortran Windowson: * http://gcc.gnu.org/wiki/GFortranBinaries A nyelv nem különbözteti meg a kis- és nagybetűket. A leírásban Fortran95 fordítót és nyelvet írom le. Egy fortran95 forrás kiterjesztése: .f95 ===== Helló Világ ===== main.f95 program main write (*,*) 'Helló Világ' read (*,*) stop end Fordítás: f95 -o main main.c A program és a stop utasítás csak formai, a fordító nem követeli meg, de hozzátartozik a szerkezethez. A write és a read utáni (*,*) karakterek fájl írás/olvasáshoz és formátumozott kivitelhez tartoznak. Az első "*" karakter jelen esetben arra utal, hogy a monitor eszközre szeretnénk írni. A második "*" karakter pedig arra, hogy az alapértelmezett formában írunk a képernyőre, vagyis nincs formázás. ===== Fortran program felépítése ===== program neve deklarációk utasítások/parancsok stop end ===== Megjegyzések ===== A megjegyzéseket egy sorosak lehetnek, és felkiáltó jellel vezetjük be őket: ! megjegyzés egy sora Korábbi Fortan fordítók nem felkiáltó jelet használtak, hanem egy "c" karaktert (comment) ===== Változók használata ===== A változókat nem kötelező deklarálni, de van rá lehetőség. Ha nem deklaráljuk a fordító egész és valós számként is kezelheti, attól függően mi az első karaktere. Ha az első karakter i és n közzé esik az ábécében, akkor egész számként kezeli, egyébként valósként. program elso write (*,*) "Helló Világ!" read (*,*) n write (*,*) n read (*,*) stop end A programban az n változó egészként lesz kezelve. Ha a változó nevét átnevezem például o-ra akkor már valós számként kezeli a fordító. ^ Típus ^ Jelentés ^ | integer | egész | | real | valós | | double precision | pontosabb valós szám | | complex | komplex | pl.: (3.0,-1.5) az első a valós szám a második a képzetes rész | | logical | logikai | | character | karakter | ==== Komplex számok ==== program elso complex szam write (*,*) "Komplex szam: " read (*,*) szam write (*,*) szam read (*,*) stop end Beírunk egy komplex számot a következő formában: (3.0,-1.5) Kimenet: ( 3.0000000 , -1.5000000 ) ===== Szelekció ===== a = 3 if (a < 10) then write (*, *) "Kisebb" end if end Ha csak egy soros if szerkezetünk van, akkor is le kell zárni end if szavakkal. Egy else ág megvalósítása: a = 15 if (a < 10) then write (*, *) "Kisebb" else write (*, *) "Nagyobb" end if end ===== Iteráció ===== ==== Növekményes ciklus ==== do i = 1, 6, 2 write (*, *) i end do Az i a ciklusváltozó. Az egyenlőség jel jobb oldalán sorra: * 1 kezdőérték (ciklus változót kezdőértéke) * 6 maximum (a ciklusváltozó értéke ennél nagyobb nem lehet * 2 növekmény (ha 1, akkor elhagyható) ==== Amíg ciklus ==== i = 1 do while (i < 6) write (*, *) i i = i + 1 end do