Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałLongina Mysiak Został zmieniony 10 lat temu
1
KOMPUTEROWE WSPOMAGANIE PRAC BADAWCZYCH FORTRAN 90/95 – cz II Adam FIC INSTYTUT TECHNIKI CIEPLEJ
2
FORTRAN 90/95 Wyrażenia logiczne Operatory logiczne:.NOT..AND..OR..EQV. NEQV. Zapis wartości logicznych:.TRUE..FALSE.relacja Operatory relacji (w nawiasach obowiązujące w FORTRANie 77): (.GT.) >= (.GE.) == (.EQ.) /= (.NE.)
3
FORTRAN 90/95 Wyrażenia logiczne Przykład REAL a REAL *8 b INTEGER l,j LOGICAL a1, b1, c, p, q, z, y a = 2. b = 26. a1 =. FALSE. b1 =.FALSE. c =.TRUE. p =.FALSE. q =.TRUE. l = 0 j = 2 z = a == 3..AND. b <26 y = a1.OR. b1.OR. c.AND. (p.OR. q).AND. ( l <1.AND. j ==7)
4
FORTRAN 90/95 Wyrażenia tekstowe Operatory tekstowe: // Zapis wartości tekstowych: Przykład tekstu INTEGER i CHARACTER a, d CHARACTER*2 b CHARACTER*3 c CHARACTER*4 e a = k b = ot c = a // b d = CHAR(121) e = c // d i = ICHAR(a) d y c kot e koty i 107
5
FORTRAN 90/95 Instrukcje sterujące - instrukcje GO TO (skoku) 2. Wyliczana instrukcja skoku GO TO (1, 2, 4, 10, 21, 100), j ASSIGN 20 TO k GO TO k, (1, 3, 10, 20) GO TO (et1, et2, et3,......), wyr_całkowite ASSIGN et TO zm_integer GO TO zm_integer [,] (et1, et2, et3,.....) 3. Przypisana instrukcja skoku 1. Bezwarunkowe instrukcje skoku GO TO et Przykłady GO TO 20 GO TO zm_integer ASSIGN et TO zm_integerASSIGN 20 TO k GO TO k Instrukcje STOP [tekst lub liczba] RETURN CALL
6
FORTRAN 90/95 Instrukcje sterujące - instrukcje IF (jeśli) Postać 1 IF (wyr_logiczne) THEN instrukcje......... ELSE instrukcje........... ENDIF Postać 2 IF (wyr_logiczne) THEN instrukcje......... ENDIF T F T F Postać 3 IF (wyr_logiczne) instrukcja
7
FORTRAN 90/95 Instrukcje sterujące - instrukcje IF (jeśli) IF(delta < 0. ) THEN WRITE(*,*) 'Brak pierwiastkow rzeczywistych' ELSE x1=(-b-SQRT(delta))/2./a x2=(-b+SQRT(delta))/(2.*a) WRITE(*,*) 'Pierwiastki trojmianu wynosza' WRITE(*,*) 'x1=',x1 WRITE(*,*) 'x2=',x2 ENDIF STOP 1 IF(b*b-4*a*c) 1, 2, 2 2 x1=(-b-SQRT(delta))/2./a x2=(-b+SQRT(delta))/(2.*a) WRITE(*,*) 'Pierwiastki trojmianu wynosza' WRITE(*,*) 'x1=', x1 WRITE(*,*) 'x2=',x2 GO TO 3 1 WRITE(*,*) 'Brak pierwiastkow rzeczywistych' 3 STOP 4 IF(delta < 0. ) GO TO 1 x1=(-b-SQRT(delta))/2./a x2=(-b+SQRT(delta))/(2.*a) WRITE(*,*) 'Pierwiastki trojmianu wynosza' WRITE(*,*) 'x1=', x1 WRITE(*,*) 'x2=',x2 GO TO 2 ENDIF 1 WRITE(*,*) 'Brak pierwiastkow rzeczywistych' 2 STOP 3 IF(delta >= 0. ) THEN x1=(-b-SQRT(delta))/2./a x2=(-b+SQRT(delta))/(2.*a) WRITE(*,*) 'Pierwiastki trojmianu wynosza' WRITE(*,*) 'x1=', x1 WRITE(*,*) 'x2=',x2 STOP ENDIF WRITE(*,*) 'Brak pierwiastkow rzeczywistych' STOP 2
8
FORTRAN 90/95 Instrukcja sterująca - instrukcje CASE (wyboru) Postać [nazwa_instr:] SELECT CASE (zm) CASE(wart_zm1) blok instrukcji 1 CASE(wart_zm2) [nazwa_instr] blok instrukcji 2............................. CASE DEFAULT blok instrukcji spoza wymienionych wart_zm END SELECT Przykład SELECT CASE (i) CASE(1) a=1 CASE(2) a=2 CASE DEFAULT a=0 END SELECT Uwaga! Zmienna zm musi być INTEGER CHARACTER lub LOGICAL
9
FORTRAN 90/95 Instrukcje sterujące - instrukcje pętli (DO) Postać 1 [nazwa:] DO zm=wp, wk[, wsk] instrukcje................. [CYCLE nazwa pętli zewnętrznej]................. END DO [nazwa:] Postać 2 [nazwa:] DO instrukcje................. [CYCLE nazwa pętli zewnętrznej] IF(wyr_logiczne) EXIT END DO [nazwa:] Przykłady s=0. DO i=1,n s=s+x(i) ENDDO i=0 s=0. DO i=i+1 s=s+x(i) IF(i==n) EXIT ENDDO
10
FORTRAN 90/95 Instrukcje sterujące - instrukcja wywołania podprogramu (CALL) CALL nazwa_procedury [(par_akt1, par_akt2,..........)] [deklaracje] instrukcje................. [RETURN]................. SUBROUTINE nazwa_procedury [(par_form1, par_form2,..........)]nagłówek END [SUBROUTINE nazwa_procedury]koniec
11
FORTRAN 90/95 Instrukcje sterujące - instrukcja wywołania podprogramu (CALL) Przykłady PROGRAM pierw IMPLICIT NONE REAL a,b,c,delta,x1,x2 WRITE(*,*) 'Wczytaj wspolczynniki trojmianu READ(*,*) a,b,c delta=b*b-4.*a*c IF(delta<0.) THEN WRITE(*,*) 'Brak pierwiastkow rzeczywistych' ELSE x1=(-b-SQRT(delta))/2./a x2=(-b+SQRT(delta))/(2.*a) WRITE(*,*) 'Pierwiastki trojmianu wynosza' WRITE(*,*) 'x1=',x1 WRITE(*,*) 'x2=',x2 ENDIF STOP END PROGRAM pierw IMPLICIT NONE INTEGER k REAL a1,a2,a3,delta,t1,t2 WRITE(*,*) 'Wczytaj wspolczynniki trojmianu' READ(*,*) a1, a2, a3 CALL pierw_tr (a1, a2, a3, t1, t1, k) IF(k == 0) THEN WRITE(*,*) 'Brak pierwiastkow rzeczywistych' ELSE WRITE(*,*) 'Pierwiastki trojmianu wynosza' WRITE(*,*) 't1=',t1 WRITE(*,*) 't2=',t2 ENDIF STOP END SUBROUTINE pierw_tr (a, b, c, x1, x2, k) INTEGER k REAL a,b,c,delta,x1,x2 delta=b*b-4.*a*c IF(delta < 0.) THEN k=0 ELSE x1=(-b-SQRT(delta))/2./a x2=(-b+SQRT(delta))/(2.*a) k=1 ENDIF END
12
FORTRAN 90/95 Definicja i wywołanie segmentów FUNCTION [deklaracje] instrukcje................. nazwa_funkcji = wyrażenie [RETURN]................. [dekl_typu] FUNCTION nazwa_funkcji [(par_form1, par_form2,..........)]nagłówek END [FUNCTION nazwa_funkcji]koniec zm = wyr_pr op nazwa_funkcji [(par_akt1, par_akt2,..........)] Podprogramy lokalne: CONTAINS Definicja podprogramu (ów) Wersja 1 Łączniki: INTERFACE Nagłówek segmentu 1 Deklaracje Zakończenie segmentu 1.......................................... END INTEFACE
13
FORTRAN 90/95 Definicja i wywołanie segmentów FUNCTION [deklaracje] instrukcje................. w = wyrażenie [RETURN]................. [dekl_typu] FUNCTION nazwa_funkcji [(par_form1, par_form2,..)] RESULT (w)nagłówek END [FUNCTION nazwa_funkcji] koniec zm = wyr_pr op nazwa_funkcji [(par_akt1, par_akt2,..)] Wersja 2
14
FORTRAN 90/95 Segmenty FUNCTION - przykład PrzykładObliczyć y = 1. * silnia(n+k) / silnia(k+2) z = f(y) ! f –zdefiniowana funkcja CONTAINS FUNCTION f(x) REAL f,x f = SQRT(x) + x END FUNCTION END INTEGER FUNCTION silnia (m) INTEGER m,i,ns ns = 1 DO i = 1, m ns = ns * i END DO silnia = ns END
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.