f77 i f90, języki programowania (fortran 2.0), Kurs
[ Pobierz całość w formacie PDF ]
Fortran90 (oraz FORTRAN77) ekspresowo
1
Historia j
ę
zyka Fortran - FORmula TRANslation
•
pierwszy kompilator:
1957
•
pierwszy oficjalny standard FORTRAN66:
1972
kolejny standard FORTRAN77:
1980
•
nast
ę
pnie Fortran90:
1991
... rewolucyjne zmiany...
•
kolejno Fortran95, Fortran2003, Fortran2008...
Skupimy si
ę
na instrukcjach wchodz
ą
cych w skład standardu Fortranu 90, jednak z pewnymi
‘wycieczkami’ w stron
ę
jego poprzednika, Fortranu 77. Kolejne rozszerzenia standardu,
Fortran 95 nie były tak rewolucyjne.
Uwaga:
przej
ś
cie z F77 do F90 w praktyce przebiegało stopniowo: kompilatory wprowadzały
liczne rozszerzenia, z których du
Ŝ
a cz
ęść
znalazła si
ę
ju
Ŝ
‘pełnoprawnie’ w standardzie F90.
FORTRAN77 jest całkowicie zawarty w Fortranie90.
Bardzo du
Ŝ
o podr
ę
czników elektronicznych, polecam linki ze strony:
Obszerna informacja o j
ę
zyku na stronach Wikipedii:
Uwaga:
wi
ę
kszo
ść
kompilatorów Fortranu oczekuje plików z rozszerzeniami
.f
lub
.for
(dla plików
ź
ródłowych napisanych w stałym formacie (
fixed-form
) lub rozszerzeniami
.f90
i
.f95
(dla plików
ź
ródłowych napisanych w formacie swobodnym).
Nowe mo
Ŝ
liwo
ś
ci wprowadzone przez Fortran 90
•
swobodny format pisania programu;
•
operacje na tablicach, funkcje wbudowane działaj
ą
ce na tablicach;
•
dynamiczne przydzielanie pami
ę
ci;
•
przenoszalne typy danych (KIND);
•
rekursja;
•
moduły (MODULE);
•
ulepszone (i rozszerzone) instrukcje steruj
ą
ce;
•
......
Alfabet j
ę
zyka Fortran 90
Litery wielkie oraz małe:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
Uwaga:
Wielkie i małe litery nie s
ą
rozró
Ŝ
niane.
Cyfry:
0 1 2 3 4 5 6 7 8 9
Znaki specjalne:
spacja (odst
ę
p)
‘ ” ( ) * + - / : = _ ! & $ ; < > % ? , .
Anna Trykozko,
Praktyki w ICM
2008-07-01
•
Fortran90 (oraz FORTRAN77) ekspresowo
2
Uwaga: Spacja
ma znaczenie. Nie wolno umieszcza
ć
spacji w słowach kluczowych oraz
nazwach. Kilka nast
ę
puj
ą
cych po sobie spacji ma takie samo znaczenie jak jedna spacja.
Format pisania programu
FORTRAN77
– tzw. ‘
fixed-format’
charakteryzuj
ą
cy si
ę
nast
ę
puj
ą
cymi cechami:
•
tre
ść
instrukcji: 7-72 kolumna
•
komentarze:
C
w pierwszej kolumnie
•
etykiety: 1-5 kolumna
•
znak kontynuacji: ‘cokolwiek’ w szóstej kolumnie linii b
ę
d
ą
cej/b
ę
d
ą
cych kontynuacj
ą
•
długo
ść
nazw zmiennych i procedur: max 6 znaków
Fortran90
(
free-source form
)
•
mo
Ŝ
na pisa
ć
dowolnie (max 132 znaki w wierszu)
•
! – oznacza komentarz i mo
Ŝ
e by
ć
umieszczony na pocz
ą
tku wiersza, lub w dowolnym
miejscu – wszystko w wierszu znajduj
ą
ce si
ę
po wyst
ą
pieniu znaku ! jest traktowane jako
komentarz
•
nazwy – do 31 znaków; nazwy mog
ą
zawiera
ć
‘podkre
ś
lnik’ _
•
kilka instrukcji w jednym wierszu – oddzielane
ś
rednikiem ;
•
Kontynuacja linii – umieszczenie znaku & na ko
ń
cu wiersza oznacza,
Ŝ
e kolejna linia
programu jest jego kontynuacj
ą
, max. 39 wierszy kontynuacji. Znak kontynuacji & działa
jak spacja i nie mo
Ŝ
na stosowa
ć
go w
ś
rodku nazw i słów kluczowych.
•
W programie mog
ą
znajdowa
ć
si
ę
puste wiersze
.
Nie powinno si
ę
tych dwóch formatów miesza
ć
.
Struktura programu
Instrukcja
PROGRAM, MODULE, SUBROUTINE, FUNCTION [nazwa]
Instrukcja
USE
IMPLICIT NONE
deklaracje
instrukcje
Instrukcja
CONTAINS
Procedury wewn
ę
trzne
END { PROGRAM, MODULE, SUBROUTINE, FUNCTION } [nazwa]
Deklaracje, zmienne, stałe, typy
Typy zmiennych wyst
ę
puj
ą
cych w Fortranie90 dziel
ą
si
ę
na trzy klasy:
•
zmienne tekstowe
•
zmienne logiczne
•
zmienne numeryczne
Wyró
Ŝ
nia si
ę
sze
ść
typów zmiennych
Fortran90
FORTRAN77
CHARACTER :: lit ! litera
CHARACTER (LEN=12) :: nazwisko
LOGICAL :: stan !
CHARACTER lit
CHARACTER*12 nazwis
LOGICAL stan
Anna Trykozko,
Praktyki w ICM
2008-07-01
Fortran90 (oraz FORTRAN77) ekspresowo
3
! wartosc .TRUE. lub .FALSE.
! typy numeryczne
REAL :: wysokosc
DOUBLE PRECISION :: pi ! 3.14...
INTEGER :: wiek ! w latach
COMPLEX :: val ! x + iy
REAL wysoko
INTEGER wiek
COMPLEX val
Ogólnie deklaracja ma posta
ć
:
< typ > [,< lista atrybutów >] :: < lista zmiennych, > [ =< warto
ść
> ]
< lista atrybutów >
zawiera list
ę
atrybutów takich jak
PARAMETER, SAVE, INTENT,
POINTER, TARGET,
DIMENSION, ALLOCATABLE
. Obiektowi mo
Ŝ
na przypisa
ć
kilka
atrybutów.
To jest dobra okazja
Ŝ
eby zatrzyma
ć
si
ę
przy
tablicach
. Wcze
ś
niej jednak słowo na temat
deklaracji
IMPLICIT.
Fortran90 (podobnie jak FORTRAN77)
nie wymaga
deklarowania zmiennych i jest to
niezmiernie niebezpieczna cecha!
Niezadeklarowana zmienna ma typ zale
Ŝ
ny od pierwszej litery w nazwie:
REAL
A-H, O-Z,
INTEGER
I-N.
Deklaracja
IMPLICIT
pozwala zmieni
ć
t
ę
konwencj
ę
. Ale nie to jest istotne. Najwa
Ŝ
niejsz
ą
deklaracj
ą
jest deklaracja
IMPLICIT NONE
– wielkie osi
ą
gni
ę
cie standardu Fortranu 90.
Tablice
REAL, DIMENSION (10) :: X
INTEGER, DIMENSION (1:5, 1:2) :: A
REAL :: C(-3:3), D(0:1, -2:2)
Zadeklarowano cztery tablice:
•
Tablica
X
o elementach rzeczywistych jest tablic
ą
jednowymiarow
ą
(wektorem), bowiem
podano jeden zakres indeksów, o 10 elementach
ponumerowanych od 1 do 10 (zapis
DIMENSION (10)
jest równowa
Ŝ
ny
DIMENSION (1:10)
;
•
Tablica
A
jest tablic
ą
dwuwymiarow
ą
(macierz
ą
), o pi
ę
ciu wierszach i dwóch kolumnach.
•
Tablica
C
jest wektorem o siedmiu elementach rzeczywistych
•
Tablica
D
jest macierz
ą
o dwóch wierszach i pi
ę
ciu kolumnach.
A(1,1)
X(1) X(2)
X(10)
D(0,2)
A(3,2)
C(-3)
C(0)
C(3)
D(1,-2)
D(1,2)
Kolejno
ść
elementów w tablicy
Standard Fortranu 90 (w przeciwie
ń
stwie do standardu FORTRANU 77) nie definiuje w jaki
sposób tablice s
ą
przechowywane w pami
ę
ci komputera.
Anna Trykozko,
Praktyki w ICM
2008-07-01
Fortran90 (oraz FORTRAN77) ekspresowo
4
Ale w sytuacjach, w których niezb
ę
dne jest zdefiniowanie uporz
ą
dkowania (np. podczas
wczytywania danych lub wypisywania wyników) obowi
ą
zuje kolejno
ść
znana z poprzednich
wersji Fortranu:
elementy tablicy s
ą
uporz
ą
dkowane w kolejno
ś
ci okre
ś
lonej najszybsz
ą
zmian
ą
pierwszego indeksu
, co w przypadku tablic dwuwymiarowych (macierzy) oznacza,
Ŝ
e
elementy s
ą
uporz
ą
dkowane ‘kolumnami’
.
Fortran90 wprowadził:
•
bardzo du
Ŝ
o standardowych funkcji operuj
ą
cych na macierzach.
•
tablice dynamiczne, których zakresy s
ą
okre
ś
lane podczas wykonania programu.
Deklaracja tablic dynamicznych
W deklaracjach tablic dynamicznych pomija si
ę
rozmiar tablic; wymiar tablicy definiuje si
ę
za pomoc
ą
dwukropków:
INTEGER, DIMENSION(:), ALLOCATABLE :: X
REAL, DIMENSION(:,:), ALLOCATABLE :: A
Uaktywnianie tablic dynamicznych
Przydzielenie miejsca w pami
ę
ci i uaktywnienie tablicy dynamicznej nast
ę
puje poprzez
wykonanie instrukcji:
ALLOCATE (X(10))
albo
ALLOCATE (X(10), STAT=ierr)
if (ierr /= 0) then
PRINT*, ‘blad allokacji tablicy X’
endif
Sprawdzenie statusu operacji (
STAT
) pozwala zareagowa
ć
na ewentualny bł
ą
d wykonania
alokacji pami
ę
ci. W przykładzie
ierr
jest zmienn
ą
typu
INTEGER
. Warto
ść
ierr
jest równa 0
gdy alokacja przebiegła pomy
ś
lnie; w przeciwnym przypadku jest ró
Ŝ
na od zera.
Zwalnianie pami
ę
ci
Zwolnienie miejca w pami
ę
ci nast
ę
puje w wyniku wykonania instrukcji:
DEALLOCATE (X)
albo
if (ALLOCATE(X)) DEALLOCATE (X, STAT=ierr)
Wyra
Ŝ
enia arytmetyczne
Mo
Ŝ
na wykonywa
ć
nast
ę
puj
ą
ce operacje arytmetyczne (operatory):
•
pot
ę
gowanie **
•
mno
Ŝ
enie i dzielenie * /
•
dodawanie i odejmowanie + -
Funkcje standardowe
•
Omawianie wyra
Ŝ
e
ń
arytmetycznych jest dobrym momentem do wspomnienia o
funkcjach standardowych, nazywanych te
Ŝ
funkcjami wbudowanymi (ang.
intrinsic
).
Fortran 90 posiada 113 funkcji wbudowanych.
Standardowe funkcje matematyczne
:
sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), abs(x), exp(x), log(x),
log10(x)
Anna Trykozko,
Praktyki w ICM
2008-07-01
Fortran90 (oraz FORTRAN77) ekspresowo
5
Wyra
Ŝ
enia tekstowe
W wyra
Ŝ
eniu tekstowym mog
ą
wyst
ą
pi
ć
nast
ę
puj
ą
ce elementy (operandy):
•
stałe i zmienne tekstowe
•
podła
ń
cuchy
•
wywołania funkcji tekstowych
Operator konkatenacji oznacza si
ę
symbolem
//
. Konkatenacja polega na ‘zlepianiu’ ze sob
ą
stałych lub zmiennych tekstowych wyst
ę
puj
ą
cych w wyra
Ŝ
eniu, np. wynikiem
‘A’//’la’//’
ma kota’
jest
‘Ala ma kota’
.
Podła
ń
cuchy
(ang.
substring
)
Je
ś
li warto
ś
ci
ą
zmiennej
tekst
jest ‘
Ala ma kota
’ to:
tekst(5:6) ma
tekst( :3) (
albo
tekst(1:3) Ala
tekst (8:) (
albo
tekst (8:11) kota
tekst(:) Ala ma kota
Standardowe funkcje tekstowe
Wyra
Ŝ
enia relacji
Wyra
Ŝ
enia relacji słu
Ŝą
do porównywania warto
ś
ci dwóch wyra
Ŝ
e
ń
arytmetycznych lub
tekstowych. Wynik wyra
Ŝ
enia ma warto
ść
logiczn
ą
.TRUE.
gdy relacja zachodzi oraz
.FALSE.
w przeciwnym przypadku. Nie mo
Ŝ
na porówna
ć
ze sob
ą
warto
ś
ci wyra
Ŝ
enia
arytmetycznego i tekstowego.
Elementy wyra
Ŝ
enia relacji (operandami) s
ą
:
•
wyra
Ŝ
enia arytmetyczne
•
wyra
Ŝ
enia znakowe
Operatory relacji
(operandy):
Dopuszczalne s
ą
dwa równorz
ę
dne sposoby zapisywania operatorów relacji. Jeden z nich,
literowy, jest zapisem pochodz
ą
cym ze starych wersji j
ę
zyka Fortran; zapis za pomoc
ą
symboli matematycznych pojawił si
ę
w Fortranie90.
.GE. >=
wi
ę
ksze ni
Ŝ
.GT. >
wi
ę
ksze równe
.LE. <=
mniejsze równe
.LT. <
mniejsze ni
Ŝ
.NE. /=
nie równe
.EQ. ==
równe
Na przykład warto
ś
ci
ą
5 .LT. 10
jest
.TRUE.
, za
ś
warto
ś
ci
ą
100.NE.100
jest
.FALSE.
Wyra
Ŝ
enia logiczne
Warto
ść
wyra
Ŝ
enia logicznego ma typ logiczny. Wyra
Ŝ
enie jest prawdziwe (
.TRUE.
) lub
fałszywe (
.FALSE.
).
Wyra
Ŝ
enia logiczne konstruuje si
ę
w oparciu nast
ę
puj
ą
ce operatory logiczne:
.NOT.
negacja
.AND.
koniunkcja
.OR.
alternatywa
.EQV.
to
Ŝ
samo
ść
Anna Trykozko,
Praktyki w ICM
2008-07-01
[ Pobierz całość w formacie PDF ]