Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałKarol Lutyński Został zmieniony 11 lat temu
1
Wyrażenia Wyrażenie w Fortranie jest poprawną syntaktycznie kombinacją zmiennych, stałych, operatorów i funkcji. Wyrażenia są jednozdaniowymi przepisami na obliczanie/tworzenie jakichś wartości. Typy wyrażeń: arytmetyczne logiczne łańcuchowe Przykłady wyrażeń: 2.0+sqrt(x**3)+log(x) ! Wyrażenie arytmetyczne A1.GT. A2.OR. DELTA.LT. 0 ! Wyrażenie logiczne 3HAla//1H //ma kota ! Wyrażenie łańcuchowe
2
Operatory działają na operandy Unarne (jeden operand) Binarne (dwa operandy) Arytmetyczne (4 działania ) Relacyjne (dla liczb lub dla łańcuchów) Logiczne Bitowe Łańcuchowe Operatory w Fortranie
3
Wynik operacji binarnej ma zawsze typ najwyższy z typów operandów np. operandy typów REAL*8 i INTEGER dają REAL*8 W przypadku typów liczbowych mamy hierarchię INTEGER<REAL<COMPLEX Hierarchia operandu tego samego typu jest tym wyższa im więcej bajtów zajmuje operand np. INTEGER*1 < INTEGER*2 < INTEGER*4)
4
Operatory arytmetyczne (operandy muszą być INTEGER, REAL lub COMPLEX) OperatorZnaczenie -azmiana znaku a+bdodawanie a-bodejmowanie a*bmnożenie a/b Dzielenie albo dzielenie całkowite jeżeli oba operandy są INTEGER a**bPodnoszenie a do potęgi b Priorytet: **>*>+/->zmiana znaku
5
Niektóre użyteczne funkcje arytmetyczne ABS(X)|X| MAX(X1,X2,…)Największa spośród X1,X2,… MIN(X1,X2,…) MOD(X1,X2)Reszta z dzielenia całkowitego SIGN(X1,X2)Przeniesienie znaku z X2 na X1: |X1|*sign(X2) SQRT(X) SIN(X)sin(X) COS(X)cos(X) TAN(X)tg(X) ASIN(X)arcsin(X) ACOS(X)arccos(X) ATAN(X)arctan(X) ATAN2(X,Y)arctan(X/Y) LOG(X)ln(X) LOG10(X)log 10 (X)
6
Użycie nazw funkcji podanych w tabelce jest na ogół bezpieczne ponieważ typ funkcji dostosowuje się do najwyższego typu argumentu; np. SIN(1.0d0) automatycznie zostanie obliczony dla argumentu podwójnen precyzji. Dla przejrzystości i przenaszalności warto jednak uwzględniać typ funkcji: 1.Obowiązuje reguła pierwszej litery, czyli MIN jest typu INTEGER a SIN REAL. 2.Jeżeli funkcja o nazwie zaczynającej się na [I-N] ma być REAL to dodajemy na początku A, np. AMIN. Podobnie, dodanie I na początku nazwy nie zaczynającej się na [I-N] implikuje typ INTEGER (np. IABS zamiast ABS). 3.Jeżeli funkcja ma być podwójnej precyzji, dodajemy D, np. DSQRT. 4.Dla COMPLEX lub DOUBLE COMPLEX dodajemy odpowiednio C lub CD, np. CSQRT lub CDSQRT.
7
Przepełnienia, niedomiary, nieokreśloności WyjątekWynik Nadmiar np. 1.0D+100*1.0D+300 Inf lub –Inf (Infinity) Niedomiar np. 1.0D-100*1.0D-300 0.0 Niedozwolone działanie np. SQRT(-1.0d0) NaN (Not a Number)
8
Operatory relacyjne X.GT.Y lub X>YWiększe niż X.LT.Y lub X<YMniejsze niż X.EQ.Y lub X==YRówne X.GE.Y lub X>=YWiększe lub równe X.LE.Y lub X<=YMniejsze lub równe X.NE.Y lub X/=YRóżne Operandy muszą być typów REAL lub INTEGER. Wynik działania operatora relacyjnego jest typu LOGICAL
9
Operatory logiczne.NOT.APrzeczenie A.AND.BKoniunkcja A.OR.BAlternatywa A.EQV.BRównoważność A.NEQV.BNierównoważność Operandy muszą być typu LOGICAL. Priorytet:.NOT. >.AND. > OR. >.EQV. =.NEQV.
10
Operatory łańcuchowe S1//S2Konkatenacja (łączenie) łańcuchów S1 i S2 S(n:) S(:n) S(n1:n2) Tworzenie podłańcucha S od pozycji n do końca Tworzenie podłańcucha S od pozycji 1 do n. Tworzenie podłańcucha S od pozycji n1 do n2.
11
Instrukcja podstawienia (przypisania) zmienna=wyrażenie Typ zmiennej musi być zgodny z typem wyrażenia, którego wartość jest przypisywana do tej zmiennej. Jeżeli zmienna jest typu niższego, niż wartość wyrażenia następuje konwersja to typu niższego; w przeciwnym wypadku do typu wyższego, np: I=SQRT(2.0) wynik: 1 X=2*3wynik: 6.0 X=(1.0,2.0)wynik: 1.0 Należy unikać pułapek, np.: X=2/3wynik: 0.0 (bo dzielenie liczb całkowitych jest dzieleniem całkowitym)
12
Kompilacja programu przy użyciu g77 (Gnu Fortran) f77 [opcje] [-o plik_wynikowy] pliki_wejściowe g77 [opcje] [-o plik_wynikowy] pliki_wejściowe Pliki wejściowe: Pliki źródłowe w Fortranie 77 (rozszerzenie.f lub.for) Pliki źródłowe w Fortranie 77 zawierające metakomendy dla kompilatora (rozszerzenie.F) Pliki w języku c lub C++ (rozszerzenia.c lub.C) Pliki w języku asemblera (rozszerzenie.s) Pliki zawierające moduły relokowalne w kodzie maszynowym Pliki wejściowe wymienia się jednym ciągiem po odstępach.
13
Typy plików wynikowych: Bez opcji: moduł wykonywalny (z atrybutem x); jeżeli nie podamy jego nazwy po –o nazywa się a.out Przykład:f77 –o hello hello.f Z opcją –c: moduł relokowalny; domyślnie nazywa się plik.o jeżeli plik źródłowy nazywał się plik.f Przykład:f77 –c hello.f Z opcją –s: tłumaczenie na język asemblera; domyślnie nazywa się plik.s jeżeli plik źródłowy nazywał się plik.f Przykład: f77 –S hello.f
14
Użyteczne opcje: -g wstawiana jest informacja ułatwiająca odrobaczenie programu -fbounds-checksprawdzanie indeksów tablic -ctylko kompilacja i asemblowanie -stylko kompilacja do języka asemblera -Etylko implementacja dyrektyw dla preprocesora --helpwydruk krótkiego samouczka
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.