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.

Porada 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)
Utwórz książkę
  • Dodaj stronę
  • Pomoc kolekcji