FORT90_wstep.pdf

(264 KB) Pobierz
Adam Fic
Instytut Techniki Cieplnej
Informatyka
Wstęp do
programowania w języku FORTRAN 90/95
Gliwice, listopad 2004
1. Informacje wstępne
Niniejszy tekst zawiera podstawowe informacje dotyczące programowania w języku
FORTRAN 90/95, których znajomość powinna ułatwić zainteresowanym pierwsze kroki w
nauce tego języka. Chociaż nie jest to kompletny opis języka, zawarte tutaj i w dołączonej
prezentacji informacje dotyczące podstawowych jego struktur pozwalają zaprogramować w
zasadzie każdy algorytm.
W niniejszym tekście i przygotowanej prezentacji przyjęto następujące zasady:
-
-
-
znak _ oznacza w programie spację,
w nawiasach [...] ujmowane są te fragmenty instrukcji fortranowskich, które mogą
być opuszczone,
dużymi literami zapisywane są ciągi znaków w fortranie
zastrzeżone.
Użytkownik
nie może tworzyć takich nazw własnych.
2. Struktura programów w FORTRANie i ich kompilacja
Programy w FORTRANie mogą mieć strukturę modułową. Składać się mogą z
podprogramów (segmentów) o dowolnej w dużym stopniu strukturze wzajemnych powiązań
(rys.1.).
Program
główny
Podpr_1
Podpr_2
Podpr_3
Podpr_4
Podpr_5
Podpr_4
Rys. 1. Przykładowy schemat programu fortranowskiego.
Każdy program w FORTRANie musi zawierać segment główny
(program główny)
oraz
może zawierać podprogramy
(segmenty dodatkowe). Podprogramy mogą być
wywoływane przez program główny, a także przez inne podprogramy.
W FORTRANie występują trzy podstawowe typy podprogramów:
-
-
-
SUBROUTINE (czyli procedury),
FUNCTION (funkcje),
MODULE
– ma nieco inne znaczenie niż poprzednie.
2
Użytkownik zapisuje własne programy i podprogramy w plikach źródłowych.
Pliki
źródłowe muszą mieć rozszerzenie .f90
(FORTRAN 90 lub FORTAN 95).
Plik źródłowy fortranowski
może zawierać jeden lub więcej segmentów programu.
Kolejność tych segmentów jest dowolna. Segmenty w danym pliku źródłowym
muszą być
kompletne.
Aby program stał się
wykonywalny
(executable),
musi zostać skompilowany.
Kompilacja programów jest
dwuetapowa
(rys. 2.) i jest realizowana za pomocą specjalnych
programów nazywanych
kompilatorami.
I ETAP KOMPILACJI
Plik źródłowy
(*.f90)
Plik półskompilowany
(*.obj)
tworzenie biblioteki (*.lib)
II ETAP KOMPILACJI
Pliki półskompilowane
(*.obj) + pliki biblioteczne (*.lib)
Wykonywalny plik binarny
(*.exe)
Rys. 2. Schemat kompilacji programu fortranowskiego.
W I etapie kompilacji tworzone są tzw. pliki półskompilowane o rozszerzeniu
.obj.
W
oparciu o te pliki mogą być tworzone biblioteki podprogramów (rozszerzenie
.lib).
W drugim
etapie kompilacji (konsolidacja) następuje tworzenie programu wykonywalnego o
rozszerzeniu
.exe.
Następuje wtedy łączenie wszystkich półskompilowanych plików
programu i ewentualne dołączenie występujących w programie podprogramów (do których
następują odwołania w programie) ze wskazanych bibliotek i bibliotek standardowych
zawierających podprogramy standardowe (głównie podstawowe funkcje realizujące określone
operacje, użytkownik nie musi ich dzięki temu definiować). Możliwe są różne opcje
kompilacji dotyczące np. rodzaju tworzonego wykonywalnego pliku .exe. Przykładowo, może
on umożliwiać lub też nie śledzenie krok po kroku przebiegu obliczeń („debugowanie” od
DEBUG)
Fortran 90/95 umożliwiaja stosowanie dwojakiego formatu plików źródłowych:
-
format swobodny
(free), w którym instrukcje programu zapisywane są w pierwszych
132 pozycjach (kolumnach) każdego wiersza,
3
-
format sztywny
(fixed), charakterystyczny dla poprzednich wersji fortranu, np.
FORTANu 77, w którym instrukcje programy zapisuje się zasadniczo w kolumnach
7-72, a kolumny 1-6 mają przeznaczenie specjalne.
W ramach niniejszego kursu będzie stosowany format swobodny.
Podstawowe
zasady
swobodnego zapisu plików źródłowych w FORTANIE
są następujące:
-
-
-
kod programu zapisuje się w dowolnych pozycjach (kolumnach) wiersza z zakresu 1-
132. Znaki z kolumn następnych są przez kompilator ignorowane,
wielkość liter niema znaczenia, tj. litery duże i małe są nie są przez kompilator
rozróżniane,
jeżeli w wierszu wystąpi znak
!
(wykrzyknik), to następne znaki są traktowane jako
komentarz. Znak ten może wystąpić w dowolnej kolumnie wiersza, również w
pierwszej. Wówczas cały wiersz jest traktowany jako komentarz.
Komentarze
ignorowane przez kompilator. Nie stanowią ani instrukcji programu ani nie są
instrukcjami dla kompilatora. Komentarze stosuje się zwykle do zapisu w nich
informacji o tym co realizuje fragment programu w jego otoczeniu, do krótkiego
opisu programu bądź występujących w nim zmiennych.
separatorami instrukcji są: znak nowego wiersza oraz znak
;
(średnik). W wierszu
może więc znaleźć się więcej instrukcji niż jedna, oddzielone średnikami,
znak
&
oznacza, że instrukcja zapisywana w wierszu przed tym znakiem jest
kontynuowana w wierszu następnym. W ten sposób instrukcje można zapisywać w
wielu wierszach,
maksymalnie w 39,
instrukcjom można przyporządkowywać etykiety. Etykietą jest poprzedzająca
instrukcję liczba, maksymalnie 5-cio cyfrowa.
-
-
-
Segmenty źródłowe w fortranie mają ściśle określoną strukturę.
Każdy segment powinien
zawierać:
nagłówek !(np
PROGRAM_ nazwa FUNCTION_nazwa SUBROUTINE_nazwa)
deklaracje
instrukcje programu i komentarze
END
!stanowi koniec segmentu (musi wystąpić)
Segment główny
nie musi mieć wiersza z nagłówkiem.
Deklaracje
(specyfikacje, definicje) są instrukcjami biernymi i służą do przekazywania
potrzebnych informacji, np. co do typów zmiennych, nadawania im wartości początkowych.
Deklaracje nie muszą występować. Czasem nie są konieczne. Jeżeli jednak występują,
to
muszą znajdować się na początku segmentu, nie mogą być przedzielone żadną
instrukcją czynną.
Informacje zawarte w deklaracjach mają zasadniczo znaczenia
lokalne,
tzn.
dotyczą jedynie segmentu, w którym są zadeklarowane.
Pewnym wyjątkiem są
podprogramy wewnętrzne, dostępne wyłącznie w obrębie segmentu, w którym są
zdefiniowane. W tych podprogramach „widziane” są również zmienne z segmentu, w którym
są one zdefiniowane. W FORTRANie 90/95 można również operować
zmiennymi
globalnymi.
Zmienne takie definiuje się w segmentach
MODULE_nazwa
module
i są one
4
dostępne we wszystkich tych podprogramach, w których zastosowano deklarację
USE_nazwa
module.
Instrukcje programu są zasadniczo wykonywane zgodnie z kolejnością ich
występowania.
Zmianę tej kolejności można spowodować za pomocą instrukcji sterujących.
3. Podstawowe elementy języka
3.1. Alfabet FORTRANu
Do zapisu programu źródłowego można w FORTRANie 90/95 stosować:
-
-
-
duże i małe litery alfabetu angielskiego,
przy czym domyślnie litery duże i małe są
traktowane przez kompilator
identycznie,
cyfry
od
0
do
9,
pozostałe znaki ASCI
(American Standard Code for Information Interchange; każdy
znak ma umowną reprezentację cyfrową 7-bitową, której odpowiada kod liczbowy
dziesiętny z przedziału 0-127))
-
3.2. Wartości, zmienne, oraz inne elementy języka i ich nazwy
W programach fortranowskich występują elementy, które wymagają nadania im nazw
(identyfikatorów). Takimi
elementami
są:
-
-
segmenty (program główny, procedury, funkcje, moduły),
zmienne
Zmienne służą do przechowywania wartości. Są im w tym celu przyporządkowywane
miejsca w pamięci o ściśle określonych adresach i długościach pól.
Długość pola
wyraża się
w
bajtach
(1 bajt = 8 bitów).
Nazwy
w fortranie są ciągami maksymalnie 31 znaków. Znakami tymi mogą być:
litery,
cyfry
oraz znaki
$
(traktowany jak litera) i
_,
przy czym
pierwszym znakiem musi być
litera.
Dawniej programiści stosowali raczej proste nazwy (programy zapisywano kiedyś na
nośnikach papierowych). Współcześnie wydaje się, że
dobrą praktyką
jest stosowanie nazw
które łatwo kojarzą nazwę zmiennej/segmentem z ich rzeczywistym znaczeniem. Prowadzi to
czasem do nazw składających się z wielu znaków. Aby ograniczyć możliwości popełnienia
błędów literowych
zaleca się wówczas zastosować
deklarację
IMPLICT NONE
Deklaracja ta
musi poprzedzać deklaracje typów w bloku deklaracji. Wymusza ona
konieczność deklarowania typów wszystkich zmiennych.
Pewne słowa mają w fortranie znaczenie szczególne i są zastrzeżone. Nazwy tworzone
przez użytkownika
nie mogą
być
słowami zastrzeżonymi
w fortranie, jak również nie mogą
być
nazwami funkcji standardowych.
Przykłady
nazw poprawnych i niepoprawnych:
-
-
nazwy poprawne
x, x1, prog, x1t2,
nazwy niepoprawne
1x, IF, STOP, DO, END.
5
Zgłoś jeśli naruszono regulamin