FORTRAN - wi1.uni- Seminar Programmiersprachen FORTRAN 5 2 Historische Entwicklung 2.1 FORTRAN I 2.2 FORTRAN II, III, IV 2.3 FORTRAN 66 2.4 FORTRAN 77 2.5 Fortran 90

Download FORTRAN - wi1.uni-   Seminar Programmiersprachen FORTRAN 5 2 Historische Entwicklung 2.1 FORTRAN I 2.2 FORTRAN II, III, IV 2.3 FORTRAN 66 2.4 FORTRAN 77 2.5 Fortran 90

Post on 06-Mar-2018

231 views

Category:

Documents

14 download

TRANSCRIPT

  • 1

    Seminar Programmiersprachen

    FORTRAN

    Robert Moeck

    Seminar Programmiersprachen

    FORTRAN 2

    Gliederung

    1 Einfhrung

    2 Historische Entwicklung

    3 Ausgewhlte Features von Fortran

    4 Anwendungsgebiete

    5 Quick Sort

    6 Zusammenfassung und Ausblick

  • 2

    Seminar Programmiersprachen

    FORTRAN 3

    1 Einfhrung

    FORmula TRANslation

    Entwicklung in den 1950er Jahren Erster Hochsprachen-Standard

    Viele Standardisierungen

    Numerische Rechenoperationen

    Hauptanwendung in Naturwissenschaften und Ingenieurwesen

    Seminar Programmiersprachen

    FORTRAN 4

    Gliederung

    1 Einfhrung

    2 Historische Entwicklung

    3 Ausgewhlte Features von Fortran

    4 Anwendungsgebiete

    5 Quick Sort

    6 Zusammenfassung und Ausblick

  • 3

    Seminar Programmiersprachen

    FORTRAN 5

    2 Historische Entwicklung

    2.1 FORTRAN I

    2.2 FORTRAN II, III, IV

    2.3 FORTRAN 66

    2.4 FORTRAN 77

    2.5 Fortran 90

    2.6 Fortran 95

    Seminar Programmiersprachen

    FORTRAN 6

    2.1 FORTRAN I

    1957 Entwicklung des

    FORTRAN I-Compilers

    auf einem IBM 704

    IBM-Team unter

    John W. Backus (Foto)

    Schnelle Verbreitung in Wissenschaft und Militr

  • 4

    Seminar Programmiersprachen

    FORTRAN 7

    2.1 FORTRAN I

    Vorteile

    Enorme Effizienzsteigerung der Programmentwicklung

    Geringere Anforderungen an Programmierer

    Portabilitt !

    Seminar Programmiersprachen

    FORTRAN 8

    2.2 FORTRAN II, III, IV

    1958 FORTRAN II Separate Compilation einzelner Module

    1958 FORTRAN III Nicht verffentlicht

    Integration von Assembler-Code in

    Fortran-Code

    Assembler-Code: oft effizienter

    Aber: Verlust der Hochsprachen-Vorteile

    1961 FORTRAN IV Aufarbeitung von FORTRAN II

  • 5

    Seminar Programmiersprachen

    FORTRAN 9

    2.3 FORTRAN 66

    Seit 1962 ASA (American Standards Association) beschftigt sich mit Fortran

    1966 erster Hochsprachen-Standard: FORTRAN 66

    Computer-Hersteller statten neue Rechner mit Fortran-Compilern aus

    Seminar Programmiersprachen

    FORTRAN 10

    2.4 FORTRAN 77

    1977 ISO-Standard: FORTRAN 77

    somit weltweit

    Wichtigste Neuerungen Block-IF-Strukturen

    Pre-Test von DO-Schleifen

    Rckwrts laufende DO-Schleifen

    Datentyp CHARACTER

  • 6

    Seminar Programmiersprachen

    FORTRAN 11

    2.4 FORTRAN 77

    Bis einschl. FORTRAN 77: Spaltengerechte Codierung Lochkarten-Layout

    1 Zeile = 80 Spalten Spalten 1 6: Spezielle Angaben

    Anweisungsmarken Einleitung von Kommentarzeilen Einleitung von Fortsetzungszeilen

    Spalten 7 72: Anweisungsteil Spalten 73 80: Identifikationsfeld (Kennlochungender Karten)

    Seminar Programmiersprachen

    FORTRAN 12

    2.4 FORTRAN 77

    Beispiel

  • 7

    Seminar Programmiersprachen

    FORTRAN 13

    2.5 Fortran 90

    Viele neue, mchtige Features

    Spaltenunabhngige Codierung Kontrollstrukturen CASE und DO WHILE

    Abstrakte Datentypen

    Operator-berladung

    Dynamische Speicherverwaltung

    Modularisierung

    Seminar Programmiersprachen

    FORTRAN 14

    2.5 Fortran 90

    Enthlt alle zentralen Bestandteile einer modernen Programmiersprache

    Vollstndig abwrtskompatibel zu FORTRAN 77 !

  • 8

    Seminar Programmiersprachen

    FORTRAN 15

    2.6 Fortran 95

    Wenige Neuerungen

    Mehr Korrekturen von Fortran 90

    Untersttzung paralleler Programmierung forall

    PURE

    Seminar Programmiersprachen

    FORTRAN 16

    Gliederung

    1 Einfhrung

    2 Historische Entwicklung

    3 Ausgewhlte Features von Fortran

    4 Anwendungsgebiete

    5 Quick Sort

    6 Zusammenfassung und Ausblick

  • 9

    Seminar Programmiersprachen

    FORTRAN 17

    3 Ausgewhlte Features

    3.1 Grundlegende Programmstruktur

    3.2 Typkonzept

    3.3 Selbstdefinierte Ausdrcke

    3.4 Zeiger

    3.5 Felder

    3.6 Ein- und Ausgabe

    Seminar Programmiersprachen

    FORTRAN 18

    3.1 Grundlegende Programmstruktur

    Programmeinheiten sind Hauptprogramm

    Subroutinen (extern intern) Funktionen (extern intern) Module blockdata-Programmeinheiten

    In jeder Programmeinheit mssen Spezifikationsanweisungen vor ausfhrbaren Anweisungen stehen

  • 10

    Seminar Programmiersprachen

    FORTRAN 19

    3.1 Grundlegende Programmstruktur

    Hauptprogramm Startet die Ausfhrung eines Programms

    PROGRAM hallo_welt

    CHARACTER (LEN=6) :: H, W

    H = 'Hallo '

    W = 'Welt !'

    PRINT *, H, W

    END PROGRAM hallo_welt

    Einleitung

    Spezifikations-Anweisungen

    AusfhrbareAnweisungen

    Ende

    Seminar Programmiersprachen

    FORTRAN 20

    3.1 Grundlegende Programmstruktur

    Subroutinen

    SUBROUTINE sub_name[([par][,par]...])] [Spezifikationsteil]

    [Ausfhrungsteil]

    END SUBROUTINE sub_name

    Extern als eigenstndige Programmeinheit

    Intern als Unterprogramm Einbindung mittels CONTAINS

  • 11

    Seminar Programmiersprachen

    FORTRAN 21

    3.1 Grundlegende Programmstruktur

    Beispiel: Interne Subroutine

    PROGRAM hallo_welt

    PUBLIC :: hallo

    CONTAINS

    SUBROUTINE hallo

    PRINT *, 'Hallo Welt!'

    END SUBROUTINE hallo

    CALL hallo

    END PROGRAM hallo_welt

    Seminar Programmiersprachen

    FORTRAN 22

    3.1 Grundlegende Programmstruktur

    Funktionen

    FUNCTION func_name([par][,par]..)

    [Eingabepar.-Deklaration intent(in)][Ausgabepar.-Deklaration]

    [sonstiger Spezifikationsteil] [Ausfhrungsteil]

    END FUNCTION func_name

    Extern als eigenstndige Einheiten Intern in anderen Programmeinheiten (CONTAINS)

  • 12

    Seminar Programmiersprachen

    FORTRAN 23

    3.1 Grundlegende Programmstruktur

    Beispiel: Interne Funktion

    PROGRAM funktioniert

    PUBLIC :: hochdrei

    CONTAINS

    FUNCTION hochdrei(zahl)

    REAL, INTENT(IN) :: zahl

    REAL :: ergebnis

    ergebnis = zahl * zahl * zahl

    END FUNCTION hochdrei

    END PROGRAM funktioniert

    Seminar Programmiersprachen

    FORTRAN 24

    3.1 Grundlegende Programmstruktur

    Module

    MODULE mod_name

    [Spezifikationsteil]

    CONTAINS

    [beliebige Typvereinbarungen,

    Spezifikationen, Unterprogramme ]

    END MODULE mod_name

    Immer extern, nicht ausfhrbar Einbindung in anderen Programmeinheiten mittels USE

  • 13

    Seminar Programmiersprachen

    FORTRAN 25

    3.1 Grundlegende Programmstruktur

    Beispiel: Modul (1)

    MODULE qsort_modul

    PUBLIC :: qsort_sub, zufall

    PRIVATE :: partition

    CONTAINS

    RECURSIVE SUBROUTINE qsort_sub(array)

    [] END SUBROUTINE qsort_sub

    SUBROUTINE partition(array, i)

    [] END SUBROUTINE partition

    SUBROUTINE zufall(ein_array, laenge)

    [] END SUBROUTINE zufall

    END MODULE qsort_modul

    Seminar Programmiersprachen

    FORTRAN 26

    3.1 Grundlegende Programmstruktur

    Beispiel: Modul (2)

    PROGRAM Quick_Sort

    USE qsort_modul ! Einbindung des Moduls

    [] ! Spezifikationsteil

    CALL zufall(ein_array, laenge)

    [] ! Weitere Anweisungen

    CALL qsort_sub(ein_array)

    END PROGRAM Quick_Sort

  • 14

    Seminar Programmiersprachen

    FORTRAN 27

    3.1 Grundlegende Programmstruktur

    blockdata-Programmeinheit

    Nicht ausfhrbar

    Initialisierung von Variablen gemeinsamer Speicherbereiche

    BLOCKDATA [name]

    [] ! Beliebige Deklarationen

    END BLOCKDATA [name]

    Seminar Programmiersprachen

    FORTRAN 28

    3.1 Grundlegende Programmstruktur

    Modularisierung Vorteile Komplexe Probleme lassen sich aufteilen

    Leichter berschaubar

    Compiler knnen kleine Einheiten besser optimieren

    Wiederverwendbarkeit von Code

    Besseres Debuggen

    Es gibt umfangreiche vordefinierte Bibliotheken, die genutzt werden knnen

  • 15

    Seminar Programmiersprachen

    FORTRAN 29

    3.2 Typkonzept

    Fortran verwendet statische Typbindung

    Der Quellcode legt die Typen fest

    Typprfung zur Compilezeit

    Seminar Programmiersprachen

    FORTRAN 30

    3.2 Typkonzept

    streng typisiert bedeutet Typ von Programmgegenstnden ist festgelegt und kann zur Compilezeit bestimmt werden

    Typprfung kann durchgefhrt werden

    Keine Typfehler bleiben unentdeckt

    Fortran ist schwach typisiert Mischung mit Eigenschaften typloser Sprachen

    Typen nicht disjunkt

  • 16

    Seminar Programmiersprachen

    FORTRAN 31

    3.2 Typkonzept

    Implizite Deklaration von Variablen

    Nicht alle Variablen mssen explizit deklariert werden

    Grundstzliche Typkonvention

    Integer bei Anfangsbuchstaben i n

    Real sonst

    Seminar Programmiersprachen

    FORTRAN 32

    3.2 Typkonzept

    Implizite Deklaration von Variablen

    Mit IMPLICIT lassen sich Buchstabenbereiche festlegen, die die grundstzliche Typkonvention ndern / erweitern

    BeispielIMPLICIT TYPE(student) (s), TYPE(dozent) (d)

    ! Alle Variablen mit s sind vom Typ student,

    ! Alle Variablenmit d sind vom Typ dozent.

  • 17

    Seminar Programmiersprachen

    FORTRAN 33

    3.2 Typkonzept

    Implizite Deklaration von Variablen

    Nachteile

    Fehleranflligkeit

    Schlechtere Nachvollziehbarkeit

    Explizite Typdeklaration kann mit der Anweisung IMPLICIT NONE im Spezifikationsteil einer Programmeinheit erzwungen werden

    Seminar Programmiersprachen

    FORTRAN 34

    3.2 Typkonzept

    Selbstdefinierte Datentypen

    Aus existierenden Typen knnen neue, komplexere Datentypen abgeleitet werden

    BeispielTYPE student

    CHARACTER (LEN=20) :: name

    INTEGER :: matr_nr

    TYPE (wohnort) :: adresse

    END TYPE student

  • 18

    Seminar Programmiersprachen

    FORTRAN 35

    3.2 Typkonzept

    Selbstdefinierte Datentypen

    Beispiel (Forts.)TYPE student, DIMENSION(150) :: studenten

    ! Feld mit 150 Studenten

    PRINT *, studenten(42)%matr_nr

    ! Gibt Matr.-Nr. von Student Nr. 42 aus

    Knnen PUBLIC und PRIVATE sein

    Die Reihenfolge der Strukturkomponenten legt i.d.R. keine Speicherfolge fest

    Seminar Programmiersprachen

    FORTRAN 36

    3.3 Selbstdefinierte Ausdrcke

    Bestehen aus Operanden selbstdefinierten und/oder vordefinierten Typs und

    selbstdefinierten und/oder erweiterten vordefinierten Operatoren

    Selbstdefinierte Operatoren mssen in einem Schnittstellenblock beschrieben werden

  • 19

    Seminar Programmiersprachen

    FORTRAN 37

    3.3 Selbstdefinierte Ausdrcke

    Beispiel: zweiwertiger Operator .abst.

    INTERFACE OPERATOR (.abst.)

    FUNCTION abstand (a, e)

    REAL, DIMENSION(2), INTENT(IN) :: a, e

    END FUNCTION abstand

    END INTERFACE

    []

    FUNCTION abstand (a, e)

    REAL, DIMENSION(2), INTENT(IN) :: a, e

    abstand = SQRT(ABS(a(1)e(1))**2 (a(2)e(2))**2))

    END FUNCTION abstand

    Seminar Programmiersprachen

    FORTRAN 38

    3.3 Selbstdefinierte Ausdrcke

    berladung

    Die Funktionalitt eines vor- oder selbstdefiniertenOperators kann gendert bzw. erweitert werden

    Es liegen mind. 2 Operatorfunktionen vor

    Eigenschaften der Operanden bestimmen, welche Operatorfunktion (implizit) ausgefhrt wird

  • 20

    Seminar Programmiersprachen

    FORTRAN 39

    3.4 Zeiger

    Zeiger ist in Fortran kein eigenstndiger Datentyp !

    Attribut POINTER kennzeichnet eine Variable als Zeiger

    Belegt unspezifische Speichereinheit Ziele mssen ein TARGET-Attribut haben oder werden dynamisch erzeugt (ALLOCATE)

    Ist eine Zeiger-Variable einem Ziel zugeordnet, entspricht der Zugriff auf den Zeiger einem Zugriff auf das Ziel

    Seminar Programmiersprachen

    FORTRAN 40

    3.4 Zeiger

    Zeigerzustnde

    undefiniert Nach Initialisierung des Zeigers(z.B. REAL, POINTER :: ein_zeiger)

    zugeordnet Nach Zuordnung zu einem (anderen) Ziel(ALLOCATE oder =>)

    nicht zugeordnet Nach Aufhebung der Zuordnung(NULLIFY oder DEALLOCATE)

  • 21

    Seminar Programmiersprachen

    FORTRAN 41

    3.4 Zeiger

    BeispieleCHARACTER (LEN=75), POINTER :: p1, p2ALLOCATE (p1, p2)

    []

    DEALLOCATE(p1); NULLIFY(p2)

    !------------------------------------------

    REAL, DIMENSION(1000, 1000), TARGET :: A, BREAL, DIMENSION(:, :), POINTER :: Alt, Neu

    Alt => A

    Neu => B

    DO

    [] ! Aus "Alt" berechne "Neu"END DO

    Seminar Programmiersprachen

    FORTRAN 42

    3.4 Zeiger

    Der Zuordnungsstatus darf in Unterprogrammen gendert werden und bleibt beim Rcksprung bestehen

    Nicht mglich Zeiger auf Konstanten

    NIL-Zeiger(ein_zeiger => null() erst in Fortran 95)

    Zeigerfeld, dessen Elemente Zeiger sind

    Adressarithmetik

  • 22

    Seminar Programmiersprachen

    FORTRAN 43

    3.5 Felder

    Regelmige Anordnung von skalarenDatenelementen gleichen Typs

    Max. 7 Dimensionen Zeilen, Spalten, Ebenen

    Jede Dimension mit beliebig vielen Elementen

    Jedes Feldelement wird durch ein Index-Tripel identifiziert

    Seminar Programmiersprachen

    FORTRAN 44

    3.5 Felder

    Indizierung der Feldelemente Index-Tripel: (Zeile, Spalte, Ebene)

  • 23

    Seminar Programmiersprachen

    FORTRAN 45

    3.5 Felder

    Reihenfolge der Feldelemente

    Erst werden die Indizes der 1. Dimension durchlaufen

    Danach wird der Index der 2. Dimension um 1 erhht, und wieder werden die Indizes der 1. Dimension durchlaufen

    Ist die 2. Dimension abgearbeitet, wird der Index der 3. Dimension um 1 erhht

    Meistens erfolgt so auch die Speicherung der Werte

    Seminar Programmiersprachen

    FORTRAN 46

    3.5 Felder

    Feld mit expliziter Gestalt Index-Grenzen genau festgelegt durch Konstanten, aber auch Variablen ( automatisches Feld)

    Feld mit bernommener Gestalt bernimmt Gestalt vom bergebenen Parameterfeld

    Elemente-Anzahl je Dimension dadurch bestimmt

    Feld mit offener Gestalt (ALLOCATABLE) Keine Index-Grenzen festgelegt

    Nicht initialisierbar Speicherplatz-Zuweisung erst bei ALLOCATE

  • 24

    Seminar Programmiersprachen

    FORTRAN 47

    3.5 Felder

    Feld mit expliziter GestaltDIMENSION (55, 14:22) :: exp_gest

    DIMENSION (-5:n, 10, n) :: auto_feld

    Feld mit bernommener GestaltDIMENSION (1950:1989, 2:4) :: ein_feldCALL sub(ein_feld)

    SUBROUTINE sub(par_feld)

    REAL, DIMENSION (0:, :) :: par_feld

    END SUBROUTINE sub

    ! par_feld bernimmt die Gestalt von ein_feld, ! die 1. Dimension hat Gre 40 (von 0 bis 39),

    ! die 2. Dimension hat Gre 3 (von 1 bis 3)

    Seminar Programmiersprachen

    FORTRAN 48

    3.5 Felder

    Feld mit offener Gestalt (ALLOCATABLE)

    REAL, ALLOCATABLE, DIMENSION(:) :: a

    REAL, ALLOCATABLE, DIMENSION(:, :) :: b

    REAL, ALLOCATABLE, DIMENSION(:, :, :) :: c

    ALLOCATE(a(-n:n)) ! Erst jetzt wird

    ALLOCATE(b(n, 0:2*n)) ! Speicherplatz

    ALLOCATE(c(n, n:2*n, n)) ! angefordert

  • 25

    Seminar Programmiersprachen

    FORTRAN 49

    3.5 Felder

    Arten von Feldern / Speicherverwaltung

    Automatisches Feld Wird beim Aufruf eines Unterprogramms erzeugt

    Beim Rcksprung in das aufrufende Programm wird es wieder gelscht und der Speicherplatz freigegeben

    Beispiel fr Verwendung Bentigt wird ein temporres Feld, dessen Gre von anderen Variablen abhngt

    Seminar Programmiersprachen

    FORTRAN 50

    3.5 Felder

    Arten von Feldern / Speicherverwaltung

    Dynamisches Feld Wird im Spezifikationsteil einer Programmeinheit deklariert (ALLOCATABLE), zunchst ohne Index-Grenzen

    Existiert physisch nicht, bis es initialisiert, d.h. Speicher angefordert, wird

    berlebt den Rcksprung, der Zustand ist dann aber undefiniert (Abhilfe: SAVE)

    Explizites Lschen mittels DEALLOCATE

  • 26

    Seminar Programmiersprachen

    FORTRAN 51

    3.5 Felder

    Arten von Feldern / Speicherverwaltung

    Feldzeiger Wird im Spezifikationsteil einer Programmeinheit deklariert (POINTER), zunchst ohne Index-Grenzen

    Existiert physisch nicht, bis es initialisiert, d.h. Speicher angefordert, wird (ALLOCATE)

    Explizites Lschen mittels DEALLOCATE

    Seminar Programmiersprachen

    FORTRAN 52

    3.5 Felder

    Beispiele: Arten von Feldern

    REAL, DIMENSION (1:15, 5, 10) :: a

    ! Feld mit expliziter Gestalt

    REAL, DIMENSION (:, 5:) :: b

    ! Feld mit bernommener Gestalt

    REAL, ALLOCATABLE, DIMENSION (:, :) :: c

    ! Dynamisches Feld

    REAL, POINTER, DIMENSION (:) :: d

    ! Feldzeiger

  • 27

    Seminar Programmiersprachen

    FORTRAN 53

    3.5 Felder

    Vergleich Zeiger Felder

    Zeiger und automatische/dynamische Felder hneln sich und leisten in etwa das gleiche

    Aber Felder sind weniger fehleranfllig (insb. in Bezug auf Speicherverwaltung) Dangling Pointers

    Garbage Collection nicht bei allen Compilern

    liefern bessere Performance mehrere Zeiger knnen auf dasselbe Ziel zeigen

    ( berflssige Arbeit fr den Compiler)

    Seminar Programmiersprachen

    FORTRAN 63

    3.6 Ein- und Ausgabe

    Grundlage des Dateisystems ist der Datensatz

    Arten von Datenstzen Formatgebundene (mit FORMAT-Attribut)

    Formatfreie (interne Darstellung) Dateiendesatz (ENDFILE)

    Datei = Folge zusammenhngender Datenstze Auf externen Medien abgelegt

    Intern als Speicherbereich

  • 28

    Seminar Programmiersprachen

    FORTRAN 64

    3.6 Ein- und Ausgabe

    Sequenzielle Verarbeitung Reihenfolge der Datenstze relevant

    Der n-te Datensatz kann erst nach dem Lesen der (n-1) vorherigen Datenstze gelesen werden

    Direkter Zugriff Reihenfolge-unabhngig

    Adresse eines Datensatzes

    = Produkt aus Datensatzlnge und Datensatznummer

    Datensatznummer wird vom Medium verwaltet

    Seminar Programmiersprachen

    FORTRAN 65

    3.6 Ein- und Ausgabe

    Ein- und Ausgabeanweisungen Datenbertragung

    READ WRITE PRINT

    Dateistatus OPEN CLOSE INQUIRE

    Positionierung (bei sequenziellen Dateien) BACKSPACE REWIND ENDFILE

  • 29

    Seminar Programmiersprachen

    FORTRAN 66

    3.6 Ein- und Ausgabe

    Beispiel

    OPEN (11, FILE=x, ACCESS=DIRECT,

    FORM=FORMATTED, RECL=80)

    ffnet die Datei 'x' formatgebunden mit Direktzugriff und einer Datensatzlnge von 80 Zeichen und verbindet sie mit der E/A-Einheit 11 (z.B. Monitor)

    Weitere sinnvolle Parameter:

    Sprungmarken beim Auftreten von FehlernERR=20

    Springt zu Anweisung 20, die den Fehler abfngt o..

    Seminar Programmiersprachen

    FORTRAN 67

    3.6 Ein- und Ausgabe

    Formatgebundene Datenstze werden beim Einlesen in eine interne Binrdarstellung konvertiert und umgekehrt Vorteile

    Gut lesbar

    Portabilitt

    Nachteile

    Kostet Zeit und Platz

    Ungenauer

  • 30

    Seminar Programmiersprachen

    FORTRAN 68

    3.6 Ein- und Ausgabe

    Formatfreie Datenstze belieben in interner Binrdarstellung des ausfhrenden Rechners Vorteile

    Zeit

    Genauigkeit

    Speicherplatz

    Nachteile

    Portabilitt

    Lesbarkeit

    Fazit: Dienen Daten nur der Computer-verarbeitung, ist formatfreie Art vorzuziehen

    Seminar Programmiersprachen

    FORTRAN 69

    3.6 Ein- und Ausgabe

    FORMAT-Anweisung

    Wird in formatgebundenen E/A-Anweisungen benutzt

    Es lassen sich fr alle Typen die gewnschten Formate konfigurieren

    Formatdeklarationen knnen mit Anweisungsmarken versehen werden

    Wiederverwendbarkeit Formatdeklarationen drfen an jeder beliebigen Stelle im Quellcode stehen

  • 31

    Seminar Programmiersprachen

    FORTRAN 70

    3.6 Ein- und Ausgabe

    Beispiel: FORMAT-Anweisung

    DATA i, j, k, l, me /1, 2, 3, 4, 5/

    WRITE (12, FMT=22) i, j, k, l, me

    WRITE (12, FMT=11)

    11 FORMAT (4('------+'),'------')

    5 READ (*, *, END=90) i, j, k, l, me

    WRITE (12, FMT=22) i, j, k, l, me

    22 FORMAT (5(' ',I3,:,' |'))

    GOTO 5

    90 CONTINUE

    WRITE (12, FMT=11)

    Seminar Programmiersprachen

    FORTRAN 71

    3.6 Ein- und Ausgabe

    erzeugt die Tabelle:

    1 | 2 | 3 | 4 | 5

    ------+------+------+------+------

    22 | 549 | 9 | 46 | 221

    142 | 5 | 66 | 8 | 519

    23 | 31 | 0 | 938 | 66

    ------+------+------+------+------

  • 32

    Seminar Programmiersprachen

    FORTRAN 72

    3.6 Ein- und Ausgabe

    Weitere FORMAT-Spezifikationen A-Format Zeichendaten B-Format Binre Daten D-, E-, F-Format

    Reelle, doppelt genaue, komplexe Zahlen G-Format Daten beliebigen vordefinierten Datentyps H-Format Zeichenfolgen I-Format Ganzzahlige Daten L-Format Logische Daten O-Format Oktale Daten S-, SP-, SS-Format Vorzeichensteuerung T-, X-Format Tabulatoren Z-Format Hexadezimale Daten

    Seminar Programmiersprachen

    FORTRAN 73

    Gliederung

    1 Einfhrung

    2 Historische Entwicklung

    3 Ausgewhlte Features von Fortran

    4 Anwendungsgebiete

    5 Quick Sort

    6 Zusammenfassung und Ausblick

  • 33

    Seminar Programmiersprachen

    FORTRAN 74

    4 Anwendungsgebiete

    4.1 Typische Beispiele

    4.2 Parallele Programmierung

    Seminar Programmiersprachen

    FORTRAN 75

    4 Anwendungsgebiete

    Einsatz von Fortran hauptschlich in analytischen und numerischen Berechnungen in Naturwissenschaften und im Ingenieurwesen

    Vorteile Hohe Ausfhrungsgeschwindigkeit

    Gute Lesbarkeit

    Riesige Menge an bereits implementierten Lsungen

  • 34

    Seminar Programmiersprachen

    FORTRAN 76

    4.1 Typische Beispiele

    Deformationsberechnungen von Automobilteilen

    Strmungssimulation von Flugzeugteilen

    Staudammberechnungen

    Berechnung elektromagnetischer Felder

    umfangreiche Wetterprognosen

    Seminar Programmiersprachen

    FORTRAN 77

    4.2 Parallele Programmierung

    Anstze

    SIMD (Single Instruction Multiple Data)

    eine (einzige) Operation wird auf mehrere Datenbereiche angewendet

    Datenparallelisierung

    MIMD (Multiple Instruction Multiple Data)

    simultan operieren unterschiedliche Funktionen oder Subroutinen auf verschiedenen Datenbereichen

  • 35

    Seminar Programmiersprachen

    FORTRAN 78

    4.2 Parallele Programmierung

    Ist Fortran dafr geeignet ?

    Die hohe Effizienz der Sprache spricht dafr

    Fortran 90 untersttzt in erster Linie SIMD-Features

    Arrays

    Intrinsische Funktionen

    Broadcasts

    Fortran 95 bietet mit forall und PURE mehr Features des MIMD-Modells

    Seminar Programmiersprachen

    FORTRAN 79

    4.2 Parallele Programmierung

    Fortran-Erweiterungen

    High Performance Fortran (HPF) Gezielte Implementierung von MIMD-Features

    OpenMP (Open Multi Processing) Sammlung von Compiler-Direktiven, Bibliotheksroutinen und Umgebungsvariablen

    Parallelisierung durch gemeinsame Speichernutzung Fork-Join-Prinzip

    Problem in parallelen Bereichen auf mehrere CPUs verteilt

    Einzelergebnisse an der nchsten seriellen Stelle wieder zu einem gemeinsamen Ergebnis zusammengefhrt

  • 36

    Seminar Programmiersprachen

    FORTRAN 80

    4.2 Parallele Programmierung

    OpenMP Fork-Join-Prinzip

    Seminar Programmiersprachen

    FORTRAN 81

    Gliederung

    1 Einfhrung

    2 Historische Entwicklung

    3 Ausgewhlte Features von Fortran

    4 Anwendungsgebiete

    5 Quick Sort

    6 Zusammenfassung und Ausblick

  • 37

    Seminar Programmiersprachen

    FORTRAN 82

    5 Quick Sort

    Grundlegende Struktur

    module qsort_modul

    []

    end module qsort_modul

    program Quick_Sort

    []

    end program Quick_Sort

    Seminar Programmiersprachen

    FORTRAN 83

    5 Quick Sort

    Das Modul qsort_modul

    Sichtbare Zufallsgenerator-Subroutine (zufall) Fllt das bergebene Array mit Pseudozufallszahlen

    Interne Sortier-Subroutine (partition) Der eigentliche Sortiervorgang Weiterbewegen der Zeiger Vertauschen der Elemente, falls erforderlich

    Sichtbare QuickSort-Subroutine (qsort_sub) Ruft rekursiv die Sortier-Subroutine auf alle Teilbereiche des bergebenen Arrays auf, solange deren Lnge > 0

  • 38

    Seminar Programmiersprachen

    FORTRAN 84

    5 Quick Sort

    Das Hauptprogramm Quick_Sort

    Einbindung des Moduls mittels USE

    Spezifikationsteil mit allen zu verwendenden Variablen

    Starten des Zufallsgenerators

    Zeitmessung vor Ausfhrung

    Sortieren

    Zeitmessung nach Ausfhrung

    Ausgabe auf dem Bildschirm

    Seminar Programmiersprachen

    FORTRAN 85

    0

    5

    10

    15

    20

    25

    30

    35

    40

    100 1.000 10.000 20.000 50.000 100.000 250.000 500.000 1.000.000 2.000.000 5.000.000

    Array-Gre

    Ausfhrungszeit [Sek]

    Fortran 90Java

    5 Quick Sort

    Performance im Vergleich zu Java

    Intel Celeron II, 433 MHz, 256 MB RAM

  • 39

    Seminar Programmiersprachen

    FORTRAN 86

    5 Quick Sort

    Ergebnis

    Java ist knapp 50% schneller als Fortran 90

    Java-Quellcode ist nur ca. 20 Zeilen lang,

    Fortran-Quellcode dagegen ca. 70 Zeilen

    Seminar Programmiersprachen

    FORTRAN 87

    Gliederung

    1 Einfhrung

    2 Historische Entwicklung

    3 Ausgewhlte Features von Fortran

    4 Anwendungsgebiete

    5 Quick Sort

    6 Zusammenfassung und Ausblick

  • 40

    Seminar Programmiersprachen

    FORTRAN 88

    6 Fazit und Ausblick

    Fortran ist die lteste Hochsprache, steht aber zu unrecht in dem Ruf veraltet zu sein

    Viele gut getestete Compiler

    Umfangreiche, unentbehrliche Bibliotheken

    Abwrtskompatibilitt

    Groer Nutzerkreis

    Erweiterbarkeit in Richtung Objektorientierung und Paralleler Programmierung

    Seminar Programmiersprachen

    Feddich

    Fragen ?

Recommended

View more >