X


[ Pobierz całość w formacie PDF ]

przez ich odjęcie.
Sam program powinien wyglądać następująco:
początek
odczytaj wartości współczynników a, b i c,
oblicz wartość wyznacznika
oblicz pierwiastki i wypisz je na ekranie
koniec
W postaci pascalowej będzie to nieco bardziej skomplikowane:
program Rownanie_Kwadratowe;
var
delta : real; { wyznacznik }
x1, x2 : real; { pierwiastki }
begin
writeln('Program rozwiazuje rownanie kwadratowe')
writeln('a*x^2 + b*x + c');
readln(a);
write('Podaj wspolczynnik b: ');
readln(b);
write('Podaj wspolczynnik c: ');
readln(c);
delta := sqr(b) - 4*a*c; { oblicz wyznacznik }
x1 := (-b + sqrt(delta))/(2*a); { oblicz pierwiastki }
x2 := (-b - sqrt(delta))/(2*a); { znaczek := to tzw. }
{ przypisanie }
writeln('x1 = ', x1:12:4);
writeln('x2 = ', x2:12:4);
readln;
end.
Wyrażenia wykorzystywane do obliczania poszczególnych wartości są tu nieco bardziej
skomplikowane, ale nadal nie powinieneś mieć problemów z ich analizą. Dwoma
nowymi (no, nie do końca) elementami są operator przypisania oraz funkcje.
Operator przypisania jest jednym z najpospoliciej wykorzystywanych operatorów
pascalowych. Znaczek := (dwukropek i znak równości) czyta się  staje się lub
 przypisz , zaś jego efekt sprowadza się do umieszczenia w obiekcie znajdującym się
po lewej stronie wartości znajdującej się po prawej stronie.  Obiekt umieszczony po
lewej stronie operatora przypisania określany jest mianem l-wartości (ang. lvalue). Jest
to na ogół zmienna, możliwe jest jednak przypisanie wartości do identyfikatora funkcji
(o tym będziemy jeszcze mówić). Ponieważ przypisanie polega na umieszczeniu
46 Turbo Pascal  programowanie
wartości gdzieś w pamięci komputera (w miejscu określonym przez nazwę obiektu), nie
możesz po lewej stronie operatora przypisania umieścić stałej czy wyrażenia. Po prawej
stronie operatora przypisania panuje znacznie większa demokracja: dopuszczalne są
tam praktycznie dowolne wyrażenia (a więc w szczególności również pojedyncze stałe
i zmienne), byleby typ wartości uzyskanej w wyniku obliczenia wyrażenia był zgodny
z typem obiektu znajdującego się po drugiej stronie operatora :=.
Zagadnienie zgodności typów w sensie przypisania (ang. assignment compatibility) jest
tyleż istotne, co złożone. Z dość dobrym przybliżeniem można powiedzieć, że typ
wyrażenia znajdującego się po prawej stronie operatora := powinien być identyczny z
typem obiektu znajdującego się po lewej stronie, z kilkoma wyjątkami. Do
najważniejszych wyjątków należą przypisania:
" wartości typu całkowitego do obiektu typu rzeczywistego (ale nie odwrotnie);
" wartości typu rzeczywistego do obiektu innego typu rzeczywistego (w dowolną
stronę);
" wartości typu znakowego do obiektu typu łańcuchowego;
" wartości typu  wskaznik do typu do obiektu typu pointer.
Przy tej okazji warto również wspomnieć, że niektóre przypisania pomiędzy typami
rzeczywistymi mogą spowodować utratę dokładności lub przekroczenie zakresu (np.
próba  wciśnięcia wartości typu extended do zmiennej typu single).
Jeśli idzie o drugą nowość, czyli funkcje, to w naszym programie pojawiły się wywo-
łania dwóch tzw. bibliotecznych funkcji arytmetycznych: sqr i sqrt. Temat funkcji
będzie dyskutowany nieco pózniej; na razie wystarczy Ci wiedzieć, że funkcja (i po-
krewna jej procedura) jest pewnym narzędziem pozwalającym na przekształcenie
podanych jej wartości (tzw. argumentów) do żądanej postaci. Praktycznie każdy język
programowania dysponuje mniejszym lub większym zestawem (biblioteką) funkcji
realizujących operacje arytmetyczne, znakowe, graficzne i inne. Biblioteka funkcji
i procedur dostępnych w Turbo Pascalu jest ogromna i omawianie jej mijałoby się
z celem; wśród często wykorzystywanych funkcji arytmetycznych, oprócz nierzadko
mylonych ze sobą sqr (podniesienie do kwadratu) i sqrt (pierwiastek kwadratowy),
znajdują się również funkcje trygonometryczne (sin, cos, arctan), logarytmiczne
(ln, exp) i wiele innych.
W ten sposób omówiliśmy zasadnicze tematy związane z wyrażeniami i realizacją obli-
czeń arytmetycznych. Wykorzystując poznane wiadomości możesz pokusić się o napi-
sanie programu obliczającego wartości bardziej skomplikowanych wzorów (jakich? to
już pewnie sam wiesz najlepiej). Niestety, o czym być może już się przekonałeś, Turbo
Pascal nie jest na tyle inteligentny, by obronić się przed próbą wykonania operacji
nielegalnej z matematycznego punktu widzenia (np. dzielenia przez zero). Jeśli jeszcze
nie miałeś okazji potknąć się o ten problem, spróbuj za pomocą naszego programiku
znalezć miejsca zerowe funkcji
x2 + 2x + 3
Wyrażenia 47
Nasze równanie nie ma pierwiastków rzeczywistych: wartość wyznacznika wynosi  8,
a zatem jego pierwiastek kwadratowy nie daje się obliczyć. Ponieważ jednak Turbo
Pascal o tym nie wie, efektem podjętej próby jest błąd wykonania (Invalid floating
point operation  nielegalna operacja zmiennoprzecinkowa) i przerwanie realizacji
programu. Co prawda żadna to tragedia, bo funkcja i tak nie ma pierwiastków, ale
program mógłby zachowywać się przyzwoiciej, tj. zamiast  padać  wyświetlać
odpowiednią informację.
Nie ma problemu... ale to już może w następnym rozdziale.
Zapamiętaj
" Do przekształcania informacji w programie służą wyrażenia.
" W skład wyrażeń wchodzą stałe i zmienne (reprezentujące dane) oraz operatory
i funkcje (reprezentujące sposoby przekształcania informacji).
" Najważniejsze grupy operatorów pascalowych to operatory arytmetyczne, bito-
we, logiczne oraz relacyjne (operatory porównania).
" Konstruując wyrażenia musisz pamiętać o kolejności wykonywania działań,
czyli priorytetach operatorów.
" Do zmiany kolejności działań służą nawiasy.
" Funkcje reprezentują bardziej złożony sposób przekształcania informacji niż
operatory.
" Do nadawania wartości zmiennym służy operator przypisania :=.
" Po lewej stronie operatora przypisania musi znajdować się l-wartość. Po jego
prawej stronie może znajdować się dowolne wyrażenie.
48 Turbo Pascal  programowanie
Instrukcja warunkowa
Aby uniknąć błędu wynikającego z próby pierwiastkowania liczby ujemnej, wypadało-
by umieścić w naszym programie zastrzeżenie w postaci  jeżeli wyznacznik jest więk-
szy od zera to wykonaj dalsze obliczenia, w przeciwnym przypadku wypisz odpowiedni
komunikat . Przekładając to na język angielski i nieco uogólniając, otrzymujemy struk-
turę instrukcji warunkowej:
if warunek
then instrukcja-1
else instrukcja-2 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • spraypainting.htw.pl
  • Drogi uĹźytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

    Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

     Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerĂłw w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

     Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerĂłw w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

    Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.