fortran 77

Download FORTRAN 77

Post on 06-Feb-2016

34 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

  • FORTRAN 77

  • AllgemeinesNicht mehr als 70 Zeichen pro ZeileMindestens die ersten 7 Zeichen mssen leer bleibenKomentare mit vorgestelltem C

  • Die erste ZeileAllgemeine Deffinitionimplicit double precision (a-h,o-z)

    wenig schreibarbeitman kann keine Deffinitionen vergessen

    man kann nicht alle Variablennamen verwenden (z.B. m, n,...)Spezielle Deffinitioninteger a, breal c, ddouble precision e, fcharacter g, h

    Variablennamen beliebig whlbar

    man mu die Definition ndern, wenn man im Programm was ndertZwei Variablen drfen nie den gleichen Namen haben!

  • Die GrundrechnungsartenAddition, Subtraktion, Multiplikation, Division:a = b + ca = b ca = b * ca = b / c

    Potenzen und Wurzelna = b**ca = 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)Logarithmusinverse Funktionen

    Informationen im Web:

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

  • Ein-, Ausgeben & Die letzte Zeileread*, a, b, cprint*, a, b, c

    stopend

    mu immer am Ende stehen!

  • und schon kanns los gehen!Fortran Compiler

    fr Windows:z.B. Force 8http://myweb.lmu.edu/dmsmith/Math282.html

    fr Linux:g77 o programm O programm.f

  • BeispielDas Programm soll mit zwei angegebene Zahlen alle Grundrechnungsarten durchfhren...

  • Einlesen aus einem FileAus einem Textfile Zahlen einlesen:

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

    Das File zahlen.txt mu zuerst angelegt werdenLeerzeichen trennen die Eintrge

  • Schreiben in ein FileErgebnisse in ein Textfile schreiben:

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

  • mehrere Zeilen lesen bzw. schreibenopen(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)

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

  • Do - Schleifenimplicit 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,*) a100continueclose(11)close(12)

    stopend

  • nur einlesendimension b(10), c(10)

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

    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) mssen 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 - Abfragez.B.if(a.gt.0) write(12,*) a

    bei mehreren Befehlen:if(a.gt.0) thenwrite...b=c+dusw.endif

  • mgliche if Abfragen(a.eq.0) ... ist gleich(a.gt.0) ... grer als(a.lt.0) ... kleiner als(a.ge.0) ... grer oder gleich(a.le.0) ... kleiner oder gleich

  • Kombinationen von if - AbfragenBedingung: adif(a.lt.b.and.c.gt.d) then....

    Bedingung: a

  • if - elsez.B. elseif(a.gt.0) then write(12,*) a else write(12,*) b end ifz.B. else ifif(a.gt.0) then write(12,*) a else if(a.lt.-5) write(12,*) b end if

  • ein letztes Mal das gleiche BeispielWir wollen jetzt nur die Zahlen > 0 in das ergebnis file geschrieben haben...

  • der goto - Befehlnicht gerne gesehen, aber trotzdem recht ntzlich:Anwendung: goto Referenzz.B.: goto 300das Programm springt dann sofort zu der Marke 300

  • bei grsseren Programmenkann 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,PRTread(11,*) xlim READ(11,*) INI READ(11,*) N READ(11,*) NM,NML READ(11,*) LOGEPS READ(11,*) SWMINI READ(11,*) SWSUM,NSTEP

    RETURNEND

  • Unterprogramme Bsp. 2call 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/180RETURNEND

Recommended

View more >