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

235 views

Category:

Documents

14 download

Embed Size (px)

TRANSCRIPT

<ul><li><p>1</p><p>Seminar Programmiersprachen</p><p>FORTRAN</p><p>Robert Moeck</p><p>Seminar Programmiersprachen</p><p>FORTRAN 2</p><p>Gliederung</p><p>1 Einfhrung</p><p>2 Historische Entwicklung</p><p>3 Ausgewhlte Features von Fortran</p><p>4 Anwendungsgebiete</p><p>5 Quick Sort</p><p>6 Zusammenfassung und Ausblick</p></li><li><p>2</p><p>Seminar Programmiersprachen</p><p>FORTRAN 3</p><p>1 Einfhrung</p><p> FORmula TRANslation</p><p> Entwicklung in den 1950er Jahren Erster Hochsprachen-Standard</p><p> Viele Standardisierungen</p><p> Numerische Rechenoperationen</p><p> Hauptanwendung in Naturwissenschaften und Ingenieurwesen</p><p>Seminar Programmiersprachen</p><p>FORTRAN 4</p><p>Gliederung</p><p>1 Einfhrung</p><p>2 Historische Entwicklung</p><p>3 Ausgewhlte Features von Fortran</p><p>4 Anwendungsgebiete</p><p>5 Quick Sort</p><p>6 Zusammenfassung und Ausblick</p></li><li><p>3</p><p>Seminar Programmiersprachen</p><p>FORTRAN 5</p><p>2 Historische Entwicklung</p><p>2.1 FORTRAN I</p><p>2.2 FORTRAN II, III, IV</p><p>2.3 FORTRAN 66</p><p>2.4 FORTRAN 77</p><p>2.5 Fortran 90</p><p>2.6 Fortran 95</p><p>Seminar Programmiersprachen</p><p>FORTRAN 6</p><p>2.1 FORTRAN I</p><p> 1957 Entwicklung des</p><p>FORTRAN I-Compilers</p><p>auf einem IBM 704</p><p> IBM-Team unter</p><p>John W. Backus (Foto)</p><p> Schnelle Verbreitung in Wissenschaft und Militr</p></li><li><p>4</p><p>Seminar Programmiersprachen</p><p>FORTRAN 7</p><p>2.1 FORTRAN I</p><p> Vorteile</p><p> Enorme Effizienzsteigerung der Programmentwicklung</p><p> Geringere Anforderungen an Programmierer</p><p> Portabilitt !</p><p>Seminar Programmiersprachen</p><p>FORTRAN 8</p><p>2.2 FORTRAN II, III, IV</p><p> 1958 FORTRAN II Separate Compilation einzelner Module</p><p> 1958 FORTRAN III Nicht verffentlicht</p><p> Integration von Assembler-Code in</p><p>Fortran-Code</p><p> Assembler-Code: oft effizienter</p><p> Aber: Verlust der Hochsprachen-Vorteile</p><p> 1961 FORTRAN IV Aufarbeitung von FORTRAN II</p></li><li><p>5</p><p>Seminar Programmiersprachen</p><p>FORTRAN 9</p><p>2.3 FORTRAN 66</p><p> Seit 1962 ASA (American Standards Association) beschftigt sich mit Fortran</p><p> 1966 erster Hochsprachen-Standard: FORTRAN 66</p><p> Computer-Hersteller statten neue Rechner mit Fortran-Compilern aus</p><p>Seminar Programmiersprachen</p><p>FORTRAN 10</p><p>2.4 FORTRAN 77</p><p> 1977 ISO-Standard: FORTRAN 77</p><p> somit weltweit</p><p> Wichtigste Neuerungen Block-IF-Strukturen</p><p> Pre-Test von DO-Schleifen</p><p> Rckwrts laufende DO-Schleifen</p><p> Datentyp CHARACTER</p></li><li><p>6</p><p>Seminar Programmiersprachen</p><p>FORTRAN 11</p><p>2.4 FORTRAN 77</p><p> Bis einschl. FORTRAN 77: Spaltengerechte Codierung Lochkarten-Layout</p><p> 1 Zeile = 80 Spalten Spalten 1 6: Spezielle Angaben</p><p> Anweisungsmarken Einleitung von Kommentarzeilen Einleitung von Fortsetzungszeilen</p><p> Spalten 7 72: Anweisungsteil Spalten 73 80: Identifikationsfeld (Kennlochungender Karten)</p><p>Seminar Programmiersprachen</p><p>FORTRAN 12</p><p>2.4 FORTRAN 77</p><p> Beispiel</p></li><li><p>7</p><p>Seminar Programmiersprachen</p><p>FORTRAN 13</p><p>2.5 Fortran 90</p><p> Viele neue, mchtige Features</p><p> Spaltenunabhngige Codierung Kontrollstrukturen CASE und DO WHILE</p><p> Abstrakte Datentypen</p><p> Operator-berladung</p><p> Dynamische Speicherverwaltung</p><p> Modularisierung</p><p>Seminar Programmiersprachen</p><p>FORTRAN 14</p><p>2.5 Fortran 90</p><p> Enthlt alle zentralen Bestandteile einer modernen Programmiersprache</p><p> Vollstndig abwrtskompatibel zu FORTRAN 77 !</p></li><li><p>8</p><p>Seminar Programmiersprachen</p><p>FORTRAN 15</p><p>2.6 Fortran 95</p><p> Wenige Neuerungen</p><p> Mehr Korrekturen von Fortran 90</p><p> Untersttzung paralleler Programmierung forall</p><p> PURE</p><p>Seminar Programmiersprachen</p><p>FORTRAN 16</p><p>Gliederung</p><p>1 Einfhrung</p><p>2 Historische Entwicklung</p><p>3 Ausgewhlte Features von Fortran</p><p>4 Anwendungsgebiete</p><p>5 Quick Sort</p><p>6 Zusammenfassung und Ausblick</p></li><li><p>9</p><p>Seminar Programmiersprachen</p><p>FORTRAN 17</p><p>3 Ausgewhlte Features</p><p>3.1 Grundlegende Programmstruktur</p><p>3.2 Typkonzept</p><p>3.3 Selbstdefinierte Ausdrcke</p><p>3.4 Zeiger</p><p>3.5 Felder</p><p>3.6 Ein- und Ausgabe</p><p>Seminar Programmiersprachen</p><p>FORTRAN 18</p><p>3.1 Grundlegende Programmstruktur</p><p> Programmeinheiten sind Hauptprogramm</p><p> Subroutinen (extern intern) Funktionen (extern intern) Module blockdata-Programmeinheiten</p><p> In jeder Programmeinheit mssen Spezifikationsanweisungen vor ausfhrbaren Anweisungen stehen</p></li><li><p>10</p><p>Seminar Programmiersprachen</p><p>FORTRAN 19</p><p>3.1 Grundlegende Programmstruktur</p><p> Hauptprogramm Startet die Ausfhrung eines Programms</p><p>PROGRAM hallo_welt</p><p>CHARACTER (LEN=6) :: H, W</p><p>H = 'Hallo '</p><p>W = 'Welt !'</p><p>PRINT *, H, W</p><p>END PROGRAM hallo_welt</p><p>Einleitung</p><p>Spezifikations-Anweisungen</p><p>AusfhrbareAnweisungen</p><p>Ende</p><p>Seminar Programmiersprachen</p><p>FORTRAN 20</p><p>3.1 Grundlegende Programmstruktur</p><p> Subroutinen</p><p>SUBROUTINE sub_name[([par][,par]...])] [Spezifikationsteil] </p><p>[Ausfhrungsteil]</p><p>END SUBROUTINE sub_name</p><p> Extern als eigenstndige Programmeinheit</p><p> Intern als Unterprogramm Einbindung mittels CONTAINS</p></li><li><p>11</p><p>Seminar Programmiersprachen</p><p>FORTRAN 21</p><p>3.1 Grundlegende Programmstruktur</p><p> Beispiel: Interne Subroutine</p><p>PROGRAM hallo_welt</p><p>PUBLIC :: hallo</p><p>CONTAINS</p><p>SUBROUTINE hallo</p><p>PRINT *, 'Hallo Welt!'</p><p>END SUBROUTINE hallo</p><p>CALL hallo</p><p>END PROGRAM hallo_welt</p><p>Seminar Programmiersprachen</p><p>FORTRAN 22</p><p>3.1 Grundlegende Programmstruktur</p><p> Funktionen</p><p>FUNCTION func_name([par][,par]..)</p><p>[Eingabepar.-Deklaration intent(in)][Ausgabepar.-Deklaration]</p><p>[sonstiger Spezifikationsteil] [Ausfhrungsteil] </p><p>END FUNCTION func_name</p><p> Extern als eigenstndige Einheiten Intern in anderen Programmeinheiten (CONTAINS)</p></li><li><p>12</p><p>Seminar Programmiersprachen</p><p>FORTRAN 23</p><p>3.1 Grundlegende Programmstruktur</p><p> Beispiel: Interne Funktion</p><p>PROGRAM funktioniert</p><p>PUBLIC :: hochdrei</p><p>CONTAINS</p><p>FUNCTION hochdrei(zahl)</p><p>REAL, INTENT(IN) :: zahl</p><p>REAL :: ergebnis</p><p>ergebnis = zahl * zahl * zahl</p><p>END FUNCTION hochdrei</p><p>END PROGRAM funktioniert</p><p>Seminar Programmiersprachen</p><p>FORTRAN 24</p><p>3.1 Grundlegende Programmstruktur</p><p> Module</p><p>MODULE mod_name</p><p>[Spezifikationsteil]</p><p>CONTAINS</p><p>[beliebige Typvereinbarungen,</p><p>Spezifikationen, Unterprogramme ]</p><p>END MODULE mod_name</p><p> Immer extern, nicht ausfhrbar Einbindung in anderen Programmeinheiten mittels USE</p></li><li><p>13</p><p>Seminar Programmiersprachen</p><p>FORTRAN 25</p><p>3.1 Grundlegende Programmstruktur</p><p> Beispiel: Modul (1)</p><p>MODULE qsort_modul</p><p>PUBLIC :: qsort_sub, zufall</p><p>PRIVATE :: partition</p><p>CONTAINS</p><p>RECURSIVE SUBROUTINE qsort_sub(array)</p><p>[] END SUBROUTINE qsort_sub</p><p>SUBROUTINE partition(array, i)</p><p>[] END SUBROUTINE partition</p><p>SUBROUTINE zufall(ein_array, laenge)</p><p>[] END SUBROUTINE zufall</p><p>END MODULE qsort_modul</p><p>Seminar Programmiersprachen</p><p>FORTRAN 26</p><p>3.1 Grundlegende Programmstruktur</p><p> Beispiel: Modul (2)</p><p>PROGRAM Quick_Sort</p><p>USE qsort_modul ! Einbindung des Moduls</p><p>[] ! Spezifikationsteil</p><p>CALL zufall(ein_array, laenge)</p><p>[] ! Weitere Anweisungen</p><p>CALL qsort_sub(ein_array)</p><p>END PROGRAM Quick_Sort</p></li><li><p>14</p><p>Seminar Programmiersprachen</p><p>FORTRAN 27</p><p>3.1 Grundlegende Programmstruktur</p><p> blockdata-Programmeinheit</p><p> Nicht ausfhrbar</p><p> Initialisierung von Variablen gemeinsamer Speicherbereiche</p><p>BLOCKDATA [name]</p><p>[] ! Beliebige Deklarationen</p><p>END BLOCKDATA [name]</p><p>Seminar Programmiersprachen</p><p>FORTRAN 28</p><p>3.1 Grundlegende Programmstruktur</p><p> Modularisierung Vorteile Komplexe Probleme lassen sich aufteilen</p><p> Leichter berschaubar</p><p> Compiler knnen kleine Einheiten besser optimieren</p><p> Wiederverwendbarkeit von Code</p><p> Besseres Debuggen</p><p> Es gibt umfangreiche vordefinierte Bibliotheken, die genutzt werden knnen</p></li><li><p>15</p><p>Seminar Programmiersprachen</p><p>FORTRAN 29</p><p>3.2 Typkonzept</p><p> Fortran verwendet statische Typbindung</p><p> Der Quellcode legt die Typen fest</p><p> Typprfung zur Compilezeit</p><p>Seminar Programmiersprachen</p><p>FORTRAN 30</p><p>3.2 Typkonzept</p><p> streng typisiert bedeutet Typ von Programmgegenstnden ist festgelegt und kann zur Compilezeit bestimmt werden</p><p> Typprfung kann durchgefhrt werden</p><p> Keine Typfehler bleiben unentdeckt</p><p> Fortran ist schwach typisiert Mischung mit Eigenschaften typloser Sprachen</p><p> Typen nicht disjunkt</p></li><li><p>16</p><p>Seminar Programmiersprachen</p><p>FORTRAN 31</p><p>3.2 Typkonzept</p><p> Implizite Deklaration von Variablen</p><p> Nicht alle Variablen mssen explizit deklariert werden</p><p> Grundstzliche Typkonvention</p><p> Integer bei Anfangsbuchstaben i n</p><p> Real sonst</p><p>Seminar Programmiersprachen</p><p>FORTRAN 32</p><p>3.2 Typkonzept</p><p> Implizite Deklaration von Variablen</p><p> Mit IMPLICIT lassen sich Buchstabenbereiche festlegen, die die grundstzliche Typkonvention ndern / erweitern</p><p> BeispielIMPLICIT TYPE(student) (s), TYPE(dozent) (d)</p><p>! Alle Variablen mit s sind vom Typ student,</p><p>! Alle Variablenmit d sind vom Typ dozent.</p></li><li><p>17</p><p>Seminar Programmiersprachen</p><p>FORTRAN 33</p><p>3.2 Typkonzept</p><p> Implizite Deklaration von Variablen</p><p> Nachteile</p><p> Fehleranflligkeit</p><p> Schlechtere Nachvollziehbarkeit</p><p> Explizite Typdeklaration kann mit der Anweisung IMPLICIT NONE im Spezifikationsteil einer Programmeinheit erzwungen werden</p><p>Seminar Programmiersprachen</p><p>FORTRAN 34</p><p>3.2 Typkonzept</p><p> Selbstdefinierte Datentypen</p><p> Aus existierenden Typen knnen neue, komplexere Datentypen abgeleitet werden</p><p> BeispielTYPE student</p><p>CHARACTER (LEN=20) :: name</p><p>INTEGER :: matr_nr</p><p>TYPE (wohnort) :: adresse</p><p>END TYPE student</p></li><li><p>18</p><p>Seminar Programmiersprachen</p><p>FORTRAN 35</p><p>3.2 Typkonzept</p><p> Selbstdefinierte Datentypen</p><p> Beispiel (Forts.)TYPE student, DIMENSION(150) :: studenten</p><p>! Feld mit 150 Studenten</p><p>PRINT *, studenten(42)%matr_nr</p><p>! Gibt Matr.-Nr. von Student Nr. 42 aus</p><p> Knnen PUBLIC und PRIVATE sein</p><p> Die Reihenfolge der Strukturkomponenten legt i.d.R. keine Speicherfolge fest</p><p>Seminar Programmiersprachen</p><p>FORTRAN 36</p><p>3.3 Selbstdefinierte Ausdrcke</p><p> Bestehen aus Operanden selbstdefinierten und/oder vordefinierten Typs und</p><p> selbstdefinierten und/oder erweiterten vordefinierten Operatoren</p><p> Selbstdefinierte Operatoren mssen in einem Schnittstellenblock beschrieben werden</p></li><li><p>19</p><p>Seminar Programmiersprachen</p><p>FORTRAN 37</p><p>3.3 Selbstdefinierte Ausdrcke</p><p> Beispiel: zweiwertiger Operator .abst.</p><p>INTERFACE OPERATOR (.abst.)</p><p>FUNCTION abstand (a, e)</p><p>REAL, DIMENSION(2), INTENT(IN) :: a, e</p><p>END FUNCTION abstand</p><p>END INTERFACE</p><p>[]</p><p>FUNCTION abstand (a, e)</p><p>REAL, DIMENSION(2), INTENT(IN) :: a, e</p><p>abstand = SQRT(ABS(a(1)e(1))**2 (a(2)e(2))**2))</p><p>END FUNCTION abstand</p><p>Seminar Programmiersprachen</p><p>FORTRAN 38</p><p>3.3 Selbstdefinierte Ausdrcke</p><p> berladung</p><p> Die Funktionalitt eines vor- oder selbstdefiniertenOperators kann gendert bzw. erweitert werden</p><p> Es liegen mind. 2 Operatorfunktionen vor</p><p> Eigenschaften der Operanden bestimmen, welche Operatorfunktion (implizit) ausgefhrt wird</p></li><li><p>20</p><p>Seminar Programmiersprachen</p><p>FORTRAN 39</p><p>3.4 Zeiger</p><p> Zeiger ist in Fortran kein eigenstndiger Datentyp !</p><p> Attribut POINTER kennzeichnet eine Variable als Zeiger</p><p> Belegt unspezifische Speichereinheit Ziele mssen ein TARGET-Attribut haben oder werden dynamisch erzeugt (ALLOCATE)</p><p> Ist eine Zeiger-Variable einem Ziel zugeordnet, entspricht der Zugriff auf den Zeiger einem Zugriff auf das Ziel</p><p>Seminar Programmiersprachen</p><p>FORTRAN 40</p><p>3.4 Zeiger</p><p> Zeigerzustnde</p><p> undefiniert Nach Initialisierung des Zeigers(z.B. REAL, POINTER :: ein_zeiger)</p><p> zugeordnet Nach Zuordnung zu einem (anderen) Ziel(ALLOCATE oder =&gt;)</p><p> nicht zugeordnet Nach Aufhebung der Zuordnung(NULLIFY oder DEALLOCATE)</p></li><li><p>21</p><p>Seminar Programmiersprachen</p><p>FORTRAN 41</p><p>3.4 Zeiger</p><p> BeispieleCHARACTER (LEN=75), POINTER :: p1, p2ALLOCATE (p1, p2)</p><p>[]</p><p>DEALLOCATE(p1); NULLIFY(p2)</p><p>!------------------------------------------</p><p>REAL, DIMENSION(1000, 1000), TARGET :: A, BREAL, DIMENSION(:, :), POINTER :: Alt, Neu</p><p>Alt =&gt; A</p><p>Neu =&gt; B</p><p>DO</p><p>[] ! Aus "Alt" berechne "Neu"END DO</p><p>Seminar Programmiersprachen</p><p>FORTRAN 42</p><p>3.4 Zeiger</p><p> Der Zuordnungsstatus darf in Unterprogrammen gendert werden und bleibt beim Rcksprung bestehen</p><p> Nicht mglich Zeiger auf Konstanten</p><p> NIL-Zeiger(ein_zeiger =&gt; null() erst in Fortran 95)</p><p> Zeigerfeld, dessen Elemente Zeiger sind</p><p> Adressarithmetik</p></li><li><p>22</p><p>Seminar Programmiersprachen</p><p>FORTRAN 43</p><p>3.5 Felder</p><p> Regelmige Anordnung von skalarenDatenelementen gleichen Typs</p><p> Max. 7 Dimensionen Zeilen, Spalten, Ebenen</p><p> Jede Dimension mit beliebig vielen Elementen</p><p> Jedes Feldelement wird durch ein Index-Tripel identifiziert</p><p>Seminar Programmiersprachen</p><p>FORTRAN 44</p><p>3.5 Felder</p><p> Indizierung der Feldelemente Index-Tripel: (Zeile, Spalte, Ebene)</p></li><li><p>23</p><p>Seminar Programmiersprachen</p><p>FORTRAN 45</p><p>3.5 Felder</p><p> Reihenfolge der Feldelemente</p><p> Erst werden die Indizes der 1. Dimension durchlaufen</p><p> Danach wird der Index der 2. Dimension um 1 erhht, und wieder werden die Indizes der 1. Dimension durchlaufen</p><p> Ist die 2. Dimension abgearbeitet, wird der Index der 3. Dimension um 1 erhht</p><p> Meistens erfolgt so auch die Speicherung der Werte</p><p>Seminar Programmiersprachen</p><p>FORTRAN 46</p><p>3.5 Felder</p><p> Feld mit expliziter Gestalt Index-Grenzen genau festgelegt durch Konstanten, aber auch Variablen ( automatisches Feld)</p><p> Feld mit bernommener Gestalt bernimmt Gestalt vom bergebenen Parameterfeld </p><p> Elemente-Anzahl je Dimension dadurch bestimmt</p><p> Feld mit offener Gestalt (ALLOCATABLE) Keine Index-Grenzen festgelegt</p><p> Nicht initialisierbar Speicherplatz-Zuweisung erst bei ALLOCATE</p></li><li><p>24</p><p>Seminar Programmiersprachen</p><p>FORTRAN 47</p><p>3.5 Felder</p><p> Feld mit expliziter GestaltDIMENSION (55, 14:22) :: exp_gest</p><p>DIMENSION (-5:n, 10, n) :: auto_feld</p><p> Feld mit bernommener GestaltDIMENSION (1950:1989, 2:4) :: ein_feldCALL sub(ein_feld)</p><p>SUBROUTINE sub(par_feld)</p><p>REAL, DIMENSION (0:, :) :: par_feld</p><p>END SUBROUTINE sub</p><p>! par_feld bernimmt die Gestalt von ein_feld, ! die 1. Dimension hat Gre 40 (von 0 bis 39),</p><p>! die 2. Dimension hat Gre 3 (von 1 bis 3)</p><p>Seminar Programmiersprachen</p><p>FORTRAN 48</p><p>3.5 Felder</p><p> Feld mit offener Gestalt (ALLOCATABLE)</p><p>REAL, ALLOCATABLE, DIMENSION(:) :: a</p><p>REAL, ALLOCATABLE, DIMENSION(:, :) :: b</p><p>REAL, ALLOCATABLE, DIMENSION(:, :, :) :: c</p><p>ALLOCATE(a(-n:n)) ! Erst jetzt wird</p><p>ALLOCATE(b(n, 0:2*n)) ! Speicherplatz</p><p>ALLOCATE(c(n, n:2*n, n)) ! angefordert</p></li><li><p>25</p><p>Seminar Programmiersprachen</p><p>FORTRAN 49</p><p>3.5 Felder</p><p> Arten von Feldern / Speicherverwaltung</p><p> Automatisches Feld Wird beim Aufruf eines Unterprogramms erzeugt</p><p> Beim Rcksprung in das aufrufende Programm wird es wieder gelscht und der Speicherplatz freigegeben</p><p> Beispiel fr Verwendung Bentigt wird ein temporres Feld, dessen Gre von anderen Variablen abhngt</p><p>Seminar Programmiersprachen</p><p>FORTRAN 50</p><p>3.5 Felder</p><p> Arten von Feldern / Speicherverwaltung</p><p> Dynamisches Feld Wird im Spezifikationsteil einer Programmeinheit deklariert (ALLOCATABLE), zunchst ohne Index-Grenzen</p><p> Existiert physisch nicht, bis es initialisiert, d.h. Speicher angefordert, wird</p><p> berlebt den Rcksprung, der Zustand ist dann aber undefiniert (Abhilfe: SAVE)</p><p> Explizites Lschen mittels DEALLOCATE</p></li><li><p>26</p><p>Seminar Programmiersprachen</p><p>FORTRAN 51</p><p>3.5 Felder</p><p> Arten von Feldern / Speicherverwaltung</p><p> Feldzeiger Wird im Spezifikationsteil einer Programmeinheit deklariert (POINTER), zunchst ohne Index-Grenzen</p><p> Existiert physisch nicht, bis es initialisiert, d.h. Speicher angefordert, wird (ALLOCATE)</p><p> Explizites Lschen mittels DEALLOCATE</p><p>Seminar Programmiersprachen</p><p>FORTRAN 52</p><p>3.5 Felder</p><p> Beispiele: Arten von Feldern</p><p>REAL, DIMENSION (1:15, 5, 10) :: a</p><p>! Feld mit expliziter Gestalt</p><p>REAL, DIMENSION (:, 5:) :: b</p><p>! Feld mit bernommener Gestalt</p><p>REAL, ALLOCATABLE, DIMENSION (:, :) :: c</p><p>! Dynamisches Feld</p><p>REAL, POINTER, DIMENSION (:) :: d</p><p>! Feldzeiger</p></li><li><p>27</p><p>Seminar Programmiersprachen</p><p>FORTRAN 53</p><p>3.5 Felder</p><p> Vergleich Zeiger Felder</p><p> Zeiger und automatische/dynamische Felder hneln sich und leisten in etwa das gleiche</p><p> Aber Felder sind weniger fehleranfllig (insb. in Bezug auf Speicherverwaltung) Dangling Pointers</p><p> Garbage Collection nicht bei allen Compilern</p><p> liefern bessere Performance mehrere Zeiger knnen auf dasselbe Ziel zeigen</p><p>( berflssige Arbeit fr den Compiler)</p><p>Seminar Programmiersprachen</p><p>FORTRAN 63</p><p>3.6 Ein- und Ausgabe</p><p> Grundlage des Dateisystems ist der Datensatz</p><p> Arten von Datenstzen Formatgebundene (mit FORMAT-Attribut)</p><p> Formatfreie (interne Darstellung) Dateiendesatz (ENDFILE)</p><p> Datei = Folge zusammenhng...</p></li></ul>