FORTRAN 77

 Documents

 43 views
of 23
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
FORTRAN 77 Allgemeines  Nicht mehr als 70 Zeichen pro Zeile  Mindestens die ersten 7 Zeichen müssen leer bleiben  Komentare mit vorgestelltem C Die…
Share
Transcript
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  Spezielle Deffinition  implicit double precision (a-  integer a, b h,o-z)  real c, d  double precision e, f  wenig schreibarbeit  character g, h  man kann keine Deffinitionen vergessen  Variablennamen beliebig wählbar - man kann nicht alle Variablennamen - man muß die Definition verwenden (z.B. mü, nü,...) ändern, wenn man im Programm was ändert Zwei Variablen dürfen nie den gleichen Namen haben! Die Grundrechnungsarten  Addition, Subtraktion,  sonstige Funktionen: Multiplikation, Division:  cos, sin,...  a=b+c  Achtung Fortran rechnet in  a=b–c Radians also:  z.B. sin(45) schreibt man in  a=b*c Fortran:  a=b/c  sin(45*/180)  Logarithmus  Potenzen und Wurzeln  inverse Funktionen  a = b**c   a = sqrt(b) = b  c  a = b**(1/c) = b Informationen im Web: http://www.fortran.com/fortran/F77 _std/rjcnf0001.html Ein-, Ausgeben & Die letzte Zeile read*, a, b, c print*, a, b, c stop end muß immer am Ende stehen! 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 Beispiel  Das Programm soll mit zwei angegebene Zahlen alle Grundrechnungsarten durchführen... 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 Schreiben in ein File  Ergebnisse in ein Textfile schreiben:  open(unit=12, file='ergebnis.txt', status='unknown')  write(12,*) a, a1, a2  close(12) 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) Und jetzt das gleiche Bsp...  Diesesmal wollen wir mehrere Zahlen eingeben, mit denen die gleichen bzw. verschiedene Rechenoperationen durchgeführt werden sollen... 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 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 nocheinmal das gleiche Bsp.  Diesmal wollen wir die Zahlen mit Hilfe einer do – Schleife einlesen bzw. auch rausschreiben... 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 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 Kombinationen von if - Abfragen Bedingung: ad if(a.lt.b.and.c.gt.d) then.... Bedingung: a 0 in das ergebnis – file geschrieben haben... 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 bei grösseren Programmen  kann es sehr sinnvoll sein Unterprogramme zu verwenden:  ein Beispiel aus einem LIE – Integrator Programm: 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 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
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks