08 Zmienne


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 Δ 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 Δ ≥ 0, a osobno gdy Δ < 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 Δ) 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).

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.
  • Na koniec zostało polecenie 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 IFELSE lub pomiędzy ELSEEND 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.