1 / 23

FORTRAN 77

FORTRAN 77. Allgemeines. Nicht mehr als 70 Zeichen pro Zeile Mindestens die ersten 7 Zeichen müssen leer bleiben Komentare mit vorgestelltem C. Allgemeine Deffinition implicit double precision (a-h,o-z) wenig schreibarbeit man kann keine Deffinitionen vergessen

chanel
Download Presentation

FORTRAN 77

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FORTRAN 77

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

  3. 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 Die erste Zeile Zwei Variablen dürfen nie den gleichen Namen haben!

  4. 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 Die Grundrechnungsarten

  5. Ein-, Ausgeben & Die letzte Zeile read*, a, b, c print*, a, b, c stop end muß immer am Ende stehen!

  6. 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

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

  8. 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

  9. Schreiben in ein File • Ergebnisse in ein Textfile schreiben: • open(unit=12, file='ergebnis.txt', status='unknown') • write(12,*) a, a1, a2 • close(12)

  10. mehrere Zeilen lesen bzw. schreiben open(unit=11, file='zahlen.txt', status='old') open(unit=12, file=‚ergebnis.txt', status=‚unknown') read(11,*) b, c read(11,*) b1, c1 read(11,*) b2, c2 Usw... write(12,*) a, a1, a2 write(12,*) aa, aa1, aa2 Usw... close(11) close(12)

  11. Und jetzt das gleiche Bsp... • Diesesmal wollen wir mehrere Zahlen eingeben, mit denen die gleichen bzw. verschiedene Rechenoperationen durchgeführt werden sollen...

  12. 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, 4 read(11,*) b, c a=b+c write(12,*) a 100 continue close(11) close(12) stop end

  13. nur einlesen dimension b(10), c(10) do 100 n=1,7 read(11,*,end=200) b(n), c(n) 100 continue 200 stop end damit lassen sich beliebig viele Zahlen einlesen und z.B. in do – Schleifen verwenden end=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

  14. nocheinmal das gleiche Bsp. • Diesmal wollen wir die Zahlen mit Hilfe einer do – Schleife einlesen bzw. auch rausschreiben...

  15. 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

  16. 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

  17. Kombinationen von if - Abfragen Bedingung: a<b und c>d if(a.lt.b.and.c.gt.d) then.... Bedingung: a<b oder c<d if(a.lt.b.or.c.lt.d) then...

  18. 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 if - else

  19. ein letztes Mal das gleiche Beispiel • Wir wollen jetzt nur die Zahlen > 0 in das ergebnis – file geschrieben haben...

  20. 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

  21. bei grösseren Programmen • kann es sehr sinnvoll sein Unterprogramme zu verwenden: • ein Beispiel aus einem LIE – Integrator Programm:

  22. 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 RETURN END

  23. 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 RETURN END

More Related