[[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