Gunther Lamprecht EinfOhrung in die Programmiersprache FORTRAN IV Anleitung zum Selbstudium Skriptum fUr Harer aller Fachrichtungen ab 1. Semester 3., berichtigte Auflage Friedr. Vieweg & Sohn Braul'"'schweig/Wiesbaden 1. Auflage 1970 Nachdruck 1971 2., berichtigte Auf1age 1972 3., berichtigte Auf1age 1973 1. Nachdruck 1976 2. Nachdruck 1977 3. Nachdruck 1978 4. Nachdruck 1980 Alle Rechte vorbehalten © Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, Braunschweig 1970,1972,1973 Die VervielfaItigung und Ubertragung einzelner Textabschnitte, Zeichnungen oder Bilder, auch fijr Zwecke der Unterrichtsgestaltung, gestattet das Urheberrecht nur, wenn sie mit dem Verlag vorher vereinbart wurden. 1m Einzelfall mu1.\ fiber die Zahlung einer Gebfihr fijr die Nutzung fremden geistigen Eigentums entschieden werden. Das gilt fUr die VervielfaItigung durch alle Verfahren einschlie6lich Speicherung und jede Ubertragung auf Papier, Transparente, Filrne, Blinder, Platten und andere Medien. ISBN-13: 978-3-528-23307-5 e-ISBN-13: 978-3-322-85536-7 DOl: 10.1007/978-3-322-85536-7 Vorwort Diese Einfiihrung in die Programmiersprache Fortran N ist entstanden aus mehreren Kursen, die am Rechenzentrum der Universitat Miinster fUr Horer aIler Fakultiiten ab gehalten worden sind. Das Ziel dieser Kurse war es, dem Teilnehmer ein Hilfsmittel in die Hand zu geben, das er unter Umstanden spater fUr seine wissenschaftlichen Aufgaben einsetzen kann. Urn den Kursteilnehmer moglichst gut mit dem neuen ,,Handwerkzeug" vertraut zu machen, wurde die Programmiersprache so dargestellt, d~ ein unmittelbares Ausprobieren des gerade erlemten Stoffes auf der Rechenanlage moglich war. Die Sprache Fortran N sollte als "problemorientierte" Programmiersprache eigentlich unabhiingig von der benutzten Rechenanlage (ffiM 360/50) sein. Bedingt durch den unter schiedlichen Aufbau der Rechenanlagen lassen sich jedoch gewisse Abweichungen in der Programmiersprache bei den einzelnen Herstellerfmnen nicht ganz vermeiden. So kann es sein, d~ einzelne Programme auf einer anderen Rechenanlage eine Fehlermeldung hervorrufen. Anhand der Fehlermeldung l~t sich das Programm dann leicht abiindern. In den Paragraphen 1 und 9 wird die interne Verschliisselung von Zahlen und Zeichen beschrieben. 1m Prinzip gilt die Darstellung fUr aIle Rechenanlagen, ohne Xnderung je doch zur Zeit nur fUr Anlagen der Firmen CII, IBM und Siemens. Ganz bew~t wurde in dieser Einfiihrung darauf verzichtet, aIle Moglichkeiten der Pro grammiersprache Fortran zu beschreiben. Einmal verwirrt die Vielfalt einen Anflinger, zum anderen werden die hier beschriebenen Moglichkeiten ausreichen, urn die am Anfang anfaIlenden Programmieraufgaben zu losen. Spater wird der Leser sicher in der Lage sein, ein Handbuch tiber Fortran IV zu verstehen. Der Name FORTRAN der hier beschriebenen Programmiersprache ist eine Abkiirzung von FORMULA TRANSLATION (Obersetzung von (mathematischen) Formeln). Es liegt daher in der Natur der Sache, daB ein gewisses Mindestm~ an mathematischer Vorbildung vorhanden sein m~, urn die Programmiersprache Fortran zu verstehen. Die Mindestvoraussetzung kann man fUr diese Einfiihrung etwa mit den Begriffen Rechnen in verschiedenen Zahlensystemen, Mittelwert, Streuung, Varianz, Polynom, Vektor beschreiben. Die Kenntnisse der Matrizenrechnung sind hier nur fUr den erforderlich, der die LOsung linearer Gleichungssysteme programmieren will. Herm Prof. Dr. H. Werner mochte ich fUr die Anregung danken, diese Einfiihrung zu schreiben. Frau Mathern. Techn. Assistentin I. Schulze, Miinster, Herm OStR. S. LUhrs, Nordenham, und meiner Frau bin ich fur die kritische Durchsicht des Manuskriptes und fur zahlreiche Xnderungsvorschlage zu Dank verpflichtet. Fraulein M. Imenkamp danke ich fUr ihre Miihe beim Schreiben der Druckvorlagen und Herm Mecke fur das Zeichnen der Skizzen. Gunther lAmprecht Inhaltsverzeichnis Einleitung Die Darstellung von Zahlen in der Rechenanlage 5 1 Ein einflihrendes Beispiel 17 3 Das Ablochen von Fortran-Programmen 10 4 Der Sprungbefehl und der Einlesebefehl 30 5 Das logische IF-Statement 44 6 Variablenfelder ("Arrays"); Vektoren, Matrizen 49 7 Die DO-Schleife 62 8 Genauere Beschreibung der Ein- und Ausgabe 68 9 Interne Darstellung von Zeichen 92 10 Initialisieren von Variablenwerten 97 11 Variables Format+ 107 12 Das arithmetische IF-Statement 111 13 Unterprogrammtechnik; Funktionsunterprogramme 114 14 Unterprogrammtechnik; Subroutinen 129 15 Parameteriibergabe durch den COMMON-Bereich 135 16 Abschliel:.ende Aufgaben 140 Losungsteil 143 -1- Einleitung Von der Formulierung eines Problems bis hin zu seiner Losung kann man die folgenden Stationen angeben, die nacheinander zu durchlaufen sind: , Formulierung Entscheidet man sich bei der Aus I wahl der adaquaten Hilfsmittel fur ,I ,I die Anwendung einer Rechenanlage, so , muG der Losungsweg in eindeutiger Wahl der adaquaten -, ,I Weise beschrieben werden. AIle mog Hilfsmittel lichen Sonderfalle mussen erkannt und berucksichtigt sein. Erst dann kann man den Losungsweg - etwa in der Pro (mathematische) grammiersprache Fortran - programmie- Formulierung des ren. Losungsweges Nachdem das Programm in allen Ein zelheiten (am Schreibtisch) aufge stellt ist, kann es Befehl fur Befehl abgelocht werden, d.h. auf Lochkarten ubertragen werden. Das Paket von Loch karten stellt das Programm in einer fur die Rechenanlage "lesbaren" Form dar. Die Rechenanlage Ii est das Pro gramm, das in einer sogenannten pro kritische blemorientierten Sprache formuliert Diskussion der ist, und ubersetzt die einzelnen Be Ergebnisse fehle mit Hilfe eines besonderen Pro- (Kontrollrechnung) gramms, des sogenannten Compilers, in eine Sprache, die die Maschine un Losung des Problems mittelbar versteht ("maschinenorien tierte Sprache"). 1 Lamprecht -2- In dieser Phase werden von der Reehenanlage aIle VerstoBe gegen die Regeln der problemorientierten Spraehe - also gegen Fortran - erkannt und dem Programmierer mitgeteilt. 1st das Programm ausgetestet, d.h. sind aIle formal en Fehler beseitigt, und liefert das Programm die bereehneten Werte, so sind diese ~erte einer kritisehen Diskussion zu unterziehen. Von dieser Diskussion hangt es ab, ob der Losungsweg anders besehrieben, die Wahl der adaquaten Hilfsmittel anders getroffen oder das Problem anders formuliert werden muG. Erst dann, wenn die Reehnung die gewlinsehten Er gebnisse liefert, kann das betraehtete Problem als gelost ange sehen werden. FUr den formal en Aufbau der Programmierspraehe Fortran ist es zwar unwesentlieh, welehe Konfiguration die benutzte Reehen anlage besitzt. Zum Verstandnis ist es aber sieher gut, den prinzipiellen Aufbau einer Reehenanlage zu kennen. Er solI daher hier sehematiseh angegeben werden. - Kernspeieher~Zentrale 1--.-.,.-----------1 Reehen - Magnetband- einheiten einheit t einheiten t Loehstreifen leser -3- Von der zentralen Recheneinheit werden alle Gerate der Rechen anlage bedient. Sie ist sozusagen das Herzstuck. Uber den Kar tenleser werden die Programme (und eventuelle zugeherige Daten) in die Rechenanlage gegeben. Auf dem Drucker erscheint ein Pro tokoll der eingegebenen Programmkarten und zusatzlich alle Fehlermeldungen, die das Programm betreffen. 1st das Programm ausgetestet, kennen die Ergebnisse ebenfalls uber den Drucker ausgegeben werden, und zwar in der Form, die im Programm vorge sehen ist. 1m Kernspeicher wird das Programm wahrend der gesamten Aus flihrungszeit (d.h. solange es gerechnet wird) aufbewahrt, und auBerdem werden hier alle yom Programm angeforderten Speicher platze reserviert. Uber die Magnetband- und Magnetplatteneinheiten kann man externe Speichermedien (Magnetbander, Magnetplatten) ansprechen und so Daten aus- oder eingeben. Durch den Karten stanzer kennen berechnete Daten auf Lochkarten ausgegeben werden, die spater yom Kartenleser wieder gelesen werden kennen. Uber den Lochstreifenleser kennen Daten, die auf Lochstreifen abgelocht worden sind, in die Rechenanlage gegeben werden. Nun noch einige Hinweise zu der vorliegenden Einflihrung in die Programmiersprache Fortran. 1) Oem Rechenzentrum steht eine Rechenanlage yom Typ IBM 360/50 zur Verfligung. Es ist verstandlich, daB einige zusatzliche Meglichkeiten, die diese Anlage bietet, in den abgehaltenen Kursen angegeben wurden. Da diese Informationen gleichzeitig einem besseren'Verstandnis der Programmiersprache dienen, schien es gerechtfertigt, diese Teile auch in der vorliegen den Einflihrung beizubehalten. 2) Ein Pluszeichen bei einem Paragraphen, einer Ubung oder Auf gabe soll bedeuten, daB dieser Teil zum Verstandnis der Pro grammiersprache nicht unbedingt erforderlich, aber nlitzlich ist. Ein Stern bei einer Ubung oder Aufgabe soll sagen, daB zur Lesung mehr mathematische Kenntnisse erforderlich sind, als im Vorwort gesagt wurde. -4- J) Haufig werden einzelne Befehle oder Beispiele der Programmier sprache in den Text eingestreut. Da man als Anfanger schlecht entscheiden kann, ob ein Punkt oder ein Komma Bestandteil des Befehls oder ein Interpunktionszeichen des Textes ist, ~~rden die Satzzeichen an diesen Stellen fortgelassen. 4) In einem gesonderten Losungsteil sind alle Antworten und Pro gramme zu Beispielen, Ubungen und Aufgaben zusammengesteLlt. In der Regel stellen sie einen von vielen Losungswegen dar. Die angegebenen Losungen sollen zur Kontrolle des eigenen Losungsansatzes dienen. -5- 1 Die Darstellung von Zahlen in der Rechenanlage In unserem Dezimalsystem besitzen die Ziffern einer Zahl einen ganz bestimmten Stellenwert. So hat die Ziffernfolge 1 - 2 - 7 - 3 verabredungsgemaB den Wert 1273 1. Urn jede beliebige Zahl im Dezimalsystem darstellen zu kennen, braucht man insgesamt 10 verschiedene Ziffern, namlich 0,1,2, •.• ,9 Es sprechen geschichtliche Grunde fur das Dezimalsystem, aber man kann sich andere Zahlensysteme vorstellen. So kann man die Ziffernfolge 1 - 2 - 7 - 3 auch als Oktalzahl auffassen, d.h. 1273 699 Oktal Dezimal Urn jede beliebige Zahl im Oktalsystem (d.h. im Zahlensystem mit der Basis 8) darstellen zu kennen, braucht man 8 verschiedene Ziffern 0,1, ... ,7. Ubung 1.1 Man interpretiere die Ziffernfolge 1 - 2 - 7 - 3 als Hexadezimal zahl - d.h. zur Basis 16 geherend - und berechne ihren Dezimalwert. bbung 1.2 Will man jede beliebige Zahl als Hexadezimalzahl darstellen, so benetigt man insgesamt 16 verschiedene Ziffern. Ublicherweise ver wendet man hierfur die Zeichen 0,1, ... ,9,A,B,C,D,E,F. Man gebe die Dezimalwerte der Hexadezimalziffern A,B, •.• ,F an. -6- Ubung 1.3 a) Um eine gegebene Dezimalzahl in die Zahl eines anderen Zahlen systems umzurechnen, wird die Dezimalzahl durch die Basis des anderen Zahlensystems dividiert. Der Rest ergibt die letzte Ziffer der gesuchten Zahl. Der berechnete Quotient wird wieder durch die Basis dividiertj dieser Rest ergibt die zweitletzte Ziffer u.s.w. Welche Zahl ist 1273 im Oktalsystem? Dezimal 1273:8=159 Rest 1 1273= 159· 8+.,!.. 159:8= 19 Rest 7 1273= (19·8+7)·8+~ 19: 8= 2 Rest 3 1273=«2·8+3)·8+7)·8+1 2:8= 0 Rest 2 Also ist 1273 2371 Dezimal Oktal Man berechne die Hexadezimalzahl (Basis 16) fur 1358 Dezimal b) Zur Berechnung des Dezimalwertes einer Zahl aus einem anderen Zahlensystem verwendet man zweckmaBig folgendes Schema (IIHorner Schema"), das an einem Beispiel demonstriert werden soll 1273 Oktal Durch Ausrechnen der einzelnen Klammern erhalt man 1·8+2=10 10·8=80 80+7=87 87·8=696 696+3=699 Also 1273 699 Oktal Dezimal Man berechne den Dezimalwert der He'x:adezimalzahl B1E . Hex.