230 likes | 355 Views
Elementy programu w języku FORTRAN. Elementy segmentów w języku FORTRAN. Instrukcje czynne Instrukcja przypisania (arytmetyczna, logiczna, ASSIGN) Instrukcje wejścia/wyjścia (READ, WRITE, operacje na plikach) Instrukcja warunkowa (prosta IF i złożona IF..THEN…ELSE…ENDIF)
E N D
Elementy segmentów w języku FORTRAN • Instrukcje czynne • Instrukcja przypisania (arytmetyczna, logiczna, ASSIGN) • Instrukcje wejścia/wyjścia (READ, WRITE, operacje na plikach) • Instrukcja warunkowa (prosta IF i złożona IF..THEN…ELSE…ENDIF) • Instrukcje skoku (zwykła, obliczona i wyznaczona GO TO) • Instrukcje pętli (DO, DO…WHILE, DO…WHERE) • Instrukcja wyboru (CASE, tylko Fortran 95) • Instrukcja odwołania do podprogramu (CALL) • Instrukcja zakończenia (STOP) • Instrukcja powrotu z podprogramu (RETURN)
Deklaracje (instrukcje bierne, dyrektywy) • Deklaracja typu (INTEGER, REAL, LOGICAL, COMPLEX, CHARACTER) • Deklaracja stałych (PARAMETER) • Deklaracja obszaru wspólnego (COMMON) • Deklaracja etykiety • Dyrektywa reguł nazw typów zmiennych (IMPLICIT) • Deklaracja (dyrektywa) FORMAT • Dyrektywa inicjalizacji (DATA) • Dyrektywa uwspólniania tablic (EQUIVALENCE)
Komentarze Komentarzem jest tekst nieinterpretowalny przez kompilator, stanowiący informację dla użytkownika. Zarówno w Fortranie 77 jak i Fortranie 95 rozpoczyna się od wykrzyknika, np. ! To jest komentarz a=0.0 ! Zeruję zmienną a W Fortranie 77 komentarz stanowi również tekst w linii zaczynającej się od C lub c w pierwszej kolumnie (w niższych wersjach Fortranu była to jedyna możliwość), albo gwiazdką w pierwszej kolumnie, np.: C Dalej leci tekst programu * To jest inny komentarz
Uwaga! W większości kompilatorów Fortranu 77 na ogół istnieje opcja rozszerzająca pole tekstu instrukcji do 132 kolumny. Fragment programu w Fortranie 77 program fit implicit real*8 (a-h,o-z) parameter (nmax=200) C Tekst wycięty 10 rmsd=sqrt(sum/(npoint-n)) do i=1,n std(i)=rmsd*sqrt(a1(i,i)) enddo do i=1,n write (iout,'(2hx(,i2,2h)=,1pe15.5,2h (,1pe15.5,1h))') & i,x(i),std(i) enddo
Zapis źródła programu w Fortranie 95 (swobodny format linii) <etykieta> tekst instrukcji Nie ma żadnych ograniczeń co do długości linii <etykieta> część tekstu instrukcji & kontynuacja tekstu & … koniec tekstu instrukcji
Fragment programu w Fortranie 95 use vparam use generic_ran_num implicit none integer :: i,isample,iseed real(kind(0d0)) :: x,y,z character(3) :: liczba write (*,'(a,$)') 'iseed ',iseed read (*,*) iseed call vrndst(-iabs(iseed)) do isample=1,1000 do i=1,130 x=ran_number(0.0d0,20.0d0) y=ran_number(0.0d0,20.0d0) z=ran_number(0.0d0,20.0d0) write (liczba,'(bz,i3.3)') i write (11,10) 1,'C'//liczba(3:3), ' ',i,x,y,z enddo write (11,'(a)') 'TER' enddo 10 format('ATOM',I7,2x,a3,1x,A3,I6,4X,3F8.3) stop end
Rodzaje znaków w Fortranie • Fortran używa znaków ASCII • Litery: [A-Z] i [a-z] oraz $. Można używać dużych i małych liter ale duże litery są nieodróżnialne od małych, z wyjątkiem łańcuchów tekstowych. • Cyfry: [0-9] (uwaga: w reprezentacji szestnastkowej do cyfr zalicza się też [A-E] • Pozostałe znaki łącznie z odstępem, znakiem nowej linii, itp.
Elementy tekstu kodu źródłowego w Fortranie • Słowa kluczowe (np. REAL, IF, DO) • Literały: ciągi znaków reprezentujące wartości typów prostych (np. 1, 3.05e+5, .TRUE., “Ala ma kota”) • Operatory (np. +, -, .AND.) • Identyfikatory typów, stałych i zmiennych: dowlone ciągi liter i cyfr zaczynające się od litery.
Typy danych: • Proste • Złożone (definiowane przez użytkownika; rozszerzenia Fortranu 77 i Fortran 95. • Proste typy danych: • INTEGER (całkowity) • REAL (rzeczywisty) • COMPLEX (zespolony) • LOGICAL (logiczny) • CHARACTER (znakowy)
Typ INTEGER Pogrubienie wskazuje domyślny rodzaj typu INTEGER W Fortranie 95 “KIND=“ można pominąć i pisać np. INTEGER(2)
Zapis liczb typu INTEGER Dziesiętny: np. 1235, -23987 Dwójkowy: np. B”10001001”, -B’111100011’ Ósemkowy: np. O’7777777’, -O’4442777777’ Szesnastkowy: np. Z’EEEA01’, -Z’123E’
Typ REAL Jeżeli liczba jest co do modułu większa od HUGE, zastępowana jest przez stałą ±Inf a jeżeli jest mniejsza od TINY, jest zastępowana zerem.
Reprezentacja maszynowa liczb rzeczywistych s – bit znaku e – bity cechy f – bity mantysy liczba = s manstysa * 2cecha
Zapis liczb rzeczywistych Stałopozycyjny: np. 1234.5, -2345.5677 Zmiennopozycyjny: np. 1.235E+12, -.235E-20 0.2345D-20
Reprezentacja i zapis liczb typu COMPLEX Liczby typu COMPLEX składają się z częśći rzeczywistej i urojonej; do każdej z nich stosują się reguły reprezentacji i zapisu liczb rzeczywistych. Tak zapisujemy liczby typów COMPLEX w Fortranie: a+ib=(a,b) Np. 2.0+i*3.5=(2.0E0,3.5E0)
Typ LOGICAL Zapis: .TRUE., .FALSE. albo T, F.
Deklaracje typów zmiennych lub stałych <typ> nazwa_zmiennej1,nazwa_zmiennej2,… np. INTEGER i,j,k,l,n_atoms DOUBLE PRECISION promien CHARACTER*16 nazwa_pliku Zmiennym można nadawać wartości początkowe przy ich deklaracji: INTEGER n_atoms /100/,n_molekul /3/ CHARACTER*16 nazwa_pliku /’moj_plik.txt’/
Deklaracje stałych PARAMETER (nazwa1=wartość1,nazwa2=wartość2,…) Np. PARAMETER (max_number_of_atoms=1000) PARAMETER (stala_plancka=6.626D-34)
Reguła pierwszej litery Jeżeli zmienna lub stała nie jest zadeklarowana bezpośrednio, to obowiązuje reguła pierwszej litery nazwy: Nazwy zaczynające się od I,J,K,L,M,N: INTEGER Pozostałe: REAL Można to zmienić przy pomocy dyrektywy IMPLICIT (musi być pierwszą dyrektywą programu lub segmentu): IMPLICIT NONE – anulowanie reguły pierwszej litery; deklarujemy wszystko IMPLICIT REAL*8 (A-H,O-Z) – domyślnym typem zmiennych lub stałych zaczynających się od tej litery jest typ podwójnej precyzji