<7>
S=Vp{p - a){p - b){p - c)
Program dla komputera w języku Pascal, będący realizacją tego algorytmu, jest przedstawiony w tabeli 1. Tabela 1.
Pierwszy program
Wiersze programu |
Objaśnienia |
Program Trójkąt; var a,b,c,p:real; |
Program i nazwa program, na końcu średnik Deklaracja zmiennych - real oznacza, że wartości tych zmiennych nie muszą być całkowite |
begin |
Początek zasadniczej części programu |
read(a,b,c); |
Czytanie wartości zmiennych do programu |
p:=(a+b+c)/2; |
Obliczanie pomocniczej wielkości - połowy obwodu |
write(sqrt(p*(p-a)*(p- |
b)* (p-c))) Wypisywanie wielkości pola trójkąta o bokach o, b, c |
end. |
Koniec programu - na końcu kropka. |
Ćwiczenie 1. Przepisz program z tabeli 1 w edytorze języka Pascal i uruchom go dla różnych trójek danych, np. 1,1,1; 2,2,2; 1,2,2; 1,2,4. Uruchom także dla danych: 1,2,3 oraz 1,3,1.
Jakie wyniki działania programu otrzymałeś w ostatnich dwóch przypadkach danych? Czy wiesz, dlaczego? Przypomnij więc sobie, jakie warunki muszą spełniać trzy liczby, aby mogły być długościami boków trójkąta? Jak więc wygląda trójkąt o bokach 1,2, 3? A dlaczego nie otrzymałeś żadnego wyniku, tylko jakiś komunikat, dla liczb 1,3,1?
Aby trzy liczby mogły być długościami boków trójkąta, muszą spełniać warunek trójkąta, tzn. każda suma dwóch długości boków musi być większa od trzeciej liczby, czyli;
Łatwo można sprawdzić, że te trzy nierówności są równoważne nierównościom: p-a>O, p-b>O, p-c>0.
Uwzględnienie tych warunków w algorytmie przekłada się na modyfikację trzeciego kroku, który otrzymuje
Krok 3. Jeśli p*(p - a)*(p - b)*(p - c) < O, to zakończ obliczenia z komunikatem, że podane trzy liczby nie są długościami boków w trójkącie. W przeciwnym razie oblicz pole trójkąta według wzoru:
W tabeli 2 jest zawarty program Trójkąty _ mod, w którym uwzględniono zmienioną postać kroku 3 - pojawia się instrukcja warunkowa if ... then ... else.