Podprogramy w Fortranie, zarówno funkcje, jak i subroutine’y, są nieodzownym elementem pisania czytelnych i modularnych programów. Przykłady z życia pokazują, jak efektywnie wykorzystać je do rozwiązywania klasycznych problemów programistycznych, takich jak obliczanie współczynników kombinatorycznych, łączenie tekstów czy statystyczna analiza danych.
Obliczanie współczynnika kombinatorycznego nCr w programie Fortran odbywa się poprzez funkcję rekurencyjną lub iteracyjną wyliczającą silnię, która jest podstawą do wyznaczenia wartości nCr. Funkcja IFACT w przykładzie wylicza silnię dowolnej liczby naturalnej N, a potem na jej podstawie obliczany jest współczynnik nCr jako stosunek silni n, r oraz n-r. Warto zwrócić uwagę na technikę kontynuacji linii w kodzie, umożliwiającą zachowanie przejrzystości i czytelności programu, mimo długich instrukcji. Równie istotne jest użycie średników do rozdzielania wielu instrukcji w jednej linii, co jest dopuszczalne i praktyczne w Fortranie.
Łączenie łańcuchów znaków jest kolejnym przykładem zastosowania funkcji w Fortranie. Operator // służy do konkatenacji, czyli łączenia napisów w jeden ciąg znaków. Możliwość wielokrotnego użycia tego operatora pozwala tworzyć bardziej złożone łańcuchy znaków. Podprogram MULC jest funkcją, która przyjmuje dwa napisy i zwraca ich połączoną wartość. Ważne jest tutaj deklarowanie zmiennych typu CHARACTER o odpowiedniej długości, co jest konieczne do prawidłowego działania tego typu operacji.
Zastosowanie funkcji subprogramów znajduje także odbicie w statystyce, na przykład w obliczaniu współczynnika korelacji Pearsona. Program, który to realizuje, korzysta z dwóch funkcji: AM do obliczania średniej arytmetycznej oraz SIG do obliczania sumy kowariancji pomiędzy danymi. Współczynnik korelacji jest miarą siły i kierunku liniowej zależności pomiędzy dwoma zmiennymi i przyjmuje wartości od -1 do +1. Znak i wartość współczynnika interpretujemy jako pełną korelację dodatnią, brak korelacji lub korelację ujemną. W praktyce, znajomość mechanizmu wyznaczania korelacji jest kluczowa, gdy analizujemy dane, na przykład zależność pomiędzy wzrostem a wagą osób.
Ważne jest, że zmienne w funkcjach są lokalne i niezależne od tych samych nazw w programie głównym, co pozwala uniknąć konfliktów i błędów w obliczeniach. To podstawowa cecha programowania modularnego, zwiększająca bezpieczeństwo i czytelność kodu.
Subroutine’y różnią się od funkcji tym, że mogą zwracać wiele wartości lub wykonywać operacje bez zwracania bezpośredniego wyniku, na przykład wypisywać dane. Struktura subroutine’a jest zbliżona do funkcji, lecz wywołuje się ją przez CALL. W przykładzie obliczania nCr wykorzystano subroutine FACTORIAL, która oblicza silnię i przypisuje wynik do zmiennej przekazywanej przez argument.
Sortowanie danych jest kolejnym klasycznym problemem, który może być rozwiązany prostym algorytmem bąbelkowym. Jest to metoda intuicyjna, chociaż nieefektywna dla dużych zbiorów danych. Polega na porównywaniu kolejnych elementów tablicy i zamianie ich miejscami, jeśli są w złej kolejności. Po pierwszym przejściu najmniejsza wartość przesuwa się na początek, co sukcesywnie porządkuje tablicę.
Przy korzystaniu z podprogramów w Fortranie niezwykle istotne jest zrozumienie ich roli w tworzeniu modularnego, łatwego do testowania i rozwijania kodu. Funkcje służą do zwracania pojedynczych wyników, często wykorzystywanych jako wartości wyrażenia, podczas gdy subroutine’y są bardziej elastyczne i mogą wykonywać różnorodne działania.
Dodatkowo, zrozumienie zasad lokalności zmiennych w podprogramach jest kluczowe do unikania błędów i tworzenia niezależnych modułów, które można wielokrotnie wykorzystywać. Wiedza o tym, jak korzystać z operatorów, formatowania oraz jak czytać i pisać dane, pozwala na efektywne pisanie programów numerycznych i statystycznych.
Ważne jest także, by czytelnik rozumiał, że chociaż przykładowe algorytmy, takie jak bubble sort, są edukacyjne, to w praktyce dla większych zbiorów danych należy stosować bardziej wydajne metody sortowania. Równocześnie znajomość podstawowych funkcji i subroutine’ów pozwala na łatwe rozszerzanie programów o nowe funkcjonalności oraz utrzymanie przejrzystości i poprawności kodu.
Jak napisać prosty program w FORTRANIE i zrozumieć podstawowe konstrukcje języka?
Na początku nauki programowania w FORTRANIE warto od razu przystąpić do pisania pierwszych programów, pomijając na razie szczegółowe omówienia wszystkich cech języka. Przykładem jest prosty program, który wyświetla na ekranie komunikat: „HELLO! THIS IS MY FIRST PROGRAM”. Program ten składa się z kilku podstawowych elementów: komentarza rozpoczynającego się od znaku „C”, instrukcji WRITE odpowiedzialnej za wyświetlenie tekstu, polecenia STOP kończącego działanie programu oraz END oznaczającego jego fizyczny koniec.
Istotne jest zrozumienie roli komentarzy w kodzie — nie wpływają one na działanie programu, ale służą przejrzystości i ułatwiają późniejszą edycję czy analizę kodu. Instrukcja WRITE jest poleceniem wyjścia danych, które umożliwia wypisanie na ekran tekstu lub wartości zmiennych. Znaki pojedynczego lub podwójnego cudzysłowu otaczają tekst do wyświetlenia.
Kolejnym krokiem jest napisanie programu sumującego dwie liczby całkowite — na przykład 15 i 17. Tutaj konieczne jest wprowadzenie zmiennych, które przechowują liczby i wynik. Deklaracja typu zmiennych jest obowiązkowa i musi znajdować się przed wykonaniem jakichkolwiek operacji na nich. Przykładowo, INTEGER A, B, SUM definiuje zmienne całkowite. Operacje przypisania wartości do zmiennych odbywają się za pomocą instrukcji przypisania, np. A=15, B=17. Dodawanie realizowane jest przez SUM=A+B.
Instrukcja WRITE w tym programie została nieco rozbudowana: najpierw wyświetla komunikat informujący o sumowanych liczbach, a następnie wynik operacji. Należy zauważyć, że FORTRAN nie rozróżnia wielkości liter w swoich poleceniach (poza tekstem w cudzysłowie), co ułatwia pisanie kodu bez obaw o błędy wielkości liter.
W praktyce nie zawsze chcemy, by wartości były na stałe wpisane w programie. Aby umożliwić użytkownikowi podanie dowolnych liczb w czasie działania programu, stosuje się instrukcję READ, która odczytuje dane z klawiatury. Dzięki temu program staje się bardziej uniwersalny i interaktywny. Przykładowo, instrukcja READ(,) A, B pozwala na wprowadzenie dwóch liczb, które następnie są sumowane i wyświetlane.
Możliwe jest wprowadzanie danych w różnych formatach — liczby mogą być wpisane jedna po drugiej lub oddzielone spacjami czy przecinkami na jednej linii. Program po otrzymaniu danych wykonuje sumowanie i wyświetla wynik, co pozwala na szerokie zastosowanie nawet w prostych aplikacjach.
Aby dodać liczby rzeczywiste, czyli te z częścią dziesiętną, wystarczy zmienić deklarację zmiennych z INTEGER na REAL. FORTRAN różnicuje typy danych i odpowiednio je przetwarza, dlatego ważne jest, by deklaracje odpowiadały typom przechowywanych wartości. Warto pamiętać, że operacje na liczbach całkowitych i rzeczywistych mogą mieć różne konsekwencje, zwłaszcza w bardziej złożonych programach.
Stałe, czyli wartości niezmienne w trakcie działania programu, również mają swoje miejsce i różne typy w FORTRANIE, które zostaną omówione w dalszej części kursu. Zrozumienie różnicy między zmiennymi a stałymi oraz umiejętne korzystanie z typów danych jest fundamentem efektywnego programowania.
Ważne jest, by czytelnik zdawał sobie sprawę, że FORTRAN, choć stosunkowo prosty, wymaga precyzji w deklarowaniu i operowaniu na danych. Typy danych determinują sposób przechowywania i przetwarzania wartości, co wpływa na wynik i wydajność programu. Należy także pamiętać o strukturze programu i kolejności instrukcji, która powinna być logiczna i zgodna z zasadami języka.
Znajomość podstaw takich jak komentarze, instrukcje wejścia i wyjścia, przypisania, deklaracje typów oraz rozróżnienie między danymi stałymi i zmiennymi pozwala już na tworzenie funkcjonalnych programów, które mogą być rozwijane i modyfikowane w miarę poznawania bardziej zaawansowanych konstrukcji FORTRANU.
Jak zbudować autorytet, który przynosi realny sukces: Zasady efektywnego marketingu autorytetu
Jak blockchain i federacyjne uczenie się zmieniają systemy rekomendacji i ochronę danych
Meningioma: Klasyfikacja, zachowanie regionalne, historia życia oraz wyniki po leczeniu stereotaktyczną radioterapią i zabiegach chirurgicznych
Jak Sieci Neuronowe i Głębokie Uczenie Rewolucjonizują Sektory Zawodowe?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский