FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen...

23
FORTRAN 77

Transcript of FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen...

Page 1: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

FORTRAN 77

Page 2: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Allgemeines

Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen

müssen leer bleiben Komentare mit vorgestelltem C

Page 3: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Die erste Zeile

Allgemeine Deffinition implicit double precision (a-

h,o-z)

wenig schreibarbeit man kann keine

Deffinitionen vergessen

- man kann nicht alle Variablennamen verwenden (z.B. mü, nü,...)

Spezielle Deffinition integer a, b real c, d double precision e, f character g, h

Variablennamen beliebig wählbar

- man muß die Definition ändern, wenn man im Programm was ändert

Zwei Variablen dürfen nie den gleichen Namen haben!

Page 4: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Die Grundrechnungsarten

Addition, Subtraktion, Multiplikation, Division: a = b + c a = b – c a = b * c a = b / c

Potenzen und Wurzeln a = b**c a = sqrt(b) = a = b**(1/c) =

sonstige Funktionen: cos, sin,...

Achtung Fortran rechnet in Radians also:

z.B. sin(45) schreibt man in Fortran:

sin(45*/180) Logarithmus inverse Funktionen

Informationen im Web:

http://www.fortran.com/fortran/F77_std/rjcnf0001.html

bc b

Page 5: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Ein-, Ausgeben & Die letzte Zeile

read*, a, b, c

print*, a, b, c

stop

end

muß immer am Ende stehen!

Page 6: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

und schon kanns los gehen!

Fortran Compiler

für Windows:

z.B. Force 8

http://myweb.lmu.edu/dmsmith/Math282.html

für Linux:

g77 –o programm –O programm.f

Page 7: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Beispiel

Das Programm soll mit zwei angegebene Zahlen alle Grundrechnungsarten durchführen...

Page 8: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Einlesen aus einem File

Aus einem Textfile Zahlen einlesen:

open(unit=11, file='zahlen.txt', status='old') read(11,*) b, c close(11)

Das File zahlen.txt muß zuerst angelegt werden Leerzeichen trennen die Einträge

Page 9: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Schreiben in ein File

Ergebnisse in ein Textfile schreiben:

open(unit=12, file='ergebnis.txt', status='unknown') write(12,*) a, a1, a2 close(12)

Page 10: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

mehrere Zeilen lesen bzw. schreiben

open(unit=11, file='zahlen.txt', status='old')open(unit=12, file=‚ergebnis.txt', status=‚unknown')

read(11,*) b, cread(11,*) b1, c1read(11,*) b2, c2Usw... write(12,*) a, a1, a2write(12,*) aa, aa1, aa2Usw... close(11)close(12)

Page 11: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Und jetzt das gleiche Bsp...

Diesesmal wollen wir mehrere Zahlen eingeben, mit denen die gleichen bzw. verschiedene Rechenoperationen durchgeführt werden sollen...

Page 12: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Do - Schleifen

implicit double precision (a-h,o-z)open(unit=11, file='zahlen.txt', status='old')open(unit=12, file=‘ergebnis.txt', status=‘unknown')do 100 n=1, 4read(11,*) b, ca=b+cwrite(12,*) a

100 continueclose(11)close(12)

stopend

Page 13: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

nur einlesen

dimension b(10), c(10)

do 100 n=1,7 read(11,*,end=200) b(n), c(n)100 continue200 stop

end

damit lassen sich beliebig viele Zahlen einlesen und z.B. in do – Schleifen verwendenend=200 ..... beendet die do – schleife wenn die letzte Zeile eingelesen ist

Die Marken (z.B. 100, 200) müssen gleich am Anfang einer Zeile stehen

Page 14: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

nocheinmal das gleiche Bsp.

Diesmal wollen wir die Zahlen mit Hilfe einer do – Schleife einlesen bzw. auch rausschreiben...

Page 15: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

If - Abfrage

z.B. if(a.gt.0) write(12,*) a

bei mehreren Befehlen: if(a.gt.0) then

write... b=c+d usw.

endif

Page 16: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

mögliche if – Abfragen

(a.eq.0) ... ist gleich (a.gt.0) ... größer als (a.lt.0) ... kleiner als (a.ge.0) ... größer oder gleich (a.le.0) ... kleiner oder gleich

Page 17: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Kombinationen von if - Abfragen

Bedingung: a<b und c>dif(a.lt.b.and.c.gt.d) then....

Bedingung: a<b oder c<dif(a.lt.b.or.c.lt.d) then...

Page 18: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

if - else

z.B. else

if(a.gt.0) then

write(12,*) a

else

write(12,*) b

end if

z.B. else if

if(a.gt.0) then

write(12,*) a

else if(a.lt.-5)

write(12,*) b

end if

Page 19: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

ein letztes Mal das gleiche Beispiel

Wir wollen jetzt nur die Zahlen > 0 in das ergebnis – file geschrieben haben...

Page 20: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

der goto - Befehl

nicht gerne gesehen, aber trotzdem recht nützlich:

Anwendung: goto Referenz z.B.: goto 300

das Programm springt dann sofort zu der Marke 300

Page 21: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

bei grösseren Programmen

kann es sehr sinnvoll sein Unterprogramme zu verwenden:

ein Beispiel aus einem LIE – Integrator Programm:

Page 22: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Unterprogramme – Bsp. 1

CALL PARAM

C....EINLESEN DER PARAMETER

SUBROUTINE PARAM

TINV = 1 / T READ(11,*) STP,PRT

read(11,*) xlim READ(11,*) INI READ(11,*) N READ(11,*) NM,NML READ(11,*) LOGEPS READ(11,*) SWMINI READ(11,*) SWSUM,NSTEP

RETURNEND

Page 23: FORTRAN 77. Allgemeines Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C.

Unterprogramme – Bsp. 2

call TRUAN

C MEAN ANOMALY ---> TRUE ANOMALY

SUBROUTINE TRUAN(EKAR,T)

IMPLICIT REAL(A-H,O-Z)IMPLICIT INTEGER (I-N)

Q=(1.-EKAR)/(1.+EKAR)SQ=SQRT(Q)RSQ=1./SQ

T=T*PI/180

RETURNEND