Modelowanie Procesów Jądrowych

Podobne dokumenty
Algorytmika i Programowanie VBA 1 - podstawy

Wprowadzenie do programowania w języku FORTRAN

Visual Basic for Application (VBA)

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wprowadzenie do programowania w VBA

Podstawy Programowania Podstawowa składnia języka C++

Programowanie komputerowe. Zajęcia 1

Podstawy programowania C. dr. Krystyna Łapin

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy programowania skrót z wykładów:

Zmienne, stałe i operatory

1 Podstawy c++ w pigułce.

2 Przygotował: mgr inż. Maciej Lasota

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Visual Basic for Application (VBA)

Podstawy programowania w języku C

Visual Basic for Application (VBA)

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Fortran 90/95 wykład 1

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Mikrokontroler ATmega32. Język symboliczny

Wstęp do programowania

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Struktura pliku projektu Console Application

Elementy języków programowania

1 Podstawy c++ w pigułce.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Fortran90 (oraz FORTRAN77) ekspresowo 1

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Programowanie strukturalne i obiektowe

Język C zajęcia nr 11. Funkcje

Proste programy w C++ zadania

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Język ludzki kod maszynowy

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Wstęp do Programowania, laboratorium 02

Wstęp do programowania

Podstawy Programowania C++

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Warunki logiczne instrukcja if

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Cw.12 JAVAScript w dokumentach HTML

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Wstęp do programowania. Różne różności

Instrukcje podsumowanie. Proste: - przypisania - wejścia-wyjścia (read, readln, write, writeln) - pusta - po prostu ; (średnik) Strukturalne:

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Języki Programowania. Elementy języków programowania. Wojciech Sobieski

Właściwości i metody obiektu Comment Właściwości

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Języki formalne i techniki translacji

Instrukcje sterujące. Programowanie Proceduralne 1

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Języki programowania zasady ich tworzenia

Część 4 życie programu

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Procedury i funkcje. Programowanie komputerowe

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Programowanie Delphi obliczenia, schematy blokowe

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

MATERIAŁY DO ZAJĘĆ II

C++ wprowadzanie zmiennych

Pascal - wprowadzenie

Jerzy Nawrocki, Wprowadzenie do informatyki

Wykład z Technologii Informacyjnych. Piotr Mika

Odczyt danych z klawiatury Operatory w Javie

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie w języku Python. Grażyna Koba

Instrukcja standardowa Writeln

3. Instrukcje warunkowe

3 Przygotował: mgr inż. Maciej Lasota

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

Automatyzacja pracy w AutoCAD

Transkrypt:

Modelowanie Procesów Jądrowych Wykład 1: Wstęp do programowania w języku FORTRAN WF PW Warszawa, dn. 01.03.2010r. 1

Źródła: http://www.chem.ug.edu.pl/~adam/fortran/index.html R.K. Kott, K. Walczak. Programowanie w języku Fortran 77, WNT, Warszawa, 1991. (FORTRAN 77) D. Chrobak. FORTRAN, praktyka programowania. MIKOM, Warszawa, 2003. (FORTRAN 95) W. Pachelski. Programowanie strukturalne: Fortran 77 dla IBM PC, WNT, Warszawa 1993. (FORTRAN 77) WF PW Warszawa, dn. 01.03.2010r. 2

Fortran Fortran: FORmula TRANslator Pierwszy język programowania wysokiego poziomu Pierwsza wersja powstała w latach 1954-1957, opracowana na IBM 704 Lata 80-te XX wieku: FORTRAN77 Lata 90-te XX wieku: FORTRAN95 WF PW Warszawa, dn. 01.03.2010r. 3

Struktura programu w Fortranie 77 Elementy programu: Program główny (bez oznaczenia) Procedura (SUBROUTINE) Funkcja (FUNCTION) Obszar wspólny (COMMON) Blok danych (BLOCK DATA) WF PW Warszawa, dn. 01.03.2010r. 4

Zapis programu (1-6) (7-72) (73-80) WF PW Warszawa, dn. 01.03.2010r. 5

Komentarze W Fortranie 77 komentarz może rozpoczynać się od wykrzyknika:! To jest komentarz a=5.5! Zmiennej a przypisuję wartość 5.5 Komentarzem jest również linia zaczynająca się od litery C (lub c) albo gwiazdki w pierwszej kolumnie, np.: C To jest jakiś komentarz * To jest jakiś inny komentarz WF PW Warszawa, dn. 01.03.2010r. 6

Typy danych W Fortranie wyróżniamy 6 typów danych: INTEGER (całkowity) REAL (rzeczywisty) DOUBLE PRECISION (podwójnej precyzji) COMPLEX (zespolony) LOGICAL (logiczny) CHARACTER (znakowy) WF PW Warszawa, dn. 01.03.2010r. 7

INTEGER typ całkowity Na wartościach całkowitych można wykonywać następujące operacje: dodawanie (+), odejmowanie (-), mnożenie(*), dzielenie całkowite z odrzuceniem reszty (/), potęgowanie (**). Przykład: Stałe: 5, -170, itp. Wyrażenia: 2*2+5 (ma wartość 9) 5/2 (ma wartość 2) 1/6 (ma wartość 0) WF PW Warszawa, dn. 01.03.2010r. 8

REAL typ rzeczywisty Operacje jak na wartościach całkowitych, ale: wynik jest liczbą rzeczywistą, przy dzieleniu nie odrzuca się reszty. Przykład: Stałe: 15.34, 3.1415, 4.75E+3, itp. Wyrażenia: 8.4/2.0 (ma wartość 4.2) -5/2.0 (ma wartość -2.5) Uwaga: 7 a 7.0! WF PW Warszawa, dn. 01.03.2010r. 9

DOUBLE PRECISION typ rzeczywisty podwójnej precyzji Stałe i zmienne DOUBLE PRECISION są to obiekty reprezentowane z dwa razy większą dokładnością niż analogiczne obiekty typu rzeczywistego. Są stosowane tam, gdzie wymaga się wysokiej dokładności obliczeń. Wykładnik podwójnej precyzji jest oznaczony literą D. Przykład: Stałe: 3.34D-2, -0.87D+5, itp. WF PW Warszawa, dn. 01.03.2010r. 10

CHARACTER typ znakowy Wartości typu znakowego reprezentują ciągi (łańcuchy) znaków. Operator konkatenacji: // Przykłady: Stałe: np. Ala ma kota Wyrażenia: Bolek // i // Lolek (wynik: Bolek i Lolek ) WF PW Warszawa, dn. 01.03.2010r. 11

Reprezentacja i zapis liczb typu COMPLEX Liczby typu COMPLEX składają się z części rzeczywistej i urojonej. Do każdej z nich stosują się reguły reprezentacji i zapisu liczb rzeczywistych. Przykład: Stałe typu zespolonego (42, 31), (-1.35, 1.45E2) WF PW Warszawa, dn. 01.03.2010r. 12

Deklaracje typów zmiennych <typ> nazwa_zmiennej1, nazwa_zmiennej2, Przykład: INTEGER ile, j, k, licznik DOUBLE PRECISION promien CHARACTER*15 imie, nazwisko *20 Zmiennym można nadawać wartości początkowe przy ich deklaracji: INTEGER ile /100/, k /3/ CHARACTER*15 imie / Izydor / WF PW Warszawa, dn. 01.03.2010r. 13

Deklaracje stałych PARAMETER (nazwa1=wartość1,nazwa2=wartość2, ) Przykład: PARAMETER (maximum=1000) PARAMETER (pi=3.1415) WF PW Warszawa, dn. 01.03.2010r. 14

Deklaracja zmiennych - reguła pierwszej litery Jawne określenie typu specyfikacja typu: INTEGER A, licznik REAL suma, iks CHARACTER *4 id1, id2, osiem *8, trzy *3 Jeżeli zmienna lub stała nie jest zadeklarowana bezpośrednio, to obowiązuje reguła pierwszej litery nazwy: Nazwy zaczynające się od liter I,J,K,L,M,N są typu INTEGER Pozostałe: REAL Przykład: delta, i, ilosc, suma, numer, x, y WF PW Warszawa, dn. 01.03.2010r. 15

Typ implikowany Dyrektywa IMPLICIT służy do zmiany tradycyjnej konwencji fortranowskiej. Musi być ona pierwszą dyrektywą programu lub segmentu! IMPLICIT typ(zakres_liter) Przykład: IMPLICIT REAL*8 (A-H,O-Z) domyślnym typem zmiennych lub stałych zaczynających się od tej litery będzie typ podwójnej precyzji IMPLICIT NONE anulowanie reguły pierwszej litery; deklarujemy wszystko WF PW Warszawa, dn. 01.03.2010r. 16

Operatory arytmetyczne Operator Znaczenie -a zmiana znaku a+b a-b a*b a/b a**b dodawanie odejmowanie mnożenie Dzielenie albo dzielenie całkowitej, jeżeli oba operandy są typu INTEGER Podnoszenie a do potęgi b WF PW Warszawa, dn. 01.03.2010r. 17

Przykłady wbudowanch funkcji arytmetycznych Funkcja Działanie ABS(X) MAX(X1,X2, ) MIN(X1,X2, ) MOD(X1,X2) moduł X Wartość największa ze zbioru X 1,X 2, Wartość najmniejsza ze zbioru X 1,X 2, Reszta z dzielenia całkowitego SIGN(X1,X2) Przeniesienie znaku z X 2 na X 1 : X 1 *sign(x 2 ) SQRT(X) SIN(X) COS(X) pierwiastek(x) sinus(x) cosinus(x) WF PW Warszawa, dn. 01.03.2010r. 18

Funkcje wbudowane c.d. Funkcja Działanie TAN(X) ASIN(X) ACOS(X) ATAN(X) ATAN2(X,Y) LOG(X) LOG10(X) tangens(x) arcsin(x) arccos(x) arctan(x) arctan(x/y) logarytm naturalny(x) log 10 (X) WF PW Warszawa, dn. 01.03.2010r. 19

Operatory relacyjne Operator X.GT.Y X.LT.Y X.EQ.Y X.GE.Y X.LE.Y X.NE.Y Znaczenie Większe niż Mniejsze niż Równe Większe lub równe Mniejsze lub równe Różne WF PW Warszawa, dn. 01.03.2010r. 20

Operatory logiczne Operator.NOT.A A.AND.B A.OR.B A.EQV.B A.NEQV.B Znaczenie Negacja (Przeczenie) Iloczyn logiczny (Koniunkcja) Suma logiczna (Alternatywa) Równoważność (Tożsamość) Nierównoważność WF PW Warszawa, dn. 01.03.2010r. 21

Operatory łańcuchowe Operator S1//S2 Znaczenie Konkatenacja (łączenie) łańcuchów S1 i S2 WF PW Warszawa, dn. 01.03.2010r. 22

Instrukcja przypisania zmienna=wyrażenie Wartości arytmetyczne Przykład: I=SQRT(2.0) wynik: 1 X=2*3 wynik: 6.0 Y=(1.0,2.0) wynik: 1.0 Uwaga: Z=2/3 wynik: 0.0 (bo dzielenie liczb całkowitych jest dzieleniem całkowitym!) c.d.n WF PW Warszawa, dn. 01.03.2010r. 23

Instrukcja przypisania c.d. Wartości znakowe Przykład: CHARACTER *8 imie, nazwisko, cos *3 imie= Jan (wynik: imie ma wartość Jan ) nazwisko= Kowalski (wynik: nazwisko ma wartość Kowalski ) cos= ABCDEFGH (wynik: cos ma wartość ABC ) WF PW Warszawa, dn. 01.03.2010r. 24

Zmienne indeksowane Dwa sposoby deklarowania tablic: DIMENSION nazwa([n1:] m1,[n2:] m2,,[nx:] mx) typ nazwa([n1:] m1,[n2:] m2,,[nx:] mx) Przykład: tu: (n1<m1), (n2<m2), są parami granicznymi czyli zakresami danego indeksu PARAMETER (Max=100) DIMENSION INDEKS(12), XYZ(3, 0:Max) Inny sposób (równoczesna deklaracja typu i tablicy): INTEGER INDEKS(12) REAL XYZ(3, 0:Max) CHARACTER*16 NAZWA(0:Max) WF PW Warszawa, dn. 01.03.2010r. 25

Reprezentacja tablic fortranowskich w pamięci Elementy tablicy są ułożone kolumnami (kolejność leksykograficzna) DIMENSION T(5,4) T(1,1) T(1,1) T(1,2) T(1,3) T(1,4) T(2,1) T(2,2) T(2,3) T(2,4) T(3,1) T(3,2) T(3,3) T(3,4) T(4,1) T(4,2) T(4,3) T(4,4) T(5,1) T(5,2) T(5,3) T(5,4) T(2,1) T(3,1) T(4,1) T(1,2). T(4,4) T(5,4) WF PW Warszawa, dn. 01.03.2010r. 26

Odwołania do tablic Przypisanie do elementu tablicy: A(I,J)=10 Wykorzystanie wartości elementu tablicy: Z=SQRT(X(I)**2+Y(I)**2) PRINT *, X(I), Y(I), Z(I) WF PW Warszawa, dn. 01.03.2010r. 27

Czytanie i wypisywanie danych Czytanie danych: READ (*,*) zmienna1, zmienna2 Wypisywanie danych: WRITE(*,*) ZMIENNA=, X PRINT *, X WF PW Warszawa, dn. 01.03.2010r. 28

Instrukcja warunkowa prosta IF (wyrażenie_logiczne) instrukcja Instrukcja (zawsze jedna) jest wykonywana jeżeli wyrażenie_logiczne przyjmuje wartość.true. Przykład: IF (DELTA.LT. 0.0) PRINT *, Brak pierwiastkow rzeczywistych WF PW Warszawa, dn. 01.03.2010r. 29

Blokowa instrukcja warunkowa IF (wyrażenie_logiczne) THEN Instrukcja_1 Instrukcja_2 Instrukcja_n ENDIF Blok instrukcji między IF and ENDIF jest wykonywany jeżeli wyrażenie_logiczne przymuje wartość.true. Przykład: WF PW Warszawa, dn. 01.03.2010r. 30

Instrukcja warunkowa złożona IF (wyrażenie_logiczne_1) THEN Blok_Instrukcji_1 ELSE IF (wyrażenie_logiczne_2) THEN Blok_Instrukcji_2 [ELSE] Blok_instrukcji_x ENDIF WF PW Warszawa, dn. 01.03.2010r. 31

If Then Else - przykład WF PW Warszawa, dn. 01.03.2010r. 32

Arytmetyczna instrukcja IF IF (wyrażenie_arytmetyczne) etykieta_1,etykieta_2,etykieta_3 Do instrukcji oznaczonej odpowiednią etykietą skacze się gdy: Przykład: etykieta_1: wyrażenie_arytmetyczne<0 etykieta_2: wyrażenie_arytmetyczne=0 etykieta_3: wyrażenie_arytmetyczne>0 WF PW Warszawa, dn. 01.03.2010r. 33

Bezwarunkowa instrukcja skoku GO TO etykieta Przykład: GO TO 100 100 WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych, ani do wnętrza pętli. WF PW Warszawa, dn. 01.03.2010r. 34

Instrukcja skoku GO TO (etykieta_1,etykieta_2,,etykieta_n), wyrażenie_arytmetyczne Przykład: WF PW Warszawa, dn. 01.03.2010r. 35

Instrukcja CONTINUE Ma ona postać: CONTINUE Instrukcja pusta CONTINUE nic nie robi. Efektem jej wykonania jest przejście do kolejnej linii programu. Najczęściej jest używana jako ostatnia instrukcja pętli. Przykład: WF PW Warszawa, dn. 01.03.2010r. 36

Instrukcja pętli z licznikiem DO etykieta zmienna=start, koniec [,przyrost] instrukcja_1 instrukcja_2 instrukcja_n etykieta CONTINUE Przykład: lub: WF PW Warszawa, dn. 01.03.2010r. 37

Struktura segmentu podprogramu SUBROUTINE nazwa (lista_parametrów_formalnych) Deklaracje Instrukcje (ciało podprogramu) RETURN END WF PW Warszawa, dn. 01.03.2010r. 38

Instrukcje RETURN i STOP Instrukcja powrotu z podprogramu: RETURN Wykonanie instrukcji RETURN powoduje powrót z podprogramu lub funkcji. Instrukcja zatrzymania programu: STOP Wykonanie instrukcji STOP powoduje natychmiastowe zakończenie wykonywania programu. WF PW Warszawa, dn. 01.03.2010r. 39

Wywołanie podprogramu CALL Nazwa_procedury(lista_parametrów_aktualnych) Uwaga: Jeżeli podprogram nie ma parametrów to w deklaracji, ani wywołaniu, nie ma nawiasów: SUBROUTINE Nazwa_procedury CALL Nazwa_procedury WF PW Warszawa, dn. 01.03.2010r. 40

Struktura funkcji zewnętrznej [typ] FUNCTION nazwa (lista_parametrów_formalnych) Deklaracje Instrukcje (ciało funkcji) nazwa = wyrażenie RETURN END WF PW Warszawa, dn. 01.03.2010r. 41

Wywoływanie funkcji zewnętrznej zmienna = FUN(lista_parametrów_aktualnych) Uwaga: Nawiasy muszą być wpisane nawet jeżeli funkcja nie ma żadnych parametrów! Przykład: FUNCTION FUN() Z=FUN() WF PW Warszawa, dn. 01.03.2010r. 42

Przykład procedury WF PW Warszawa, dn. 01.03.2010r. 43

Przykład równanie kwadratowe WF PW Warszawa, dn. 01.03.2010r. 44

Powrót alternatywny z procedury Powrót alternatywny specyfikujemy w funkcji lub podprogramie wywoływanym instrukcją RETURN n gdzie n jest numerem powrotu alternatywnego. Na liście parametrów formalnych każdy kolejny powrót alternatywny specyfikuje się *. Na liście parametrów aktualnych specyfikuje się powrót poprzez: *etykieta (np. *10, *20, itp). Działanie powrotu alternatywnego polega na wyjściu z segmentu wywoływanego i przeniesieniu sterowania do instrukcji opatrzonej daną etykietą. WF PW Warszawa, dn. 01.03.2010r. 45

Przykład 2: równanie kwadratowe W procedurach można używać parametru formalnego w postaci '*' Parametr taki oznacza możliwość skoku do wybranej etykiety wewnątrz bloku procedury, jeśli wywołamy procedurę podając w jego miejscu wartość w postaci *etykieta. WF PW Warszawa, dn. 01.03.2010r. 46

Równanie kwadratowe c.d. WF PW Warszawa, dn. 01.03.2010r. 47

COMMON - obszary wspólne Zmienne, które są z definicji lokalne w każdym segmencie (programie głównym, podprogramie lub funkcji) i nie są widziane przez inne segmenty, można uwspólnić poprzez umieszczenie ich na liście obszarów wspólnych. Obszar wspólny musi pojawić się w części deklaracyjnej segmentów, pomiędzy którymi są uwspólniane umieszczone w nim zmienne. Struktura obszaru wspólnego: COMMON /nazwa/ zmienna_1,zmienna_2,,zmienna_n Zmienne mogą być proste lub tablicowe. Jeden obszar wspólny może być bez nazwy. WF PW Warszawa, dn. 01.03.2010r. 48

Obszar wspólny - przykład Segment pierwszy DOUBLE PRECISION X,Y(100) INTEGER N COMMON /ZMIENNE/ X,Y,N Segment drugi SUBROUTINE SUB DOUBLE PRECISION A,B(100) INTEGER M COMMON /ZMIENNE/ A,B,M Uwaga: Nazwy zmiennych mogą być inne; taka sama musi być nazwa obszaru wspólnego oraz długość i kolejność zmiennych. WF PW Warszawa, dn. 01.03.2010r. 49

Inny przykład WF PW Warszawa, dn. 01.03.2010r. 50

Uwaga: Mamy następujące bloki wspólne: COMMON /Blok/ A, B, C, D, E, F End Subroutine Segment1 COMMON /Blok/ X(5), Z End Subroutine Segment2 COMMON /Blok/ Y(2,3) End pr. gł. Segment1 Segment2 A X(1) Y(1,1) B X(2) Y(2,1) C X(3) Y(1,2) D X(4) Y(2,2) E X(5) Y(1,3) F Z Y(2,3) WF PW Warszawa, dn. 01.03.2010r. 51

Segment BLOCK DATA - nadawanie wartości początkowych Wartości umieszczone w obszarach wspólnych (COMMON) inicjuje się w segmentach typu BLOCK DATA. Segmenty te mają postać: BLOCK DATA nazwa_bloku COMMON /nazwa_bloku/ X, Y, I(50) DATA X, Y, I /0.0, 5.92, 4*3, 6*0/ END Zmiennym i tablicom można nadawać wartości początkowe uzywając instrukcji DATA: DATA X, I, (A(J), J=1,10) /1.0, 5, 10*0.0, 4.0, 5.0, 8*1.0/ WF PW Warszawa, dn. 01.03.2010r. 52

Przykłady WF PW Warszawa, dn. 01.03.2010r. 53

Dyrektywa INCLUDE Składnia: INCLUDE nazwa_pliku Dyrektywa INCLUDE służy do dołączania do pliku fortranowskiego innych plików zawierających procedury, funkcje czy bloki danych. Jest ona bardzo wygodna, jeżeli kod jest bardzo rozbudowany - program składa się z wielu segmentów, które zawierają dużo obszarów wspólnych. Uwaga: Umieszczamy ją na końcu pliku, poza kodem programu. Przykład: WF PW Warszawa, dn. 01.03.2010r. 54

Kompilacja programu lub f77 [opcje] [-o plik_wynikowy] plik_wejściowy g77 [opcje] [-o plik_wynikowy] plik_wejściowy Przykład: Mamy plik o nazwie witaj.f Kompilacja: f77 witaj.f Powstaje plik wykonywalny o nazwie a.out Uruchomienie:./a.out WF PW Warszawa, dn. 01.03.2010r. 55

Kompilacja c.d. Kompilacja: f77 o witaj witaj.f Powstaje plik wykonywalny o nazwie witaj Uruchomienie:./witaj Zawartość pliku witaj.f: Efekt działania: WF PW Warszawa, dn. 01.03.2010r. 56

Program koniec Print *, Dziękuję za uwagę ;-) Stop End WF PW Warszawa, dn. 01.03.2010r. 57