29.12.2013 Aufrufe

Programmieren in Fortran

Programmieren in Fortran

Programmieren in Fortran

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

complex<br />

complex(4)<br />

complex(8)<br />

character<br />

character(n)<br />

= complex(4)<br />

2 x real(4)<br />

2 x real(8)<br />

Zeichen, 1 Byte<br />

Zeichenkette, n Bytes<br />

Variablen (und benannte Konstanten) werden i.a. im Programmkopf (oberhalb der ausführbaren<br />

Anweisungen) deklariert und vielleicht auch <strong>in</strong>itialisiert.<br />

Die (alte) implizite Typdeklaration (implicit typ<strong>in</strong>g) von <strong>Fortran</strong> nimmt, wenn nichts<br />

anderes deklariert ist, folgendes an:<br />

• real für Namen, die mit a-h, o-z beg<strong>in</strong>nen;<br />

• <strong>in</strong>teger für Namen, die mit i-n beg<strong>in</strong>nen.<br />

Diese Automatik spart Schreibarbeit, macht aber aus e<strong>in</strong>em Tippfehler womöglich e<strong>in</strong>e<br />

neue Variable. Deshalb kann man dieses Verhalten abschalten mit der Deklaration<br />

implicit none<br />

im Kopf jedes Programmteils. Es gibt auch Compilerschalter, die das pauschal erledigen:<br />

gfortran -fimplicit-none ...<br />

ifort -implicitnone ...<br />

pgf90 -Mdclchk ...<br />

Bei arithmetischen Operationen zwischen verschiedenen Zahlentypen wird zunächst<br />

auf den höheren (umfassenderen) Typ konvertiert und dann gerechnet, das führt i.a.<br />

zum erwarteten Ergebnis. Überraschend ist eher, wenn es nicht geschieht: Die Division<br />

zweier <strong>in</strong>teger–Zahlen wird ganzzahlig ausgeführt, e<strong>in</strong> Rest fällt e<strong>in</strong>fach weg. So wird<br />

z.B. 1/3 -> 0, das ist selten beabsichtigt – e<strong>in</strong>e böse Falle.<br />

5.3 Mathematischen Funktionen<br />

<strong>Fortran</strong> kennt ohne weiteres e<strong>in</strong>e Reihe von Funktionen, u.a.<br />

abs sqrt exp log log10 s<strong>in</strong> cos tan as<strong>in</strong> acos atan<br />

Sie s<strong>in</strong>d <strong>in</strong> der Regel def<strong>in</strong>iert für alle Gleitkomma–Typen (e<strong>in</strong>schließlich der komplexen),<br />

ihre Auswertung richtet sich nach dem Typ des Arguments. Das entspricht meistens der<br />

Erwartung, man muss aber bei konstanten Argumenten aufpassen: sqrt(2.) ist nur<br />

e<strong>in</strong>fach genau, erst sqrt(2.d0) gibt doppelte Genauigkeit.<br />

Für die Potenz gibt es das Rechenzeichen ∗∗ (nicht ∧).<br />

6

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!