Wiele osób postrzega Fortran jako archaiczny i „martwy” język programowania. Jednak większość kodu naukowego i inżynierskiego jest napisana w Fortranie. Jako takie, programowanie w F77 i F90 pozostaje niezbędną umiejętnością dla większości programistów technicznych. Co więcej, najnowsze standardy Fortran (2003, 2008, 2015) pozwalają programiście na pisanie wysoce wydajnego kodu przy minimalnym wysiłku, przy jednoczesnym wykorzystaniu wszystkich nowoczesnych funkcji językowych, takich jak OOP (programowanie obiektowe). FORTRAN to akronim od „FORMULA TRANSLATION” i najlepiej nadaje się do zastosowań matematycznych i numerycznych, a nie graficznych lub aplikacji bazodanowych. Większość kodów fortran pobiera tekst z pliku lub wiersza poleceń, a nie z menu lub interfejsu GUI.
Kroki
Część 1 z 4: Pisanie i kompilowanie prostego programu
Krok 1. Napisz program „Hello World”
Jest to zwykle pierwszy program, który pisze w dowolnym języku i po prostu wyświetla na ekranie „Witaj świecie”. Napisz następujący kod w dowolnym edytorze tekstu i zapisz go jako helloworld.f. Zwróć uwagę, że przed każdą linią musi być dokładnie 6 spacji.
program helloworld niejawny brak znak*13 hello_string hello_string = "Witaj świecie!" napisz (*, *) hello_string koniec programu helloworld
Wskazówka: Spacje są potrzebne tylko w wersjach Fortran do FORTRAN 77. Jeśli używasz nowszej wersji, możesz usunąć spacje. Kompiluj programy z nowszej wersji z f95, a nie f77; użyj.f95 jako rozszerzenia pliku zamiast samego.f.
Krok 2. Skompiluj program
Aby to zrobić, wpisz f77 helloworld.f w wierszu poleceń. Jeśli to daje błąd, prawdopodobnie nie zainstalowałeś jeszcze kompilatora Fortran, takiego jak na przykład gfortran.
Krok 3. Uruchom swój program
Kompilator utworzył plik o nazwie a.out. Uruchom ten plik, wpisując./a.out.
Krok 4. Zrozum, co właśnie napisałeś
-
program helloworld
wskazuje początek programu "helloworld". Podobnie,
koniec programu helloworld
- wskazuje na jego koniec.
-
Domyślnie, jeśli nie zadeklarujesz typu zmiennej, Fortran traktuje zmienną o nazwie zaczynającej się od litery od i do n jako liczbę całkowitą, a wszystkie inne jako liczbę rzeczywistą. Zaleca się używać
niejawny żaden
- jeśli nie potrzebujesz takiego zachowania.
-
znak*13 cześć_ciąg
- deklaruje tablicę znaków, która nazywa się hello_string.
-
hello_string = "Witaj świecie!"
- przypisuje wartość "Hello, world!" do zadeklarowanej tablicy. W przeciwieństwie do innych języków, takich jak C, nie można tego zrobić w tym samym wierszu, co deklarowanie tablicy.
-
napisz (*, *) hello_string
- wypisuje wartość hello_string na standardowe wyjście. Pierwsza * oznacza zapis na standardowe wyjście, w przeciwieństwie do jakiegoś pliku. Druga * oznacza, że nie należy używać żadnego specjalnego formatowania.
Krok 5. Dodaj komentarz
Nie jest to konieczne w tak prostym programie, ale przyda się, gdy napiszesz coś bardziej złożonego, więc powinieneś wiedzieć, jak je dodać. Komentarz można dodać na dwa sposoby.
- Aby dodać komentarz, który ma cały wiersz, wpisz c bezpośrednio w nowym wierszu, bez 6 spacji. Następnie napisz swój komentarz. Aby zapewnić lepszą czytelność, należy zostawić spację między literą c a komentarzem, ale nie jest to wymagane. Pamiętaj, że musisz użyć ! zamiast c w Fortran 95 i nowszych.
- Aby dodać komentarz w tej samej linii co kod, dodaj ! od którego chcesz zacząć swój komentarz. Ponownie spacja nie jest wymagana, ale poprawia czytelność.
Część 2 z 4: Korzystanie z konstrukcji wejściowych i if
Krok 1. Zrozum różne typy danych
- INTEGER jest używany dla liczb całkowitych, takich jak 1, 3 lub -3.
- REAL może również zawierać liczbę, która nie jest pełna, np. 2.5.
- COMPLEX służy do przechowywania liczb zespolonych. Pierwsza liczba to część rzeczywista, a druga część urojona.
- CHARACTER jest używany dla znaków, takich jak litery lub znaki interpunkcyjne.
- LOGICAL może mieć wartość.true. lub.false.. To jest jak typ logiczny w innych językach programowania.
Krok 2. Uzyskaj dane wejściowe użytkownika
W programie "Hello world", który napisałeś wcześniej, pobieranie danych od użytkownika byłoby bezużyteczne. Więc otwórz nowy plik i nazwij go compnum.f. Kiedy skończysz, poinformuje użytkownika, czy wprowadzona przez niego liczba jest dodatnia, ujemna czy równa zeru.
- Wprowadź wiersze program compnum i koniec programu compnum.
- Następnie zadeklaruj zmienną typu REAL. Upewnij się, że Twoja deklaracja znajduje się między początkiem a końcem programu.
- Wyjaśnij użytkownikowi, co ma zrobić. Napisz tekst za pomocą funkcji write.
- Wczytaj dane wprowadzone przez użytkownika do zmiennej, którą zadeklarowałeś funkcją read.
program compnum real r write (*, *) "Wprowadź liczbę rzeczywistą:" odczyt (*, *) r koniec programu
Krok 3. Przetwórz dane wprowadzone przez użytkownika za pomocą konstrukcji if
Umieść to między
przeczytaj (*, *) r
i
koniec programu
- Porównanie odbywa się z.gt. (większe niż),.lt. (mniej niż) i.eq. (równa się) w Fortranie.
- Fortran obsługuje if, else if i else
- Konstrukcja fortranowa if zawsze kończy się na end if.
if (r.gt. 0) to napisz (*, *) „Ta liczba jest dodatnia”. else if (r.lt. 0) to napisz (*, *) "Ta liczba jest ujemna." w przeciwnym razie napisz (*, *) "Ta liczba to 0". koniec jeśli
Wskazówka: Nie musisz wcinać kodu wewnątrz konstrukcji if z większą ilością spacji, ale poprawia to czytelność.
Krok 4. Skompiluj i uruchom swój program
Wprowadź kilka liczb, aby to przetestować. Jeśli wprowadzisz literę, zgłosi to błąd, ale to jest w porządku, ponieważ program nie sprawdza, czy dane wejściowe są literą, cyfrą, czy czymś innym.
Część 3 z 4: Używanie pętli i tablic
Krok 1. Otwórz nowy plik
Ponieważ ta koncepcja jest inna, będziesz musiał ponownie napisać nowy program. Nazwij plik addmany.f. Wstaw odpowiedni program i instrukcje zakończenia programu, a także niejawny brak. Kiedy skończysz, ten program odczyta 10 liczb i wydrukuje ich sumę.
Krok 2. Zadeklaruj tablicę o długości 10
Tutaj będziesz przechowywać numery. Ponieważ prawdopodobnie chcesz otrzymać sumę liczb rzeczywistych, powinieneś zadeklarować tablicę jako rzeczywistą. Taką tablicę deklarujesz za pomocą
liczby rzeczywiste(50)
(liczby to nazwa tablicy, a nie wyrażenie).
Krok 3. Zadeklaruj kilka zmiennych
Zadeklaruj numSum jako liczbę rzeczywistą. Użyjesz go do późniejszego przechowywania sumy, ale ponieważ suma jest już przyjmowana przez wyrażenie Fortran, musisz użyć nazwy takiej jak numSum. Ustaw ją na 0. Zadeklaruj i jako liczbę całkowitą i nie przypisuj jej jeszcze żadnej wartości. Zostanie to zrobione w pętli.
Krok 4. Utwórz pętlę do wykonania
Odpowiednikiem tego w innych językach programowania byłaby pętla for.
- Pętla do zawsze zaczyna się od do.
- W tej samej linii co do, oddzielona od niej spacją, znajduje się etykieta, do której program przejdzie po zakończeniu. Na razie po prostu wpisz 1, etykietę ustawisz później.
-
Następnie ponownie oddzielone tylko spacją, wpisz
ja = 1, 10
. Spowoduje to, że zmienna i, którą zadeklarowałeś przed pętlą, przejdzie od 1 do 10 w krokach co 1. Kroki nie są wymienione w tym wyrażeniu, więc Fortran używa domyślnej wartości 1. Mogłeś również napisać
ja = 1, 10, 1
-
Umieść trochę kodu wewnątrz pętli (wcięcie ze spacjami dla lepszej czytelności). W przypadku tego programu należy zwiększyć zmienną numSum o i-ty element numerów tablicy. Odbywa się to za pomocą wyrażenia
sumaliczb = sumaliczb + liczba(i)
- Zakończ pętlę instrukcją continue, która ma etykietę. Wpisz tylko 4 spacje. Następnie wpisz 1. To jest etykieta, do której poleciłeś pętli do po jej zakończeniu. Następnie wpisz spację i kontynuuj. Wyrażenie kontynuuje nic nie robi, ale daje dobre miejsce do umieszczenia etykiety, a także pokazuje, że pętla dokończyła się.
Twoja pętla do powinna teraz wyglądać tak:
wykonaj 1 i = 1, 10 sumaliczb = sumalicz + liczby(i) 1 kontynuuj
Wskazówka: W Fortran 95 i nowszych nie musisz używać etykiet. Po prostu nie umieszczaj go w instrukcji do i nie kończ pętli „end do” zamiast „continue”.
Krok 5. Wydrukuj numSum
Warto też podać kontekst, na przykład „Suma twoich liczb to:”. Użyj funkcji zapisu dla obu. Twój cały kod powinien teraz wyglądać następująco:
program addwiele niejawny brak liczby rzeczywiste(10) liczba rzeczywista numSum liczba całkowita i numSum = 0 napisz (*, *) "Wprowadź 10 liczb:" odczyt (*, *) liczby wykonaj 1 i = 1, 10 numSum = numSum + liczby(i) 1 kontynuuj napisz (*, *) "Ich suma to:" napisz (*, *) numSum koniec programu addmany
Krok 6. Skompiluj i uruchom swój kod
Nie zapomnij go przetestować. Możesz nacisnąć ↵ Enter po każdej wprowadzonej cyfrze lub wprowadzić wiele cyfr w tym samym wierszu i oddzielić je spacją.
Część 4 z 4: Zrozumienie zaawansowanych pojęć
Krok 1. Miej dobre pojęcie o tym, co zrobi twój program
Zastanów się, jakiego rodzaju dane są potrzebne jako dane wejściowe, jak ustrukturyzować dane wyjściowe i uwzględnij niektóre dane wyjściowe, aby móc monitorować postęp obliczeń. Będzie to bardzo przydatne, jeśli wiesz, że Twoje obliczenia będą działać przez długi czas lub będą obejmować wiele skomplikowanych kroków.
Krok 2. Znajdź dobre referencje Fortran
Fortran ma o wiele więcej funkcji niż wyjaśniono w tym artykule i mogą być przydatne w programie, który chcesz napisać. W odnośniku wymieniono wszystkie funkcje, jakie posiada język programowania. To jest dla Fortran 77, a to dla Fortran 90/95.
Krok 3. Dowiedz się o podprogramach i funkcjach
Krok 4. Naucz się czytać i pisać z/do plików
Dowiedz się również, jak sformatować wejście/wyjście.
Krok 5. Poznaj nowe funkcje Fortran 90/95 i nowszych
Pomiń ten krok, jeśli wiesz, że będziesz pisać/konserwować tylko kod Fortran 77.
Pamiętaj, że Fortran 90 wprowadził kod źródłowy „Free Form”, umożliwiający pisanie kodu bez spacji i bez limitu 72 znaków
Krok 6. Przeczytaj lub poszukaj książek na temat programowania naukowego
Na przykład książka „Receptury liczbowe w Fortran” jest zarówno dobrym tekstem na temat algorytmów programowania naukowego, jak i dobrym wprowadzeniem do tworzenia kodów. Nowsze wydania zawierają rozdziały dotyczące programowania w środowisku mieszanym i programowania równoległego. Innym przykładem jest „Modern Fortran w praktyce” napisany przez Arjena Markusa. Książka daje wgląd w to, jak pisać programy Fortranu w stylu XXI wieku zgodnie z najnowszymi standardami Fortranu.
Krok 7. Dowiedz się, jak skompilować program rozłożony na wiele plików
Załóżmy, że twój program Fortran jest rozłożony na pliki main.fi morestuff.f i chcesz, aby wynikowy plik binarny miał nazwę allstuff. Następnie będziesz musiał wpisać następujące polecenia w wierszu poleceń:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Następnie uruchom plik, wpisując./allstuff.
Wskazówka: Działa to w ten sam sposób z nowszymi wersjami Fortran. Wystarczy zastąpić.f poprawnym rozszerzeniem, a f77 poprawną wersją kompilatora.
Krok 8. Użyj optymalizacji zapewnianej przez kompilator
Większość kompilatorów zawiera algorytmy optymalizacji, które poprawiają wydajność kodu. Są one zazwyczaj włączane przez włączenie flagi -O, -O2 lub -O3 podczas kompilacji (znowu w zależności od wersji fortranu).
-
Generalnie najlepszy jest najniższy poziom -O lub -O2. Należy pamiętać, że użycie bardziej agresywnej opcji optymalizacji może wprowadzić błędy w złożonych kodach, a nawet spowolnić działanie! Przetestuj swój kod.
Porady
- Zacznij od małych programów. Kiedy tworzysz własny kod, postaraj się zidentyfikować najistotniejszą część problemu - czy jest to wprowadzanie danych, czy wywołanie funkcji, struktura pętli (to kilka bardzo elementarnych przykładów) i od tego zacznij. Następnie buduj na tym w małych przyrostach.
- Fortran nie rozróżnia wielkości liter. Możesz na przykład zadeklarować zmienną „real Num” i napisać „num = 1” w następnym wierszu, aby przypisać jej wartość. Ale to zły styl, więc unikaj go. Co ważniejsze, Fortran nie przejmuje się również przypadkiem funkcji i instrukcji. Często zdarza się, że funkcje i instrukcje pisane są WIELKIMI LITERAMI, a zmienne małymi.
- EMACS to dobry darmowy edytor tekstu do użycia zamiast Notatnika.
- Na początku może być łatwiej korzystać z internetowego IDE (zintegrowanego środowiska programistycznego). Dobrą opcją jest Coding Ground. Znajdziesz tam wiele języków programowania, w tym Fortran-95. Inną opcją jest Ideone.