next up previous
Next: Zadania do samodzielnego opracowania Up: Czytanie i pisanie w Previous: Czytanie i pisanie w

Objaśnienia

Formatowane instrukcje wejścia/wyjścia należą do najmocniejszych atutów FORTRANu w porównaniu z językami C i C++, gdzie wydrukowanie najprostszej tabelki wymaga niezłej gimnastyki umysłowej. Dyrektywa FORMAT służy w FORTRANie za wzorzec czytania danych lub ich wydruku. Format może być specyfikowany bezpośrednio dyrektywą FORMAT (tak jak w podanym tu przykładowym programie) lub explicite w instrukcjach READ, WRITE lub PRINT. Dyrektywa FORMAT jest zawsze etykietowana i ma postać:


etykieta FORMAT(wzorzec_formatu)


gdzie wzorzec_formatu ma postać:


n1P1,n2P2,$\ldots$


n1, n2, itd. są krotnościami wystąpienia pól lub grup pól wzorców P1, P2, itd. Na ogół stosuje się następujące pola:

In - liczba całkowita o n cyfrach (zera od lewej są zastępowane przez odstępy). Wydruk jest w postaci $nnn\ldots n$.

Fm.n - liczba rzeczywista w reprezentacji stałoprzecinkowej o m cyfrach przed i n po kropce dziesiętnej. Wydruk jest w postaci $xxx\cdots x.yyy\ldots y$.

Em.nEe - liczba rzeczywista w reprezentacji zmiennoprzecinkowej mieszcząca się na m polach i zawierająca n cyfr po kropce dziesiętnej (standardowo przed kropką nie ma żadnej) oraz e cyfr wykładnika (jeżeli e nie jest podane to wynosi 2). Wydruk jest w postaci $\pm .xxx\cdots xE\pm yy$.

Dm.nEe - jak Em.n.e tylko dla podwójnej precyzji (oprócz estetyki jest bez znaczenia).

Gm.nEe - jak Em.n.e tylko sam określa precyzję liczby.

Ln - stała logiczna zapisana na n polach.

An - łańcuch tekstowy o maksymalnie n znakach.

X - spacja.

Tn - przesunięcie ustawienie tabulatora w kolumnie n.

/ - przesunięcie do nowej linii.

$ - na końcu wzorca oznacza, że następna instrukcja WRITE lub PRINT będzie kontynuowała bieżącą linię (standardowo WRITE i PRINT działają jak writeln w Pascalu).

W przypadku, gdy liczba nie mieści się w polu drukowane są w nim gwiazdki. Przy próbie wydruku wyniku ``nielegalnej'' operacji pojawia się zamiast liczby komunikat błędu: Inf (infinity, np. 1.0/0.0) lub NaN czasami oznaczane też jaki NaNQ (not a number, np. sqrt(-1.0))

Pola F i E można poprzedzać znakiem skalowania nP; dla F spowoduje on pomnożenie drukowanej liczby przez $10^n$ a dla E wydrukowanie mantysy z n cyframi przed kropką dziesiętną i obniżenie cechy o n.

Pojedyncze pola można grupować ujmując w nawiasy; taka grupa może być następnie poprzedzona specyfikacją krotności podobnie, jak pojedyncze pole. Przykłady można znaleźć w powyższym programie.


next up previous
Next: Zadania do samodzielnego opracowania Up: Czytanie i pisanie w Previous: Czytanie i pisanie w
Adam Liwo 2002-03-06