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).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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.
- 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 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.