fortran und basic 10 programmiersprachen in einem semester
TRANSCRIPT
![Page 1: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/1.jpg)
Fortran und BASIC
10 Programmiersprachen in einem Semester
![Page 2: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/2.jpg)
Fortran und Basic Patrick Mächler, David Ammann 2
Zitate Fortran
FORTRAN, 'the infantile disorder', by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use.
Edsger W. Dijkstra
FORTRAN was the language of choice for the same reason that three-legged races are popular.
Ken Thompson (in "Reflections on Trusting Trust")
![Page 3: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/3.jpg)
Fortran und Basic Patrick Mächler, David Ammann 3
Fortran, Hintergründe
FORTRAN bedeutet Formula Translation.
Wurde ab 1954 mit Backus bei IBM entwickelt und
gilt als erste realisierte höhere Programmiersprache.
Der Compiler wurde erst ab 1957 ausgeliefert.
Bisher existieren 8 offizielle Versionen:
FORTRAN I, FORTRAN II, FORTRAN IV, FORTRAN-66,
FORTRAN-77, Fortran90, Fortran95, Fortran2003.
![Page 4: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/4.jpg)
Fortran und Basic Patrick Mächler, David Ammann 4
Programmstruktur
PROGRAM program-name
[IMPLICIT NONE]
[specification part]
[execution part][subprogram part]
END PROGRAM program-name
![Page 5: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/5.jpg)
Fortran und Basic Patrick Mächler, David Ammann 5
Kommentare
"!" kommentiert nachfolgende Zeichen
Beispiele:READ(*,*) Year ! read in the value of Year
! This is a comment line
Leere Zeile wird ebenfalls als Kommentar interpretiert.
![Page 6: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/6.jpg)
Fortran und Basic Patrick Mächler, David Ammann 6
Zeilenfortsetzung
"&" dient zur Zeilenfortsetzung
Beispiel:A = 174.5 * Year &
+ Count / 100
ist dasselbe wie:A = 174.5 * Year + Count / 100
![Page 7: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/7.jpg)
Fortran und Basic Patrick Mächler, David Ammann 7
Konstanten/Datentypen I
• Integer Constants: Folgen von Zahlen mit (optionalem) Vorzeichen: 0, -345, 768
• Real Constants (Decimal Representation): Folgen von Zahlen und ein Dezimalpunkt mit (optionalem) Vorzeichen: 23.45, .123, 123., -.12
• Real Constants (Exponential Representation): Integer oder Real (decimal), gefolgt von "E" oder "e", gefolgt von einem Integer: 12.34E2, -1.2e-3
![Page 8: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/8.jpg)
Fortran und Basic Patrick Mächler, David Ammann 8
Konstanten/Datentypen II
• Complex Constants: Bestehend aus zwei Real Constants: (3.1415, -5.5), (1.4, 7.1e4)
• Logical Constants: True und False: .TRUE., .FALSE. ("." Beachten!)
• Character String: Müssen durch double quotes oder single quotes eingeschlossen werden: 'John', "John" (Bem: "Lori's apple" = 'Lori''s apple'
![Page 9: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/9.jpg)
Fortran und Basic Patrick Mächler, David Ammann 9
Identifiers
• Nicht länger als 31 Zeichen• Erstes Zeichen muss Buchstabe sein• Restliche Zeichen (falls vorhanden) bestehend
aus Buchstaben, Zahlen und dem Unterstrich "_"• Case insensitive (Smith=smith=sMiTh=smitH)
Beispiele (korrekt):MTU, MI, John, Count, I, X, I1025, a1b2C3
Beispiele (inkorrekt):M.T.U., R2-D2, 6feet, _System
![Page 10: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/10.jpg)
Fortran und Basic Patrick Mächler, David Ammann 10
Variablendeklaration I
Allgemein:type-specifier :: list
type-specifier =
INTEGER, REAL, COMPLEX, LOGICAL, CHARACTER
list = kommaseparierte Liste von Variablennamen
Beispiele:INTEGER :: ZIP, Mean, Total
![Page 11: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/11.jpg)
Fortran und Basic Patrick Mächler, David Ammann 11
Variablendeklaration II
Spezialfall CHARACTER:CHARACTER(LEN=i) :: List
Beispiel:CHARACTER(LEN=15) :: Name, Street
Name und Street sind CHARACTER-Variablen der Länge 15.
"LEN=" ist optional: CHARACTER(15) :: Name, StreetCHARACTER :: digit entspricht CHARACTER(1) :: digit
![Page 12: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/12.jpg)
Fortran und Basic Patrick Mächler, David Ammann 12
Variablendeklaration III
Verschiedene Längen mit einem Statement sind möglich:CHARACTER(LEN=10) :: City, Nation*20, BOX, bug*1
City: Länge = 10Nation: Länge = 20
Box: Länge = 10bug: Länge = 1
![Page 13: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/13.jpg)
Fortran und Basic Patrick Mächler, David Ammann 13
PARAMETER Attribut
Einer Konstante einen Wert zuweisen
BeispieleREAL, PARAMETER :: E = 2.71828, PI = 3.141592
INTEGER, PARAMETER :: Total = 10, Count = 5, Sum = Total*Count
Ein Name, der mit Parameter deklariert wurde, ist ein Alias für einen Wert und keine Variable!
![Page 14: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/14.jpg)
Fortran und Basic Patrick Mächler, David Ammann 14
Variablen initialisieren
Keine Standardinitialisation (z.B. mit 0, "", usw)
• Beispiele:REAL :: Offset = 0.1, Length = 10.0
INTEGER, PARAMETER :: Quantity=10, Amount=435INTEGER :: Pay=Quantity*Amount, Received=Period+5INTEGER, PARAMETER :: Period=3
Fehler?
![Page 15: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/15.jpg)
Fortran und Basic Patrick Mächler, David Ammann 15
Variablen Werte zuweisen
variable = expression
Der Wert rechts von "=" wird der Variable links vom "=" zugewiesen
INTEGER :: Total, Amount, Unit
Unit = 5Amount = 100.99Total = Unit * Amount
![Page 16: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/16.jpg)
Fortran und Basic Patrick Mächler, David Ammann 16
Arrays I
Allgemeintype, DIMENSION(extent) :: name-1, ..., name-n
Beispiel:INTEGER, DIMENSION(0:100) :: InputData
INTEGER, DIMENSION(10) :: arr(Achtung: Index startet hier mit 1!)INTEGER :: arr(10)
![Page 17: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/17.jpg)
Fortran und Basic Patrick Mächler, David Ammann 17
Arrays II
Zugriff auf Array-Elemente:array-name ( integer-expression )
Beispiel:InputData(2)
InputData(i*j)
InputData(3:7)
usw.
![Page 18: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/18.jpg)
Fortran und Basic Patrick Mächler, David Ammann 18
Arrays III
Array-Initialisierung:Felder lassen sich gleich bei der Deklaration mit Werten Initialisieren.
Eindimensionale Arrays:INTEGER :: arr(5) = (/1, 2, 4, 7, 16/)
Mehrdimensionale Arrays (Befehl "reshape"):INTEGER :: arr(2,3)=reshape((/1, 1, 3/),(/2, 3/))
![Page 19: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/19.jpg)
Fortran und Basic Patrick Mächler, David Ammann 19
Arrays IV
Mehrdimensionale Arrays:Allgemein:type, DIMENSION(a:b, c:d, ...) :: arr
Beispiel (2D-Array):1 2 3
4 5 6 soll in einem 2D-Feld gespeichert werden.
INTEGER :: arr(2,3) = reshape((/1, 2, 3, 4, 5, 6/),(/2, 3/))
(Analog für n Dimensionen)
![Page 20: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/20.jpg)
Fortran und Basic Patrick Mächler, David Ammann 20
Implied DO I
Methode zur raschen Auflistung von vielen Elementen:(item-1,...., item-n, var = initial, final, step)
Beispiele:(i, i = -1, 2) -1, 0, 1, 2
(i, i*i, i=1, 10, 3) 1, 1, 4, 16, 7, 49, 10, 100
![Page 21: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/21.jpg)
Fortran und Basic Patrick Mächler, David Ammann 21
Implied DO II
Anwendung: Array InputINTEGER, DIMENSION(1:10) :: xINTEGER :: n, i
READ(*,*) nDO i = 1, n
READ(*,*) x(i)END DO
Einfacher:READ(*,*) nREAD(*,*) (x(i), i=1, n)
![Page 22: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/22.jpg)
Fortran und Basic Patrick Mächler, David Ammann 22
Arithmetische Operatoren
links nach rechts.NEQV..EQV.
links nach rechts.OR.
links nach rechts.AND.
rechts nach links.NOT.Logisch
keine/===
>=>
<=<Relational
links nach rechts-+
links nach rechts/*
rechts nach links**Arithmetisc
h
AssoziativitätOperatorTyp
• Priorität von oben nach unten: -3**2 = -9
![Page 23: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/23.jpg)
Fortran und Basic Patrick Mächler, David Ammann 23
Intrinsische Funktionen I
REALREALLOG(x)
REALREALEXP(x)
REALREALATAN(x)
REALREALACOS(x)
REALREALASIN(x)
REALREALTAN(x)
REALREALCOS(x)
REALREALSIN(x)
REALREALSQRT(x)
INTEGER/REALINTEGER/REALABS(x)
Rückgabe TypArgument TypFunktion
![Page 24: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/24.jpg)
Fortran und Basic Patrick Mächler, David Ammann 24
Intrinsische Funktionen II
• Unwandlungsfunktionen:REAL INTEGER: INT(x), NINT(x), FLOOR(x)REAL REAL: FRACTION(x)INTEGER REAL: REAL(x)
• Diverse Funktionen:MAX(x1, x2, …, xn), MIN(x1, x2, …, xn), MOD(x,y)
![Page 25: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/25.jpg)
Fortran und Basic Patrick Mächler, David Ammann 25
Das READ Statement
Werte von Tastatur in Variablen einlesen:READ(*,*) list
list: kommaseparierte Liste von Variablen
![Page 26: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/26.jpg)
Fortran und Basic Patrick Mächler, David Ammann 26
Das READ Statement II
Beispiel:INTEGER :: P, Q, R, SREAD(*,*) P, QREAD(*,*)READ(*,*) R, S
Input:100 200 300400 500 600700 800 900
P=?, Q=?, R=?, S=?Lösung: P=100, Q=200, R=700, S=800
![Page 27: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/27.jpg)
Fortran und Basic Patrick Mächler, David Ammann 27
Das WRITE Statement
Funktioniert wie READ Statement
Allgemein:WRITE(*,*) exp1, exp2, ..., expn
WRITE(*,*) ohne Argument(e) gibt leere Zeile aus.
![Page 28: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/28.jpg)
Fortran und Basic Patrick Mächler, David Ammann 28
Character Operators
Es existiert nur ein Character Operator:
"//" dient zur Verknüpfung von Strings
Beispiele:CHARACTER(LEN=*) :: John*4="John", Lori*6="Lori"CHARACTER(LEN=10) :: Ans1
Ans1 = John // Lori
Ans1 = ?Lösung: Ans1 = 'JohnLori**' (* = Space)
![Page 29: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/29.jpg)
Fortran und Basic Patrick Mächler, David Ammann 29
Substrings
Anfügen von (integer-exp1 : integer-exp2) an eine CHARACTER Variable.
Beispiele:CHARACTER(Len=*) :: LeftHand = "1234567890"
LeftHand(3:5) = "abc" "12abc67890"LeftHand(4:) = "lmnopqr" " 123lmnopqr"
![Page 30: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/30.jpg)
Fortran und Basic Patrick Mächler, David Ammann 30
IF-THEN-ELSE-END IF I
Allgemeine Form:IF (logical-expression) THEN
statements-1ELSE
statements-2END IF
Else und statements-2 optional!
Logical IF: IF (logical-expression) one-statement
![Page 31: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/31.jpg)
Fortran und Basic Patrick Mächler, David Ammann 31
IF-THEN-ELSE-END IF II
• Verschachtelte IF-THEN-ELSE-END-IF Statements sind möglich.
• ELSE IF ebenfalls möglich:IF (logical-expression-1) THEN
statements-1ELSE IF (logical-expression-2) THEN
statements-2ELSE
statements-ELSEEND IF
![Page 32: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/32.jpg)
Fortran und Basic Patrick Mächler, David Ammann 32
SELECT CASE Statement
SELECT CASE (selector)CASE (label-list-1)
statements-1CASE (label-list-2)
statements-2.............CASE DEFAULT
statements-DEFAULTEND SELECT
Wertebereich für label-list-n: (value1 : value2), also zum Beispiel (:-1) für alle negativen Zahlen.
![Page 33: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/33.jpg)
Fortran und Basic Patrick Mächler, David Ammann 33
General DO-Loop
AllgemeinDO
statements
END DO
"EXIT" verlässt Schleife
![Page 34: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/34.jpg)
Fortran und Basic Patrick Mächler, David Ammann 34
Counting Do-Loop
Allgemein:DO var=initial-value, final-value, [step-size]
statementsEND DO
Wenn step-size nicht angegeben, wird 1 genommen.
"CYCLE" beginnt mit nächster Iteration.
![Page 35: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/35.jpg)
Fortran und Basic Patrick Mächler, David Ammann 35
WHERE
Allgemein:WHERE( bedingung ) variable = ausdruck
Beispiel:INTEGER :: arr(5) = (/1,2,3,4,5/)WRITE(*,*) arr! Ausgabe: 1 2 3 4 5
WHERE (arr>=3) arr=99999WRITE(*,*) arr! Ausgabe: 1 2 99999 99999 99999
![Page 36: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/36.jpg)
Fortran und Basic Patrick Mächler, David Ammann 36
FORALL
Wie WHERE für Einsatz bei Arrays gedacht, Bestimmung der Feldelemente aber über Indizes:
Allgemein:INTEGER :: arr(5) = (/1,2,3,4,5/)INTEGER :: i
FORALL(i=2:4)arr(i) = 99999
END WRITE(*,*) arr! Ausgabe: 1 99999 99999 99999 5
![Page 37: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/37.jpg)
Fortran und Basic Patrick Mächler, David Ammann 37
Datenverbund I
Bildung eigener Datentypen aus Fortran-Datenelementen:
Allgemein:TYPE :: typename
[sequence] ! opt. seq. Speicherplatzablage
datentyp :: varname1! ...datentyp :: varnamen
END TYPE typename
![Page 38: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/38.jpg)
Fortran und Basic Patrick Mächler, David Ammann 38
Datenverbund II
Beispiel:TYPE :: PERSON
CHARACTER(25) :: vorname
CHARACTER(25) :: nachnameINTEGER :: alter
END TYPE PERSON
![Page 39: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/39.jpg)
Fortran und Basic Patrick Mächler, David Ammann 39
Unterprogramme
Fortran 95 kennt zwei Typen von Unterprogrammen:
• Funktionen (FUNCTION): Geben einen Wert von bestimmtem Typ zurück.
• Subroutinen (SUBROUTINE): Besitzen im Gegensatz zu Funktionen keinen Datentyp und Rückgabewert.
![Page 40: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/40.jpg)
Fortran und Basic Patrick Mächler, David Ammann 40
Funktionen I
Allgemein:type FUNCTION function-name (arg1, ..., argn)
[IMPLICIT NONE][specification part][execution part][subprogram part]
END FUNCTION function-name
Beinahe identisch mit dem Hauptprogram.
![Page 41: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/41.jpg)
Fortran und Basic Patrick Mächler, David Ammann 41
Funktionen II
Beispiel:INTEGER FUNCTION Sum(a, b, c)
IMPLICIT NONEINTEGER, INTENT(IN) :: a, b, c
Sum = a + b + cEND FUNCTION Sum
INTENT(IN) definiert die Variable als formale Argumente. Sie können innerhalb der Funktion nicht verändert werden.
![Page 42: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/42.jpg)
Fortran und Basic Patrick Mächler, David Ammann 42
Funktionen III
Wohin gehören die Functions?PROGRAM program-name
IMPLICIT NONE[specification part][execution part]
CONTAINS[your functions]
END PROGRAM program-name
![Page 43: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/43.jpg)
Fortran und Basic Patrick Mächler, David Ammann 43
Subroutinen I
Allgemein:SUBROUTINE subName ([formal parameters])
[specification part][execution part][return]
END SUBROUTINE subName
Aufgerufen werden Subroutinen mit:CALL subName
![Page 44: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/44.jpg)
Fortran und Basic Patrick Mächler, David Ammann 44
Subroutinen II
Beispiel:PROGRAM bsp
CALL subEND PROGRAM bsp
SUBROUTINE sub()WRITE(*,*) 'Hallo Welt!'RETURN
END SUBROUTINE sub
Kompilieren mittels:gfortran bsp.f90 sub.f90
Datei "bsp.f90"
Datei "sub.f90"
![Page 45: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/45.jpg)
Fortran und Basic Patrick Mächler, David Ammann 45
Prozeduren als Parameter I
Prozeduren können als Parameter übergeben werden.
Unterprogramme werden dazu im Vereinbarungsteil gekennzeichnet:
• Standard-Funktionen: INTRINSIC namensliste
• Eigene Unterprogramme: EXTERNAL namensliste
![Page 46: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/46.jpg)
Fortran und Basic Patrick Mächler, David Ammann 46
Prozeduren als Parameter II
Beispiel:PROGRAM bsp
REAL, parameter :: PI=3.1415927INTRINSIC sin, cos ! intrinsic functions
CALL sub(sin, PI) ! Ausgabe: 0.000000CALL sub(cos, PI) ! Ausgabe: -1.000000
END PROGRAM bsp
SUBROUTINE sub(funk, x)REAL :: funk, xWRITE(*,*) NINT(funk(x)*1000)/1000.0
END SUBROUTINE
![Page 47: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/47.jpg)
Fortran und Basic Patrick Mächler, David Ammann 47
File I/O I
In Fortran ist alles, was mit READ und WRITE bearbeitbar ist, eine Datei!
Zugriff:• Sequentiell: Lesen ab Beginn der Datei und dann
immer nächsten Datensatz. Schreiben an's Dateiende.
• Direkt: Bearbeiten in beliebiger Reihenfolge durch Angabe der Satznummer.
![Page 48: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/48.jpg)
Fortran und Basic Patrick Mächler, David Ammann 48
File I/O IIAllgemein:
open(liste)
liste (kommasepariert):[unit =] x: Dateinummer (Integer > 10)file = x: externer Dateinameiostat = x: -1 für EOF, >0 bei Fehler, 0 sonstaction = x: 'read', 'write' oder 'readwrite'access = x: 'sequential', 'direct'position = x: Position des Datensatzzeigers
('asis', 'rewind', 'append')
![Page 49: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/49.jpg)
Fortran und Basic Patrick Mächler, David Ammann 49
The legacy of FORTRANThere is a vast body of Fortran in daily use throughout the scientific and engineering communities. It is the primary language for some of the most intensive supercomputing tasks, such as weather/climate modeling, computational chemistry, quantum chromodynamics and simulation of automobile crash dynamics. Indeed, one finds that even today, half a century later, floating-point benchmarks to gauge the performance of new computer processors are still written in Fortran (e.g., the floating-point component of the SPEC CPU2000 benchmarks), an eloquent tribute to the longevity of the language.
en.wikipedia.org
![Page 50: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/50.jpg)
Fortran und Basic Patrick Mächler, David Ammann 50
BASIC Hintergründe
BASIC steht für
Beginner’s All-purpose Symbolic Instruction Code
1964 wurde es am Dartmouth College entwickelt, um den Elektrotechnikstudenten den Einstieg in Algol und Fortran zu erleichtern.
BASIC spielte eine massgeblich Rolle in der Anfangs-zeiten der Firma Microsoft.
BASIC kann wohl als die Sprache mit den meisten Dialekten bezeichnet werden. Viele neue Dialekte erfreuen sich heute grosser Beliebtheit (Profan, VisualBasic, Blitzbasic, Darkbasic, Purebasic).
![Page 51: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/51.jpg)
Fortran und Basic Patrick Mächler, David Ammann 51
BASIC Entwurfsprinzipien
BASIC liegt acht Entwurfsprinzipien zugrunde:• 1. Für Anfänger einfach zu erlernen• 2. universell einsetzbar• 3. Erweiterbarkeit der Sprache für Experten• 4. Interaktivität• 5. Klare Fehlermeldungen• 6. Rasche Antwortzeiten• 7. Hardwareunabhängigkeit• 8. Betriebssystemunabhängigkeit
![Page 52: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/52.jpg)
Fortran und Basic Patrick Mächler, David Ammann 52
Goto I
In Fortan I war Goto neben if-then-else die einzige verfügbare Kontrollstruktur. Mit Fortran90 wurde Goto komplett abgeschafft.
Auch im ursprünglichen BASIC spielte Goto eine wichtige Rolle. Neuere Dialekte verzichten oft auf das Konstrukt.
In einem Brief an die Zeitschrift der ACM, Go To Statement Considered Harmful (die berühmte Phrase stammte von dem damaligen Editor Wirth) sprach sich Dijkstra für eine Abschaffung des Statements aus, da es zu Spaghetti Code führe.
![Page 53: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/53.jpg)
Fortran und Basic Patrick Mächler, David Ammann 53
Goto II
Dies löste eine grössere Kontroverse aus, die Knuth später mit einer relativ realistischen Betrachtung wohl beendete.
Auch in vielen neueren Programmiersprachen lässt sich Goto noch finden. Entweder in ursprünglicher (C#) oder restriktiver Form (Java: return innerhalb einer Methode, break und continue innerhalb einer Schleife).
http://www.acm.org/classics/oct95/
http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
![Page 54: Fortran und BASIC 10 Programmiersprachen in einem Semester](https://reader036.vdocument.in/reader036/viewer/2022062512/55204d7649795902118cb033/html5/thumbnails/54.jpg)
Fortran und Basic Patrick Mächler, David Ammann 54
Für Übungsblatt relevante Vergleiche Fortran-Basic
BASIC FORTRAN
a$ CHARACTER(LEN=i) :: aa# REAL :: a
INTEGER :: aPrint WriteInput ReadDo/Loop Do/LoopFor/Next Do/LoopWhile/Wend Do While/End Do
If/Then/Else/End If- Where- Implied-DoA:/Goto A
Kommentare ;Kommentar !KommentarVariablendefinition
a bzw. a%AusgabeBenutzereingabeKontrollstrukturen
If/Then/Else/Endif
A:/Goto A(vor Fortan 90)