Fortran/Zmienne
Z Wikibooks, biblioteki wolnych podręczników.
Spis treści |
[edytuj] Czym jest i do czego służy zmienna?
Język Fortran jest językiem kompilowanym bezpośrednio do kodu maszynowego. Oznacza to, że nie posiada on żadnych mechanizmów, kontrolujących dostęp do pamięci (w przeciwieństwie np. do języka Java). Pamięć jest to nic innego, jak tylko ciąg bitów, które zależnie od interpretacji, mogą dla programu stanowić liczbę całkowitą, znak (jedną literkę), łańcuch (kilka literek) lub liczbę rzeczywistą (w notacji dziesiętnej z kropką). Aby wymusić interpretację ciągu bitów o określonej długości używamy tzw. typów zmiennej. Typ definiuje zwykle też długość zmiennej. Dzięki użyciu typów program wie, że np. zmienna x przechowuje jakąś liczbę całkowitą a zmienna y przechowuje liczbę rzeczywistą. Aby korzystać ze zmiennych musimy je uprzednio zadeklarować. W języku Fortran wykonuje się to w następujący sposób (według normy Fortran95):
typ_zmiennej :: nazwa_zmiennej
lub (według normy Fortran77) :
typ_zmiennej nazwa_zmiennej
[edytuj] Typy zmiennej
Typ zmiennej może odnosić się do różnego rodzaju danych, które mają być przechowywane w zmiennej.
[edytuj] Liczby
| Typ zmiennej | Opis | Przykładowe wartości |
|---|---|---|
| integer | liczba całkowita | 15, -6500, 200000000 |
| real | liczba zmiennoprzecinkowa pojedynczej precyzji | 3.1415, -5.5, .7e3, 12.5E-5 |
| double precision | liczba zmiennoprzecinkowa podwójnej precyzji | 3.1415D0, -5.5D0, .7d3, 12.5D-5 |
| complex | liczby zespolone (kombinacja części rzeczywistej i urojonej) | (3.1415, -5.5), (1.4, 7.1E4) |
Zmienne liczbowe mogą być podawane w różnych systemach liczbowych. Domyślnie przyjmowany jest dziesiętny, jednak, aby kompilator wiedział, że używasz innego systemu, przyjmuje się następujące założenia:
| Zapis | System |
|---|---|
| Z"liczba" lub Z'liczba' | szesnastkowy |
| O"liczba" lub O'liczba' | ósemkowy |
| B"liczba" lub B'liczba' | binarny |
Język Fortran dopuszcza także definiowanie przez programistę rozmiaru zmiennej. Uzyskuje się to poprzez dodanie w deklaracji zmiennej następującej konstrukcji:
real*4 nazwa_zmiennej lub real nazwa_zmiennej -domyślny typ lub real(kind=4)::nazwa_zmiennej
oznacza 4-bajtową liczbę rzeczywistą. Natomiast, aby uzyskać typ podwójnej precyzji używamy konstrukcji:
real*8 nazwa_zmiennej. lub real(kind=8)::nazwa_zmiennej
w niektórych kompilatorach możemy uzyskać poczwórną precyzje.
real(kind=16)::nazwa_zmiennej
[edytuj] Wartości logiczne
Do przechowywania wartości logicznych także przeznaczono specjalny typ danych.
| Typ | Opis | Możliwe wartości |
|---|---|---|
| logical | Przechowywanie wartości logicznej | .TRUE. lub .FALSE. |
[edytuj] Znaki i łańcuchy
Przechowywanie pojedynczych znaków odbywa się przy pomocy typu CHARACTER. Natomiast deklarowanie łańcucha polega na dodaniu * oraz długości łańcucha (w znakach). Oznacza to, że aby przechować np. nazwę "pl.Wikibooks" musimy napisać tak:
character*12 :: nazwa="pl.Wikibooks" print *, nazwa
Uwagi, dotyczące długości poszczególnych typów danych:
- dla typu integer możliwe jest zaalokowanie 1, 2, 4 lub 8 bajtów
- dla typu real odpowiednio 4 lub 8
- dla typu Complex 8 lub 16
- dla typu character nie ma ograniczeń długości
[edytuj] Stałe
Język Fortran umożliwia także deklarację zmiennych, których zawartości nie da się zmieniać. Są to tzw. stałe. Deklaruje się je podobnie do zmiennych, z tą jednak różnicą, że przy nazwie typu dodajemy słowo parameter. Dla standardu Fortran 95 wygląda to następująco:
typ, parameter :: nazwa = wartość
Natomiast według Fortran 77 wygląda to tak:
typ nazwa parameter (nazwa=wartość)
Uwaga: kompilator języka Fortran nie zasygnalizuje błędu, jeśli stałej w kodzie programu przypiszesz inną wartość! Np.
integer, parameter :: p = 3 print *, "p=",p parameter p = 9 print *, "p=",p
[edytuj] Tablice
Czasami zdarza się, że potrzebujemy przechować więcej niż jedną wartość danego typu (np. real). Język Fortran umożliwia nam zestawianie kilku zmiennych w tzw. tablicę. Definiuje się ją następująco:
typ zmienna(wymiar)
gdzie wymiar oznacza ilość zmiennych tego samego rodzaju. W tym przypadku będzie to tablica jednowymiarowa. Możemy jednak używać tablic wielowymiarowych, np. 2x2:
real tablica(2,2)
Nie należy jednak definiować tablicy o zbyt dużej ilości wymiarów - niesie to ze sobą duże zużycie pamięci.
| W przeciwieństwie do innych języków programowania (np. do C, ale nie do Pascala), Fortran numeruje elementy tablicy od 1!! (Chyba, że ustalimy inaczej) |
[edytuj] Sposoby deklaracji tablic
W przeciwieństwie do np. języka C, język Fortran umożliwia programiście deklarację tablicy na wiele różnych sposobów. Oto niektóre z nich:
Sposób pierwszy:
real tablica(10)
Sposób drugi:
real tablica dimension tablica(10)
Sposób trzeci:
integer index parameter (index=10) real tablica(index)
Sposób czwarty:
real tablica(0:9)
W specyfikacji F95, deklaracja różni się tylko tym, że używany jest dwukropek (::).
[edytuj] Modyfikowanie zawartości tablicy
Aby zmodyfikować jakiś element tablicy, musimy znać jego położenie. Do tego celu służy tzw. indeks. Aby zmodyfikować pierwszy i drugi element tablicy piszemy:
tablica(1) = 0.4 tablica(2) = 0.3
Odczyt zawartości jakiegoś elementu tablicy dokonuje się w analogiczny sposób:
print *, "Tablica[1]=", tablica(1)

