Elementy programu w jzyku FORTRAN Znaczenie FORTRAN 77
- Slides: 23
Elementy programu w języku FORTRAN Znaczenie FORTRAN 77 Onaczenie w Fortranach FORTRAN 95 FORTRAN 77 FORTRAN 95 Program główny PROGRAM Bez oznaczenia Podprogram SUBROUTINE Funkcja FUNCTION Obszar wspólny Blok danych Moduł COMMON BLOCK DATA MODULE
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)
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
Zapis źródła programu w Fortranie 77 i niższych Kolumy kontynuacja etykieta 7 -72 73 -80 Tekst instrukcji lub deklaracji komentarz 1 -5 6
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(a 1(i, i)) enddo do i=1, n write (iout, '(2 hx(, i 2, 2 h)=, 1 pe 15. 5, 2 h (, 1 pe 15. 5, 1 h))') & 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(0 d 0)) : : 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. 0 d 0, 20. 0 d 0) y=ran_number(0. 0 d 0, 20. 0 d 0) z=ran_number(0. 0 d 0, 20. 0 d 0) write (liczba, '(bz, i 3. 3)') i write (11, 10) 1, 'C'//liczba(3: 3), ' ', i, x, y, z enddo write (11, '(a)') 'TER' enddo 10 format('ATOM', I 7, 2 x, a 3, 1 x, A 3, I 6, 4 X, 3 F 8. 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. 05 e+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 FORTRAN 77 FORTRAN 95 Zakres wartości INTEGER*1 BYTE INTEGER(KIND=1) BYTE [-128, 127] INTEGER*2 INTEGER(KIND=2) [-32768, 32767] INTEGER*4 INTEGER(KIND=4) [-2147483648, 2147483647] 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’EEEA 01’, -Z’ 123 E’
Typ REAL Najmniejsza Największa Liczba wartość dodatnia dopuszczalne dziesiętnych różna od 0 wartość dodatnia cyfr znaczących (TINY) (HUGE) FORTRAN 77 FORTRAN 95 REAL*4 REAL(KIND=4) REAL 1. 175494 E-38 3. 402823 E+38 7 REAL*8 DOUBLE PRECISION REAL(KIND=8) 2. 225074 D-308 1. 797693 D+308 15 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 * 2 cecha
Zapis liczb rzeczywistych Stałopozycyjny: np. 1234. 5, -2345. 5677 Zmiennopozycyjny: np. 1. 235 E+12, -. 235 E-20 0. 2345 D-20
Typ COMPLEX FORTRAN 77 FORTRAN 95 COMPLEX*4 COMPLEX(KIND=4) COMPLEX*8 DOUBLE COMPLEX(KIND=8) DOUBLE COMPLEX
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. 0 E 0, 3. 5 E 0)
Typ LOGICAL FORTRAN 77 FORTRAN 95 LOGICAL*1 BYTE LOGICAL(KIND=1) BYTE LOGICAL*2 LOGICAL(KIND=2) LOGICAL*4 LOGICAL(KIND=4) Zapis: . TRUE. , . FALSE. albo T, F. Zakres wartości . TRUE. . FALSE.
Typ CHARACTER FORTRAN 77 CHARACTER*1 CHARACTER*n FORTRAN 95 Reprezentacja CHARACTER(1) ‘x’, “x” x jest znakiem 1 Hx CHARACTER(n) ‘xxxx…x’ “xxxx…x” n. Hxxxx…x Łańcuch tekstowy n jest długością łańcucha zapis z H: stała Holleritha
Deklaracje typów zmiennych lub stałych <typ> nazwa_zmiennej 1, nazwa_zmiennej 2, … 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 (nazwa 1=wartość1, nazwa 2=wartość2, …) Np. PARAMETER (max_number_of_atoms=1000) PARAMETER (stala_plancka=6. 626 D-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
- Ratujemy i uczymy ratować cele programu
- Ugdymo turinio atnaujinimas
- Sprawozdanie z programu wychowawczo-profilaktycznego
- Osnove rada u programu prikupljanje i unos podataka
- Etapy tworzenia programu
- Narzędzia programu paint
- Budowa sosny
- Znaczenie gospodarcze zbóż
- Rola drzew w przyrodzie
- Eliza znaczenie
- Puszka pandory znaczenie mitologiczne
- Neurodydaktyka definicja
- Siodełko u dżdżownicy
- Moutza gest
- Znaczenie zawodoznawstwa
- Pierścień atlantów zagrożenia duchowe
- Synergizm addycyjny
- Yandexü
- Znaczenie rodziny w życiu człowieka
- Znaki ekologiczne dla dzieci
- Znaki i symbole chrztu
- Krzyż trójlistny znaczenie
- Regulamin poruszania się po drogach
- Gbki