Viele Leute nehmen Fortran als eine archaische und "tote" Programmiersprache wahr. Die meisten wissenschaftlichen und technischen Codes sind jedoch in Fortran geschrieben. Daher bleibt die Programmierung in F77 und F90 für die meisten technischen Programmierer eine notwendige Fähigkeit. Darüber hinaus ermöglichen die neuesten Fortran-Standards (2003, 2008, 2015) dem Programmierer, mit minimalem Aufwand hocheffizienten Code zu schreiben und dabei alle modernen Sprachfeatures wie OOP (Objektorientierte Programmierung) zu nutzen. FORTRAN ist ein Akronym für "FORMula TRANslation" und eignet sich am besten für mathematische und numerische Anwendungen anstelle von Grafik- oder Datenbankanwendungen. Die meisten Fortran-Codes verwenden Texteingaben aus einer Datei oder Befehlszeile und nicht aus einem Menü oder einer GUI-Schnittstelle.
Schritte
Teil 1 von 4: Schreiben und Kompilieren eines einfachen Programms
Schritt 1. Schreiben Sie ein "Hello World"-Programm
Dies ist normalerweise das erste Programm, das in einer beliebigen Sprache schreibt, und es gibt nur "Hallo Welt" auf dem Bildschirm aus. Schreiben Sie den folgenden Code in einen beliebigen Texteditor und speichern Sie ihn als helloworld.f. Achten Sie darauf, dass vor jeder Zeile genau 6 Leerzeichen stehen müssen.
Programm helloworld implizit kein Zeichen*13 hello_string hello_string = "Hallo Welt!" schreiben (*, *) hello_string Programm beenden helloworld
Spitze: Die Leerzeichen sind nur in Fortran-Versionen bis FORTRAN 77 erforderlich. Wenn Sie eine neuere Version verwenden, können Sie die Leerzeichen weglassen. Kompilieren Sie Programme von neueren Versionen mit f95, nicht mit f77; Verwenden Sie.f95 als Dateierweiterung anstelle von nur.f.
Schritt 2. Kompilieren Sie das Programm
Geben Sie dazu f77 helloworld.f in die Befehlszeile ein. Wenn dies einen Fehler ausgibt, haben Sie wahrscheinlich noch keinen Fortran-Compiler wie zum Beispiel gfortran installiert.
Schritt 3. Führen Sie Ihr Programm aus
Der Compiler hat eine Datei namens a.out erzeugt. Führen Sie diese Datei aus, indem Sie./a.out eingeben.
Schritt 4. Verstehen Sie, was Sie gerade geschrieben haben
-
programm halloworld
zeigt den Start des Programms "helloworld" an. Ähnlich,
Programm beenden helloworld
- weist auf sein Ende hin.
-
Wenn Sie keinen Variablentyp deklarieren, behandelt Fortran standardmäßig eine Variable mit einem Namen, der mit einem Buchstaben von i bis n beginnt, als ganze Zahl und alle anderen als reelle Zahl. Es wird empfohlen zu verwenden
implizit keine
- wenn Sie dieses Verhalten nicht brauchen.
-
Zeichen*13 hallo_string
- deklariert ein Array von Zeichen, das hello_string genannt wird.
-
hello_string = "Hallo Welt!"
- weist den Wert "Hello, world!" zum deklarierten Array. Anders als in anderen Sprachen wie C kann dies nicht in derselben Zeile wie die Deklaration des Arrays erfolgen.
-
schreibe (*, *) hello_string
- gibt den Wert von hello_string an die Standardausgabe aus. Das erste * bedeutet, in die Standardausgabe zu schreiben, im Gegensatz zu einer Datei. Das zweite * bedeutet, keine spezielle Formatierung zu verwenden.
Schritt 5. Fügen Sie einen Kommentar hinzu
Dies ist in einem so einfachen Programm nicht notwendig, aber es wird nützlich sein, wenn Sie etwas komplexeres schreiben, also sollten Sie wissen, wie man sie hinzufügt. Es gibt zwei Möglichkeiten, einen Kommentar hinzuzufügen.
- Um einen Kommentar hinzuzufügen, der eine ganze Zeile für sich hat, schreiben Sie ein c direkt in eine neue Zeile, ohne die 6 Leerzeichen. Schreiben Sie danach Ihren Kommentar. Zur besseren Lesbarkeit sollten Sie zwischen dem c und Ihrem Kommentar ein Leerzeichen lassen, dies ist jedoch nicht erforderlich. Beachten Sie, dass Sie a verwenden müssen! statt c in Fortran 95 und neuer.
- Um einen Kommentar in derselben Zeile wie Code hinzuzufügen, fügen Sie ein ! wo Ihr Kommentar beginnen soll. Auch hier ist kein Leerzeichen erforderlich, verbessert aber die Lesbarkeit.
Teil 2 von 4: Verwenden von Eingabe- und If-Konstruktionen
Schritt 1. Verstehen Sie verschiedene Datentypen
- INTEGER wird für ganze Zahlen wie 1, 3 oder -3 verwendet.
- REAL kann auch eine Zahl enthalten, die nicht ganz ist, z. B. 2.5.
- COMPLEX wird verwendet, um komplexe Zahlen zu speichern. Die erste Zahl ist der Real- und die zweite der Imaginärteil.
- CHARACTER wird für Zeichen wie Buchstaben oder Satzzeichen verwendet.
- LOGICAL kann entweder.true sein. oder.false.. Dies ist wie der boolesche Typ in anderen Programmiersprachen.
Schritt 2. Holen Sie sich die Eingabe des Benutzers
In dem Programm "Hello world", das Sie zuvor geschrieben haben, wäre es nutzlos, Benutzereingaben zu erhalten. Öffnen Sie also eine neue Datei und nennen Sie sie compnum.f. Wenn Sie damit fertig sind, wird dem Benutzer mitgeteilt, ob die eingegebene Zahl positiv, negativ oder gleich Null ist.
- Geben Sie die Zeilen Programmkompnum und Endprogrammkompnum ein.
- Deklarieren Sie dann eine Variable vom Typ REAL. Stellen Sie sicher, dass Ihre Deklaration zwischen dem Anfang und dem Ende des Programms steht.
- Erklären Sie dem Benutzer, was er tun soll. Schreiben Sie einen Text mit der Schreibfunktion.
- Lesen Sie die Eingabe des Benutzers in die Variable, die Sie mit der Funktion read deklariert haben.
Programmkompnum real r schreiben (*, *) "Geben Sie eine reelle Zahl ein:" lesen (*, *) r Programm beenden
Schritt 3. Verarbeiten Sie die Eingabe des Benutzers mit einer if-Konstruktion
Legen Sie es zwischen die
lesen (*, *) r
und der
Programm beenden
- Der Vergleich erfolgt mit.gt. (größer als),.lt. (kleiner als) und.eq. (gleich) in Fortran.
- Fortran unterstützt if, else if und else
- Eine Fortran if-Konstruktion endet immer mit end if.
if (r.gt. 0) then schreibe (*, *) "Diese Zahl ist positiv." else if (r.lt. 0) dann schreibe (*, *) "Diese Zahl ist negativ." else schreibe (*, *) "Diese Zahl ist 0." ende wenn
Spitze: Sie müssen Code innerhalb von if-Konstruktionen nicht mit mehr Leerzeichen einrücken, aber es verbessert die Lesbarkeit.
Schritt 4. Kompilieren Sie Ihr Programm und führen Sie es aus
Geben Sie einige Zahlen ein, um es zu testen. Wenn Sie einen Buchstaben eingeben, wird ein Fehler ausgegeben, aber das ist in Ordnung, da das Programm nicht überprüft, ob es sich bei der Eingabe um einen Buchstaben, eine Zahl oder etwas anderes handelt.
Teil 3 von 4: Verwenden von Loops und Arrays
Schritt 1. Öffnen Sie eine neue Datei
Da dieses Konzept anders ist, müssen Sie erneut ein neues Programm schreiben. Benennen Sie die Datei addmany.f. Fügen Sie die entsprechenden Programm- und Programmende-Anweisungen sowie eine implizite None ein. Wenn Sie fertig sind, liest dieses Programm 10 Zahlen und druckt ihre Summe.
Schritt 2. Deklarieren Sie ein Array der Länge 10
Hier speichern Sie die Nummern. Da Sie wahrscheinlich eine Summe reeller Zahlen wollen, sollten Sie das Array als reell deklarieren. Sie deklarieren ein solches Array mit
reelle Zahlen (50)
(Zahlen ist der Name des Arrays, kein Ausdruck).
Schritt 3. Deklarieren Sie einige Variablen
Deklarieren Sie numSum als reelle Zahl. Sie werden es später verwenden, um die Summe zu speichern, aber da sum bereits von einem Fortran-Ausdruck verwendet wird, müssen Sie einen Namen wie numSum verwenden. Setzen Sie es auf 0. Deklarieren Sie i als Integer und weisen Sie ihm noch keinen Wert zu. Das wird in der Do-Schleife gemacht.
Schritt 4. Erstellen Sie eine Do-Schleife
Das Äquivalent dazu in anderen Programmiersprachen wäre eine for-Schleife.
- Eine Do-Schleife beginnt immer mit do.
- In derselben Zeile wie das do, durch ein Leerzeichen davon getrennt, befindet sich das Label, zu dem das Programm nach Beendigung gehen wird. Schreiben Sie vorerst einfach eine 1, Sie legen das Label später fest.
-
Geben Sie danach, wiederum nur durch ein Leerzeichen getrennt, ein
ich = 1, 10
. Dadurch wird die Variable i, die Sie vor der Schleife deklariert haben, in Schritten von 1 von 1 auf 10 verschoben. Die Schritte werden in diesem Ausdruck nicht erwähnt, daher verwendet Fortran den Standardwert 1. Sie hätten auch schreiben können
i = 1, 10, 1
-
Fügen Sie etwas Code in die Schleife ein (einrücken Sie zur besseren Lesbarkeit mit Leerzeichen). Für dieses Programm sollten Sie die Variable numSum mit dem i-ten Element der Array-Nummern erhöhen. Dies geschieht mit dem Ausdruck
numSum = numSum + Zahl(i)
- Beenden Sie die Schleife mit einer continue-Anweisung mit einem Label. Geben Sie nur 4 Leerzeichen ein. Geben Sie danach eine 1 ein. Das ist das Label, zu dem Sie die Do-Schleife nach Beendigung angewiesen haben. Geben Sie dann ein Leerzeichen ein und fahren Sie fort. Der Continue-Ausdruck macht nichts, aber er bietet eine gute Stelle, um ein Label zu platzieren, und zeigt auch an, dass die Do-Schleife beendet wurde.
Ihre do-Schleife sollte nun so aussehen:
do 1 i = 1, 10 numSum = numSum + Zahlen(i) 1 weiter
Spitze: In Fortran 95 und höher müssen Sie keine Labels verwenden. Fügen Sie einfach keine in die do-Anweisung ein und beenden Sie die Schleife mit "end do" anstelle von "continue".
Schritt 5. numSum ausgeben
Es wäre auch sinnvoll, einen Kontext anzugeben, zum Beispiel "Die Summe Ihrer Zahlen ist:". Verwenden Sie die Schreibfunktion für beide. Ihr gesamter Code sollte nun wie folgt aussehen:
Programm addmany implizit keine reelle Zahlen(10) real numSum integer i numSum = 0 schreiben (*, *) "Geben Sie 10 Zahlen ein:" lesen (*, *) Zahlen do 1 i = 1, 10 numSum = numSum + numbers(i) 1 weiter schreiben (*, *) "Ihre Summe ist:" schreiben (*, *) numSum Programm beenden addmany
Schritt 6. Kompilieren Sie Ihren Code und führen Sie ihn aus
Vergessen Sie nicht, es zu testen. Du kannst entweder nach jeder eingegebenen Zahl auf ↵ Enter drücken oder viele Zahlen in derselben Zeile eingeben und mit einem Leerzeichen trennen.
Teil 4 von 4: Erweiterte Konzepte verstehen
Schritt 1. Machen Sie sich eine gute Vorstellung davon, was Ihr Programm tun wird
Denken Sie darüber nach, welche Art von Daten als Eingabe benötigt werden, wie Sie die Ausgabe strukturieren und einige Zwischenausgaben einbeziehen, damit Sie den Fortschritt Ihrer Berechnung überwachen können. Dies ist sehr nützlich, wenn Sie wissen, dass Ihre Berechnung über einen längeren Zeitraum ausgeführt wird oder mehrere komplizierte Schritte umfasst.
Schritt 2. Finden Sie eine gute Fortran-Referenz
Fortran hat viel mehr Funktionen, als in diesem Artikel beschrieben, und sie können für das Programm, das Sie schreiben möchten, nützlich sein. Eine Referenz listet alle Funktionen auf, die eine Programmiersprache hat. Dies ist eine für Fortran 77 und dies ist eine für Fortran 90/95.
Schritt 3. Erfahren Sie mehr über Unterprogramme und Funktionen
Schritt 4. Erfahren Sie, wie Sie Dateien lesen und schreiben
Erfahren Sie auch, wie Sie Ihre Eingabe/Ausgabe formatieren.
Schritt 5. Erfahren Sie mehr über die neuen Funktionen von Fortran 90/95 und neuer
Überspringen Sie diesen Schritt, wenn Sie wissen, dass Sie nur Fortran 77-Code schreiben/pflegen.
Denken Sie daran, dass Fortran 90 den Quellcode "Free Form" eingeführt hat, der es ermöglicht, Code ohne Leerzeichen und ohne die Begrenzung von 72 Zeichen zu schreiben
Schritt 6. Lesen Sie Bücher über wissenschaftliche Programmierung oder schlagen Sie sie nach
Das Buch "Numerical Recipes in Fortran" zum Beispiel ist sowohl ein guter Text zu wissenschaftlichen Programmieralgorithmen als auch eine gute Einführung in die Zusammenstellung von Codes. Neuere Ausgaben enthalten Kapitel zur Programmierung in einer gemischtsprachigen Umgebung und zur parallelen Programmierung. Ein weiteres Beispiel ist "Modern Fortran in Practice" von Arjen Markus. Das Buch gibt einen Einblick, wie man Fortran-Programme im Stil des 21. Jahrhunderts nach den neuesten Fortran-Standards schreibt.
Schritt 7. Erfahren Sie, wie Sie ein auf mehrere Dateien verteiltes Programm kompilieren
Nehmen wir an, Ihr Fortran-Programm ist auf die Dateien main.f und morestuff.f verteilt und die resultierende Binärdatei soll allstuff heißen. Dann müssen Sie folgende Befehle in die Befehlszeile schreiben:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Führen Sie dann die Datei aus, indem Sie./allstuff eingeben.
Spitze: Dies funktioniert auf die gleiche Weise mit neueren Versionen von Fortran. Ersetzen Sie einfach.f durch die richtige Erweiterung und f77 durch die richtige Compilerversion.
Schritt 8. Verwenden Sie die Optimierung, die Ihr Compiler bietet
Die meisten Compiler enthalten Optimierungsalgorithmen, die die Effizienz Ihres Codes verbessern. Diese werden normalerweise aktiviert, indem beim Kompilieren ein -O, -O2 oder -O3 Flag eingefügt wird (wiederum abhängig von Ihrer Fortran-Version).
-
Im Allgemeinen ist die niedrigste Stufe -O oder -O2 am besten. Beachten Sie, dass die Verwendung der aggressiveren Optimierungsoption zu Fehlern in komplexen Codes führen und die Dinge sogar verlangsamen kann! Testen Sie Ihren Code.
Tipps
- Beginnen Sie mit kleinen Programmen. Wenn Sie Ihren eigenen Code erstellen, versuchen Sie, den wichtigsten Teil des Problems zu identifizieren - ist es die Dateneingabe oder der Aufruf der Funktionen, die Struktur der Schleife (dies sind einige sehr elementare Beispiele) und beginnen Sie von dort aus. Darauf bauen Sie dann in kleinen Schritten auf.
- Fortran unterscheidet nicht zwischen Groß- und Kleinschreibung. Sie könnten zum Beispiel eine Variable "real Num" deklarieren und in die nächste Zeile "num = 1" schreiben, um ihr einen Wert zuzuweisen. Aber das ist ein schlechter Stil, also vermeide ihn. Noch wichtiger ist, dass Fortran sich auch nicht um Funktionen und Anweisungen kümmert. Es ist durchaus üblich, Funktionen und Anweisungen in GROSSBUCHSTABEN und Variablen in Kleinbuchstaben zu schreiben.
- EMACS ist ein guter kostenloser Texteditor, der anstelle von Notepad verwendet werden kann.
- Möglicherweise finden Sie es zunächst einfacher, eine Online-IDE (integrierte Entwicklungsumgebung) zu verwenden. Eine gute Option ist Coding Ground. Dort finden Sie eine Vielzahl von Programmiersprachen, darunter Fortran-95. Eine andere Option ist Ideone.