Zmienne to jeden z podstawowych rodzajów obiektów używanych podczas programowania. Służą one do przechowywania różnych, potrzebnych w trakcie obliczeń, wartości. Idea zaczerpnięta została z algebry, gdzie nikogo nie dziwi zapis postaci:
$$y=ax^2+bx+c$$
W powyższym równaniu $a, b, c$ oraz $x$ i $y$ to zmienne „skalarne” (jednowymiarowe). Na ogół nie zastanawiamy się jakie wartości mogą one przyjmować, ale założenie, że są to wartości rzeczywiste nie ogranicza w żaden sposób rozważań. Przyzwyczajeni też jesteśmy dokonywać przekształceń takich wyrażeni, żeby wyliczyć wartość miejsca zerowego $x$ trzeba będzie policzyć:
$$\Delta = b^2-4ac$$
a następnie wyliczyć $ x_1$ oraz $ x_2$ ze wzorów:
$$x_1=\frac{-b-\sqrt{\Delta}}{2a}$$
i
$$x_2=\frac{-b+\sqrt{\Delta}}{2a}$$
Rozważania „matematyczne” (prowadzone na odpowiednio wysokim poziomie ogólności) pozwalają zapomnieć o tym czy $\Delta$ jest dodatnie czy ujemne (jeżeli tylko cokolwiek wiemy o liczbach zespolonych). W obliczeniach praktycznych okazać się może, że interesują nas wyłącznie pierwiastki rzeczywiste, co sprawę może nieco skomplikować. Osobno trzeba będzie rozpatrzyć przypadek gdy $\Delta \le 0$, a osobno gdy $\Delta < 0$. Spróbujmy zaprojektować prostą aplikację, która najpierw pyta o wartości $ a, b$ i $ c$, a następnie dokonuje wszystkich wyliczeń i przedstawia wyniki. Z oczywistych względów (budowanie aplikacji okienkowych wymaga sporej wiedzy na temat funkcjonowania środowiska graficznego Systemu Operacyjnego) będzie to bardzo prosta aplikacja „tekstowa”. Zacznijmy od naszkicowania schematu blokowego:Teraz możemy zacząć programować. Musimy rozstrzygnąć jakie zmienne będą nam potrzebne (i jakiego typu)? Zmienne to A
, B
, C
, DELTA
(odpowiednik $\Delta$) oraz X1
i X2
. Wszystkie zmienne będą typu REAL
(choć założenie, że będą one typu DOUBLE PRECISION
wcale nie będzie karygodne).
1 PROGRAM PIERWIASTEK
2 REAL A, B, C, DELTA, X1, X2
3 WRITE(*,*) "Podaj A"
4 READ(*,*) A
5 WRITE(*,*) "Podaj B"
6 READ(*,*) B
7 WRITE(*,*) "Podaj C"
8 READ(*,*) C
9 DELTA = B * B - 4. * A * C
10 IF (DELTA < 0.) THEN
11 WRITE(*,*) "Nie ma pierwiastków rzeczywistych!"
12 ELSE
13 X1 = (-B - SQRT(DELTA))/(2. * A)
14 X2 = (-B + SQRT(DELTA))/(2. * A)
15 WRITE(*,*) "X1=", X1, " X2=", X2
16 END IF
17 END PROGRAM
Kilka słów objaśnienia
WRITE(*,*)
“Tekst” to polecenie wypisania tekstu na konsoli, podobnie WRITE(*,*)
“Tekst”, zmienna to polecenie wypisania najpierw tekstu i w tej samej linii wartości zmiennej.READ(*,*)
zmienna to polecenie powodujące „zatrzymanie” programu w oczekiwaniu na wprowadzenie przez użytkownika wartości rzeczywistej, która zostanie wczytana, zinterpretowana, skonwertowana do postaci dwójkowej i podstawiona jako wartość zmiennej.IF
(warunek) THEN
polecenie1 ELSE
polecenie2 END IF
. Wydaje się być ono dosyć oczywiste: jeżeli warunek jest spełniony — wykonywane jest polecenie1, w przeciwnym razie — polecenie drugie. Pomiędzy IF
a ELSE
lub pomiędzy ELSE
a END IF
można umieścić, oczywiście, więcej niż jedno polecenie.SQRT()
to funkcja standardowa wyliczająca wartość pierwiastka kwadratowego z argumentu. argument (wartość lub wyrażenie podane w nawiasach) musi mieć wartość większą od zera; działa na wartościach rzeczywistych i podaje wyniki rzeczywiste.