Programowanie w języku Fortran 95 Zalety 1. Standaryzacja umożliwiająca uruchamianie tych samych programów na różnych komputerach, 2. Szeroko wykorzystywany przez środowiska naukowe, 3. Dostępność do doskonałych bibliotek matematycznych ułatwiających rozwiązywanie problemów matematyczno-fizycznych, inżynierskich oraz ekonomicznych, 4. Wieloplatformowość (Unix, VMS, Windows, Linux) Wada 1. Słaba strukturalność (problemy z widocznością zmiennych wewnątrz i na zewnątrz podprogramów i funkcji)
Etapy tworzenia programu Problem Projektowanie algorytmu Uruchamianie programu (poprawianie błędów i kompilacja) Testowanie (double-check) Wynik
Uwagi ogólne 1. Warunek jednoznaczności algorytmu (błąd: wykonać czynność A ALBO B) 2. Program w języku Fortran ma budowę segmentową (segment programu głównego + „subroutines”). Wykonanie rozpoczyna się od segmentu głównego. 3. Program jest ciągiem deklaracji, instrukcji i komentarzy. Instrukcje są realizowane sekwencyjnie w kolejności ich występowania w programie. 4. Instrukcje wykonywane przez program można podzielić na grupy: - czynności zmiany wartości zmiennych - czynności wyboru - czynności powtórzenia - czynności organizacyjne (wprowadzanie danych, drukowanie wyników)
Najczęściej wykorzystywana instrukcja: s = s + 2 (czytaj: zmienna z lewej strony znaku = przyjmuje wartość wyrażenia z prawej strony znaku = ) s = 4 s = 4 + 2 (instrukcja podstawienia / przypisania) s = 6 Operatory arytmetyczne + dodawanie, odejmowanie * / mnożenie, dzielenie ** potęgowanie Program zmienne1 a = 5 b = 2*a + 2 c = b/2 c = c + a + b write (*,*) c end program
Struktura programu Program srednia_arytmetyczna ! Program liczy średnią arytmetyczną implicit none integer i real s, x(1:10) open (1,file=‘h:\reanalysis\dane.dat’) do i=1, 10 read (1,*) x(i) end do close (1) s=0 s=s+x(i) s=s/10 write (*,*) s end program tytuł komentarz Deklaracje typu zmiennych Blok wczytania danych Blok wykonawczy Prezentacja wyników
Deklaracje typów zmiennych implicit none - wymusza jawne deklarowanie typów wszystkich zmiennych Pierwsza litera zmiennej I-N : typ integer Pierwsza litera zmiennej A-H, O-Z : typ real Typ całkowity - integer -2,147,483,648 :: +2,147,483,647 Typ rzeczywisty - real -3.4028235*1038 :: + 3.4028235*1038 Typ podwójnej precyzji - double precision -1.797693134862316*10308 :: +1.797693134862316*10308 Typ zespolony - complex (każdy ze składników liczby zespolonej ma typ real) Typ logiczny - logical (przyjmuje dwie wartości: prawda [true] i fałsz [false]) Typ znakowy - character
Przykład deklaracji typu zmiennej implicit none integer i,j,k,n real x,y,z(1:10) character*10 nazwa_pliku Podstawowe instrukcje n=25 open (1,file=‘d:\student\geoinformatyka\mandec.dat’) open (2,file=‘d:\student\geoinformatyka\wyniki.dat’) do i=1, n : pętla o zmiennej sterującej „i” read (*,*) x(i) : czyta dane z ekranu read (1,*) x(i) : czyta dane z pliku nr 1 write (*,*) z(i) : drukuje wyniki na ekranie write (2,*) z(i) : drukuje wyniki do pliku nr 2 end do close (2) close (1)