Instrukcja standardowa Writeln Instrukcja standardowa ClrScr

Transkrypt

Instrukcja standardowa Writeln Instrukcja standardowa ClrScr
Instrukcja standardowa Writeln
Instrukcja Writeln umożliwia wprowadzenie danych na ekran monitora powodując automatycznie późniejsze
przejście kursora do nowej linii.
Jest to ustawienie domyślne w działaniu tej instrukcji, podobnie jak w instrukcji Write.
Postać instrukcji standardowej Writeln jest następująca:
Writeln (lista argumentów),
gdzie lista argumentów może być ciągiem znaków stałych, zmiennych lub wyrażeń oddzielonych przecinkami.
Zasada działania instrukcji Writeln jest więc bardzo podobna do działania instrukcji Write.
Poniżej przedstawiono przykładowy zapis instrukcji:
Writeln (' KOMPUTER ‘);
Po wykonaniu instrukcji otrzymujemy na ekranie napis „KOMPUTER", a kursor przechodzi do następnego wiersza.
Instrukcję Writeln stosujemy, gdy chcemy wyświetlić dane ciągi znaków w kilku wierszach.
Ćwiczenie
Napisać program wyświetlający napis:
ZAGRANICZNA FIRMA HANDLOWA EURO - 2000
Program nosi nazwę „Firma". Zapisać go na wybranym dysku w pliku o nazwie firma.pas.
Poniżej został przedstawiony cały program.
PROGRAM Firma;
BEGIN
Writeln (' ZAGRANICZNA FIRMA HANDLOWA ');
Write ('
EURO-2000 ')
END.
Ćwiczenie
Napisać program wyświetlający napis:
ZAGRANICZNA FIRMA PRODUKCYJNO - HANDLOWA EUROPA - 2000
WARSZAWA UL. ZGODY 20
Program nosi nazwę „Europa_2000". Zapisać go w pliku o nazwie euro.pas.
Przy uruchamianiu kolejnych programów i w trakcie podglądu wyników ich działania na ekranie monitora mamy zawsze
wyświetlane wyniki działania poprzednich programów. Powoduje to zmniejszenie przejrzystości wyświetlanych aktualnych
wyników.
Na ekranie monitora bardzo często chcemy mieć tylko wynik działania aktualnie uruchamianego programu. W tym
celu musimy zastosować w programie instrukcję standardową ClrScr. Powoduje ona skasowanie z ekranu wyników działania
poprzednio uruchamianych programów.
Instrukcja standardowa ClrScr
Instrukcja ClrScr, aby spełniła swoją rolę, musi wystąpić w programie zaraz w następnym wierszu po słowie kluczowym
BEGIN otwierającym blok wykonawczy.
Ponieważ nasza funkcja współpracuje w sposób specjalny z klawiaturą, w programie musi być zastosowana w bloku
deklaracji modułów biblioteka (zbiór danych) o nazwie Crt, odpowiedzialna za obsługę klawiatury i ekranu.
Do deklaracji modułów służy słowo kluczowe USES.
Poniżej przedstawiono sposób deklaracji modułu biblioteki Crt oraz umiejscowienie instrukcji ClrScr.
USES Crt;
…………………
BEGIN
ClrScr;
Ćwiczenie
Odczytać z dysku plik o nazwie firma.pas. Wprowadzić do programu słowo kluczowe USES (deklaracja modułów) wraz z
biblioteką Crt oraz instrukcję ClrScr. Zmienić nazwę programu na „Firma_1". Zapisać zmodyfikowany program na dysku w
pliku o nazwie firma _1.pas.
♦
Uruchomić program Turbo Pascal.
♦
Odczytać z dyskietki plik o nazwie firma.pas.
♦
Dokonać modyfikacji programu zgodnie z poleceniami zawartymi w treści ćwiczenia: wprowadzić do programu słowo
kluczowe USES (deklaracja modułów) wraz z biblioteką Crt oraz instrukcję ClrScr.
Postać programu po modyfikacji została przedstawiona poniżej:
PROGRAM Firma_l;
USES Crt;
BEGIN
ClrScr;
Writeln ('
Writeln ('
END.
Ćwiczenie
ZAGRANICZNA FIRMA HANDLOWA »);
EURO - 2000 ')
Odczytać z dysku plik o nazwie euro.pas. Wprowadzić do programu słowo kluczowe USES (deklaracja modułów) wraz z
biblioteką Crt oraz instrukcję ClrScr. Zmienić nazwę programu na „Euro_1". Zapisać zmodyfikowany program na dysku w
pliku nazwie euro_1.pas.
Podstawowe operacje arytmetyczne
Liczba w Turbo Pascalu, w zależności od sposobu jej zapisu w instrukcji Write (Writeln), może być traktowana
dwojako, tj. jako znak lub wartość liczbowa.
Write ('2+2') - liczba traktowana jako znak.
W wyniku zadziałania tej instrukcji otrzymamy napis „2+2". Write (2+2) - liczba traktowana jako
wartość liczbowa.
W wyniku zadziałania tej instrukcji otrzymamy wynik dodawania, czyli 4.
Aby wyświetlana na ekranie liczba nie była znakiem lecz określoną wartością liczbową, musimy oczywiście użyć
odpowiedniego zapisu instrukcji Write (Writeln). W zapisie nie zamykamy liczby w znakach apostrofu (').
Jeśli wprowadzamy liczbę zawierającą części dziesiętne, to oddzielamy je kropką (.) od części całkowitej (np. 12.24).
Jeśli wprowadzamy liczbę ujemną, to należy oczywiście poprzedzić ją znakiem minus (np. -5.8).
Z powyższego wynika, że jeśli w programie arytmetyczne działanie na liczbach zostanie przedstawione w zapisie
instrukcji Write (Writeln) np. w postaci:
Write (3+5);
to po jego uruchomieniu otrzymamy wynik tego wyrażenia, czyli wartość 8.
Operacje mnożenia, dzielenia, potęgowania, „DIV" i „MOD" mają taki sam priorytet, jeśli chodzi o kolejność
wykonywania działań. Działania dodawania i odejmowania są równe, ale mają niższy priorytet niż pozostałe działania.
Przy jednakowych priorytetach działania wykonywane są od strony lewej do prawej. Nawiasy mają, niezależnie od
występujących działań, najwyższe priorytety.
Poniżej przedstawione zostały operatory i ich działanie.
Tabela 4. Podstawowe operacje arytmetyczne
Operatory
+ ( znak plus )
- ( znak minus )
Operatory
* (gwiazdka)
Działanie
dodawanie
odejmowanie
Działanie
mnożenie
/ ( slash )
SQRT
DIV
MOD (modulo)
dzielenie
pierwiastek kwadratowy
dzielenie całkowite bez reszty
reszta z całkowitego dzielenia
Osobnego wyjaśnienia wymagają operatory DIV i MOD.
Przykładowo, przy dzieleniu liczb 37:11 (oba operatory mogą wystąpić tylko przy operacji dzielenia) otrzymamy w
wyniku 3 oraz resztę 4.
Operator DIV umożliwia uzyskanie całkowitej wartości liczbowej z wyniku dzielenia, reszta zaś jest odrzucana.
Jeśli chcemy na przykład uzyskać tylko całkowitą wartość liczbową (3) z dzielenia 37:11, musimy użyć operatora DIV.
Zapis działania z użyciem operatora DIV ma postać: 37 DIV 11 i w jego wyniku otrzymamy tylko całkowitą wartość
liczbową w postaci właśnie liczby 3.
Operator MOD (modulo) umożliwia uzyskanie tylko wartości reszty z wyniku dzielenia, zaś całkowita wartość
liczbowa jest odrzucana.
Jeśli chcemy na przykład uzyskać tylko wartość reszty (4) z dzielenia 37:11, musimy użyć operatora MOD.
Zapis działania z użyciem operatora MOD ma postać: 37 MOD 11. W jego wyniku otrzymamy właśnie tylko resztę z
dzielenia, tj. 4.
W programach wyświetlając dowolną liczbę otrzymujemy jej wynik w postaci notacji naukowej.
Rysunek 9. Liczba -3.5 w notacji naukowej
Wyświetlając na przykład liczbę -3.5 otrzymujemy jej zapis (rysunek 9.) w notacji naukowej (-3 i 10 miejsc po kropce
dziesiętnej razy E+00, czyli 10 do potęgi 00).
W następnym rozdziale poznamy sposoby przedstawiania wyników liczbowych w postaci przejrzystej, tj.
sformatowanej, czyli z określoną liczbą miejsc przed i po kropce dziesiętnej.
Formatowanie liczb
Funkcje Write i Writeln umożliwiają przedstawianie liczb w postaci sformatowanej, tj. z określoną liczbą miejsc przed
i po kropce dziesiętnej.
Aby uzyskać postać sformatowaną należy argument funkcji Write (Writeln) uzupełnić o określenie szerokości pól
postaci:
: szerokość pola: liczba miejsc po kropce
W zapisie:
Write (-4567.987654:12:4)
określiliśmy szerokość pola podając, że jest ono 12-znakowe z 4 cyframi po kropce dziesiętnej (:12:4). Liczba zostanie
wyświetlona w postaci:
-4567.9876
W skład pola przeznaczonego na liczbę wchodzi również znak i kropka dziesiętna, a wykładnik zawsze posiada znak i
zera wiodące.
Jeśli występująca liczba jest za duża, by mogła się zmieścić we wcześniej określonym polu, szerokość jego jest
ignorowana i Turbo Pascal wyprowadza liczbę ze wszystkimi cyframi znaczącymi.
Ćwiczenie
Napisać program obliczający wyrażenie algebraiczne:
( 2 * 3 + 1 7 ) / 9
Dla obliczanego wyniku przyjąć format: 4 cyfry po kropce dziesiętnej w polu 7-znakowym. Program ma tytuł „Dzielenie".
Program po uruchomieniu ma wyświetlić zapis działania oraz przedstawić obliczony wynik. Zapisać program na dysku w
pliku o nazwie dzieli.pas.
PROGRAM Dzielenie;
USES Crt;
BEGIN
ClrScr;
Write ('(2*3+17)/9 =',(2*3+17)/9:7:4);
END.
Ćwiczenie
Napisać program obliczający wyrażenie algebraiczne:
( 4 2 + 2 * 4 * 7 + 7 2 ) /(5 + 37:4)
Dla obliczanego wyniku przyjąć format: 4 cyfry po kropce dziesiętnej w polu 12-znakowym. Program ma tytuł „Oblicz".
Program po uruchomieniu ma wyświetlić zapis działania oraz przedstawić obliczony wynik. Zapisać program na dysku w
pliku o nazwie oblicz.pas.
Ćwiczenie
Uruchomić program Turbo Pascal. Napisać program obliczający powierzchnię całkowitą i objętość sześcianu o boku 5.875
cm. Przyjąć następujące oznaczenia:
Ppc - pole powierzchni całkowitej sześcianu;
V - objętość sześcianu;
Dla obliczanego wyniku przyjąć format: 3 cyfry po kropce dziesiętnej w polu 8-znakowym. Program ma tytuł
„Szescian_1". Program po
rozmieszczone w kolejnych wierszach przedzielonych jednym wierszem, a pod każdym z nich odpowiednie wyniki
obliczeń. Zapisać program na dysku w pliku o nazwie szesc_1.pas.
Cały program został przedstawiony poniżej:
PROGRAM Sześcian 1;
USES Crt;
BEGIN
ClrScr;
Writeln ('Sześcian o boku 5.875 cm'); Writeln;
Writeln ('Obliczenie pola powierzchni całkowitej');
Writeln;
Writeln ('Ppc = ',6*5.875*5.875:8:3,’ cm kw.');
Writeln;
Writeln ('Obliczenie objętości');
Writeln;
Writeln ('Obj = ',5.875*5.875*5.875:8:3,' cm szes.');
END.
Wprowadzanie stałych
Często zdarza się, że za pomocą już istniejącego programu chcemy uzyskać wynik dla innej wartości określonych danych
(np. boku sześcianu). Wówczas występuje konieczność dokonania zmiany wartości w całym programie.
W programie z poprzedniego ćwiczenia wartość boku sześcianu (5.875) występuje w sześciu miejscach i tylu zmian
musielibyśmy dokonać przy zmianie tej wartości na inną (np. 7.225). Wprowadzenie zmian do programu nie byłoby specjalnie
kłopotliwe, ale w przypadku programów, w których wartość do zmiany występuje wiele, byłoby to bardzo pracochłonne i
kłopotliwe (łatwość pomyłek).
W Turbo Pascalu istnieje funkcja umożliwiająca odpowiednie zapisanie programu, tak aby dokonanie zmiany danej
wartości w jednym miejscu modyfikowało ją w całym programie.
Do tego celu służy słowo kluczowe CONST (stała) umieszczone w bloku deklaracyjnym. Po tym słowie deklarujemy
dane, które przybierają określoną stałą wartość. Nasze dane zadeklarujemy jako stałe. W bloku deklaracyjnym stałe mają
określoną wartość, zaś w pozostałej części programu występuje tylko nazwa_stałej.
Postać ogólna deklaracji stałej: CONST
nazwa_stałej = wartość;
Poniżej podano przykład deklaracji stałej:
CONST a=8;
Zadeklarowana została stała a o wartości 8. Oznacza to, że w całym programie pod nazwę tej stałej zostanie podstawiona
wartość 8.
Ćwiczenie
Uruchomić program Turbo Pascal. Napisać program obliczający powierzchnię całkowitą i objętość sześcianu o boku a=7.225
cm. Przyjąć następujące oznaczenia:
Ppc - pole powierzchni całkowitej sześcianu;
V - objętość sześcianu;
Dla obliczanego wyniku przyjąć format: 3 cyfry po kropce dziesiętnej w polu 8-zna-kowym. Program ma tytuł
„Sześcian_2". Zapisać program na dysku w pliku o nazwie szesc_2.pas.
Po słowie kluczowym CONST deklarujemy stałą a, która przybiera wartość 7.225. W bloku deklaracyjnym nasza stała ma
określoną wartość, zaś w pozostałej części programu występuje tylko nazwa a. Podczas wykonywania programu w miejsce
nazwy a zostanie podstawiona wartość stałej, tj. 7.225.
A oto i nasz cały program:
PROGRAM Szescian_2;
USES Crt;
CONST a=7.225;
BEGIN
ClrScr;
Writeln ('Sześcian o boku a=',a:6:3,' cm');
Writeln;
Writeln ('Obliczenie pola powierzchni całkowitej');
Writeln;
Writeln ('Ppc = ',6*a*a:8:3,' cm kw.');
Writeln;
Writeln ('Obliczenie objętości');
Writeln;
Writeln ('Obj = ',a*a*a:8:3,' cm szes.');
END.
Ćwiczenie
Napisać program na obliczenie średniej arytmetycznej trzech liczb a, b i c. Przyjąć następujące dane: a=8, b=12 i c=16. Dla
obliczanego wyniku przyjąć format o polu 6-znakowym z 2 miejscami po przecinku. Wynikiem będzie iloraz w postaci liczby
rzeczywistej, stąd wynika konieczność określenia czytelnego jego formatu. Program nosi tytuł „Srednia_1". Zapisać program
na dysku w pliku o nazwie sred_1.pas.
Musimy pamiętać, że mamy do czynienia z trzema stałymi danymi: a, b i c. Dane te muszą być zadeklarowane w bloku
deklaracyjnym, po słowie kluczowym CONST.
Poniżej został przedstawiony cały program.
PROGRAM Srednial;
USES Crt;
CONST
a=8;
b=12;
c=16;
BEGIN
ClrScr;
Writeln (‘ Średnia arytmetyczna trzech liczb:');
Writeln ('a =',a,', b = ‘,b,’, c = ',c);
Writeln ;
Write ('średnia arytmetyczna =',(a+b+c)/3:6:2);
END.
Wprowadzanie zmiennych
Do tej pory w programach stosowaliśmy wyrażenia zawierające stałe liczbowe (np. -3.5), stałe znakowe (np. 'A') czy
stałe tekstowe (np. 'Kowalska').
Turbo Pascal umożliwia również wprowadzanie zmiennych już po uruchomieniu programu z zewnątrz (np. z
klawiatury). Możliwe jest to dzięki zastosowaniu instrukcji Read lub Readln.
Do tej pory program Turbo Pascal sam rozpoznawał stałe zawarte w naszych programach, jak również wyniki
uzyskiwane z operacji na tych stałych i rezerwował dla nich odpowiednią ilość miejsca w pamięci.
Inaczej sprawa wygląda, gdy chcemy do programu wprowadzić wyrażenia z zewnątrz (np. z klawiatury). Wyrażenia te
noszą nazwę zmiennych. Program Turbo Pascal musi znać typy zmiennych (zakresy, do jakich będą należały wprowadzane
wyrażenia, jak również zakresy wyników z operacji na tych wyrażeniach).
W programie musimy więc w bloku deklaracyjnym zadeklarować zmienne używając słowa kluczowego VAR. Potem
musimy określić typy zmiennych (przedziały, zakresy liczbowe, z jakich będą pochodziły wprowadzane wyrażenia, jak
również wyniki obliczeń). Ogólna postać deklaracji zmiennej została przedstawiona poniżej:
VAR (słowo kluczowe) nazwazmiennej: typ zmiennej;
Przykład deklaracji zmiennej b typu INTEGER:
VAR
b : INTEGER;
Została zadeklarowana zmienna b typu INTEGER (liczba całkowita).
W Turbo Pascalu nazwa zmiennej zależy od programisty (nie może się zaczynać od cyfry). Typ zmiennej określa jej
postać widzianą z jednej strony przez programistę, a z drugiej strony przez komputer. Do najczęściej stosowanych typów
należą:
INTEGER
- liczba całkowita ze znakiem, od -32768 do +32767
REAL
- liczba rzeczywista, od 2.9E-39 do 1.7E+38
CHAR
BOOLEAN
- pojedynczy znak kodu ASCII
- wartość logiczna: TRUE (Prawda) lub FALSE (Fałsz).
Typ INTEGER odpowiada określonemu zakresowi liczb całkowitych, zaś REAL pewnemu zakresowi liczb
rzeczywistych (oczywiście liczba jest ze znakiem: plus lub minus).
Typ CHAR obejmuje zbiór wszystkich dopuszczalnych znaków znajdujących się w tabeli kodowej ASCII.
Typ BOOLEAN służy do deklarowania zmiennych logicznych przyjmujących jedynie dwie wartości: TRUE (Prawda)
lub FALSE (Fałsz). Ten typ bardzo często jest stosowany w sterowaniu wykonaniem programu, tj. w instrukcjach
warunkowych i pętlach. Przedstawione typy dotyczą zarówno zmiennych, jak i stałych.
Tabela 5. Typy pokrewne dla typu INTEGER
NAZWA
SHORTIN
LONGINT
BYTE
WORD
ZAKRES
od -128 do 127
od-2147483648 do +2147483647
od 0 do 255
od 0 do 65535
Tabela 6. Typy pokrewne dla typu REAL
NAZWA
ZAKRES
SINGLE
DOUBLE
EXTENDED
COMP
od 1.5E-45 do 4.0E38
od 5.0E-324 do 1.7E308
od 3.4E-4932 do 1.1E4932
od -9.E18 do 9.2E1S
DOKŁADNOŚĆ (liczba cyfr
po przecinku)
7 do 8
15 do 16
19 do 20
19 do 20
Oprócz przedstawionych wcześniej czterech typów istnieją jeszcze typy pokrewne dla typów INTEGER i REAL. Każdy
z typów może być użyty do określonego celu.
Instrukcja standardowa Read
Instrukcja Read umożliwia wprowadzenie danych z zewnątrz (np. klawiatury) do uruchomionego już programu.
Instrukcja ta nie powoduje automatycznie późniejszego przejścia kursora do nowej linii.
Postać instrukcji standardowej Read jest następująca: Read (lista argumentów),
gdzie lista argumentów może być ciągiem znaków stałych, zmiennych lub wyrażeń oddzielonych przecinkami.
Przykład zapisu wprowadzenia zmiennej b typu INTEGER (po jej wcześniejszym zadeklarowaniu) został przedstawiony
poniżej:
Read (b);
Ćwiczenie
Napisać program obliczający powierzchnię pola prostokąta o bokach a i b. Bok a prostokąta ma wartość stalą równą 10 cm.
Wartość boku b należy do typu INTEGER i będzie wprowadzana do programu już po jego uruchomieniu. Przyjąć następujące
oznaczenia:
Pp - pole powierzchni prostokąta. Dla obliczanego wyniku przyjąć format o polu 6-znakowym. Program ma tytuł „Pole
_prostokata_l". Zapisać program na dysku w pliku o nazwie pole _1.pas.
Cały program został przedstawiony poniżej.
PROGRAM Pole prostokąta 1;
USES Crt;
CONST
a = 10;
VAR
b:INTEGER;
BEGIN
ClrScr;
Writeln (' Obliczenie pola powierzchni prostokąta ');
Writeln;
Write (' Podaj wartość boku b - w cm, b= ');
Read (b);
Writeln;
Writeln (' Boki wynoszą: a = ',a,' cm oraz b = ',b,' cm ');
Writeln;
Write (' Pp = ',a*b,' cm kw. ');
END.
Instrukcja standardowa Readln
Instrukcja Readln umożliwia wprowadzenie danych z zewnątrz (np. klawiatury) do uruchomionego już programu
powodując automatycznie późniejsze przejście kursora do nowej linii.
Postać instrukcji standardowej Readln jest następująca: Readln (lista argumentów), gdzie lista argumentów może być
ciągiem znaków stałych, zmiennych lub wyrażeń oddzielonych przecinkami.
Przykład zapisu wprowadzenia zmiennej c typu INTEGER (po jej wcześniejszym zadeklarowaniu) został przedstawiony
poniżej:
Readln (c);
W szczególności, jeśli lista argumentów będzie pusta, instrukcja ta nie będzie robiła niczego poza oczekiwaniem na
wprowadzenie znaku nowego wiersza, tj. naciśnięcie klawisza ENTER. Zasada działania instrukcji Readln jest więc bardzo
podobna do działania instrukcji Read.
Ćwiczenie
Napisać program obliczający powierzchnię pola prostokąta o bokach a i b. Wartość boków a i b należy do typu REAL i będzie
wprowadzana do programu już po jego uruchomieniu. Dla wartości a i b przyjąć format o polu 6-znakowym z 2 miejscami po
przecinku. Przyjąć następujące oznaczenie:
Pp - pole powierzchni prostokąta. Dla obliczanego wyniku przyjąć format o polu 10-znakowym z 2 miejscami po
przecinku. Program ma tytuł „Pole_prostokata_2". Zapisać program na dysku w pliku o nazwie pole_2.pas.
Cały program został przedstawiony poniżej:
PROGRAM Pole_prostokata_2;
USES Crt;
VAR
a,b:REAL;
BEGIN
ClrScr;
Writeln (' Obliczenie pola powierzchni prostokąta ');
Writeln;
Write (' Podaj wartość boku a prostokąta - w cm, a= ');
Readln (a);
Writeln;
Write (' Podaj wartość boku b prostokąta - w cm, b= ');
Readln (b);
Writeln;
Writeln ('Boki wynoszą a = ',a:6:2,' cm, b = ',b:6:2,' cm');
Writeln;
Write (* Pp = ',a*b:10:2,' cm kw.');
END.
Ćwiczenie
Napisać program obliczający wartość średniej arytmetycznej trzech liczb rzeczywistych: m, n i p, wprowadzonych po
uruchomieniu programu. Dla wartości tych liczb przyjąć format o polu 6-znakowym z 2 miejscami po przecinku. Dla
obliczanego wyniku przyjąć format o polu 10-znakowym z 2 miejscami po przecinku. Program ma tytuł „Srednia_3".
Zapisać program na dysku w pliku o nazwie sred_3.pas.
Instrukcja przypisania
Instrukcja przypisania służy do przypisania zmiennym pewnej wartości.
Ma ona postać:
zmienna := wyrażenie
Wykonanie tej instrukcji powoduje przypisanie (podstawienie) wartości wyrażenia zapisanego po prawej stronie
symbolu := zmiennej stojącej po lewej jego stronie. Wyrażenie musi być tego samego typu co zmienna lub wynik funkcji
umieszczonej z lewej strony symbolu przypisania.
Poniżej przedstawiono przykład instrukcji przypisania : a:= 12, b:= 13, c:= a+b.
Zmienna c przyjmuje wartość 25.
Ćwiczenie 22
Napisać program obliczający długość obwodu trójkąta, jeśli jego boki wynoszą: a=5, b=7 i c=4. Zmienną jest obwód. Dla
obliczanego wyniku przyjąć format o polu 6-zna-kowym. Program ma tytuł „Obwod_trojkata_1". Zapisać program na dysku
w pliku o nazwie obwod_1.pas.
Cały program został przedstawiony poniżej:
PROGRAM Obwodtrojkata_1;
USES Crt;
VAR
obwod:INTEGER;
CONST a=5;b=7;c=4;
BEGIN
ClrScr;
obwod:=a+b+c;
Writeln (' Obliczanie obwodu trójkąta ');
Writeln;
Writeln (' Boki trójkąta: a= ', a,', cm, b= ', b,’, cm, c= ', c,' cm’);
Writeln ('Obwód trójkąta = ',obwod,' cm')
END.
Ćwiczenie 23
Napisać program obliczający wartość x z równania:
a•x + b = c.
Wartości a, b, c oraz x należą do zbioru liczb rzeczywistych.
Dla wartości tych liczb przyjąć format o polu 6-znakowym z 2 miejscami po przecinku. Dla obliczanego wyniku (x) przyjąć
format o polu 10-znakowym z 2 miejscami po przecinku. Program ma tytuł „Row_liniowe_1". Zapisać program na dysku w
pliku o nazwie rlin_1.pas.
Uwaga:
Po przekształceniu równania ze względu na x otrzymamy:
x=(c-b)/a
Ćwiczenie
Otworzyć z dyskietki plik o nazwie rlin_1.pas zawierający program o nazwie „Row_liniowe_1", a następnie go uruchomić.
Dokonać obliczeń dla następujących danych: a=0, b=3 oraz c=7.
Po uruchomieniu programu i wprowadzeniu do niego naszych danych, został w pierwszym wierszu wyświetlony
następujący komunikat:
Error 200: Division by zero (błąd: dzielenie przez zero).
Komunikat ten został spowodowany podaniem wartości 0 (zero) dla zmiennej a, która występuje w dzielniku wyrażenia.
Nasz program nie ma więc zabezpieczenia w przypadku wprowadzania wartości 0 dla dzielnika.
♦
W celu usunięcia komunikatu o błędzie należy nacisnąć klawisz Esc.
♦
Wyjść z Turbo Pascala.
W Turbo Pascalu mamy możliwość skorzystania z funkcji warunkowej sprawdzającej podawane wartości (wyrażenia)
do programu. Możemy badać, czy dana wartość, na przykład boku prostokąta, nie jest mniejsza od zera lub czy dzielnik we
wzorze nie jest równy zeru.
Instrukcja warunkowa IF...THEN
W Turbo Pascalu istnieją dwie instrukcje warunkowe. Są to: instrukcja „IF...THEN" (Jeśli) oraz instrukcja wyboru
CASE.
Zanim przejdziemy do instrukcji warunkowej niezbędne jest przypomnienie pojęcia wyrażenia logicznego.
Do konstrukcji wyrażenia logicznego wykorzystuje się w Turbo Pascalu typ Boolean. Typ ten posiada dwie stałe:
TRUE (Prawda) i FALSE (Fałsz). Z tego widać, że zmienne typu logicznego mogą przyjmować te dwie wartości.
Na zmiennych typu logicznego i wartościach logicznych można wykonywać określone operacje: NOT (negacja), AND
(iloczyn logiczny) i OR (suma logiczna).
Operator NOT podaje wartość TRUE (Prawda), jeśli wyrażenie przyjmuje wartość FALSE (Fałsz).
Operator AND podaje wartość TRUE (Prawda), jeśli obydwa wyrażenia są prawdziwe. W przeciwnym razie mamy
wartość FALSE (Fałsz).
Operator OR podaje wartość TRUE (Prawda), jeśli co najmniej jedno z wyrażeń jest prawdziwe.
Operacje wykonywane są w następującej kolejności: najpierw NOT, potem AND, a następnie O R .
W wyrażeniach logicznych można też używać operatorów relacji (tabela 7).
Tabela 7. Operatory relacji
Operator relacji
=
<>
<
>
<=
>=
Znaczenie
równe
różne
mniejsze
większe
mniejsze lub równe
większe lub równe
Instrukcja warunkowa IF...THEN ma postać:
IF warunek (wyrażenie logiczne) THEN instrukcja_1 ELSE instrukcja_2
Jeśli warunek jest spełniony, wówczas następuje wykonanie instrukcji_l; w przeciwnym przypadku wykonana zostanie
instrukcja_2. W zapisie instrukcji IF...THEN instrukcja_2 może nie występować i wtedy instrukcja_l jest albo wykonywalna
albo nie, w zależności od wartości przyjmowanej przez warunek. Warunek jest wyrażeniem logicznym przyjmującym dwie
wartości: TRUE i FALSE.
Podana „instrukcja" może być zarówno pojedynczą instrukcją Turbo Pascala, jak i grupą instrukcji ujętych w „nawiasy"
BEGIN-END (co przedstawiono poniżej):
IF warunek (wyrażenie logiczne) THEN BEGIN
instrukcja_l;
instrukcja_2;
……………
instrukcja_k
END
ELSE instrukcja_n;
Po słowie END znajdującym się bezpośrednio przed słowem kluczowym ELSE nie występuje średnik.
Spróbujemy teraz napisać program na obliczanie wartości x z zabezpieczeniem przed dzieleniem przez zero.
Ćwiczenie 25
Napisać program obliczający wartość x z zabezpieczeniem w przypadku wprowadzenia wartości a=0 z równania:
a • x +b = c .
Wartości a, b, c oraz x należą do zbioru liczb rzeczywistych. Przyjąć dla nich format o polu 6-znakowym z 2 miejscami po
pizecinku. Dla obliczanego wyniku ( x ) przyjąć format o polu 10-znakowym z 2 miejscami po przecinku. Program nosi tytuł
„Row_Liniowe _2". Zapisać program na dysku w pliku o nazwie rlin_2.pas.
Napisać program na obliczenie niewiadomej x z równania: a • x + b = c.
Uwaga:
Do naszych celów możemy również wykorzystać uprzednio napisany program o nazwie Row_liniowe_l zapisany w pliku
rlin.pas. Po odczytaniu tego programu dokonamy w nim zmianę wprowadzając instrukcję warunkową sprawdzającą
wprowadzoną wartość liczby a.
Jeśli wartość a (mianownik wyrażenia) będzie równa zero, to program wyświetli komunikat (instrukcja_l) „Nie dziel przez
zero", w przeciwnym wypadku (a < > 0) dokona wyświetlenia wprowadzonych wartości liczbowych a, b i c oraz wyliczenia
wartości x (instrukcja_2).
Należy pamiętać o zmianie nazwy programu.
Cały program został przedstawiony poniżej:
PROGRAM Rowliniowe_2;
USES Crt;
VAR
a, b, c, x : REAL;
BEGIN
ClrScr;
Writeln (' Obliczenie wartości - x - z równania liniowego a*x+b=c');
Writeln;
Write (' Podaj wartość a, a= ');
Read (a);
Writeln;
Write (' Podaj wartość b, b= ');
Read (b);
Writeln;
Write (' Podaj wartość c, c= ');
Read (c);
Writeln;
IF a=0 THEN
Writeln ('Nie dziel przez zero, a=0')
ELSE
BEGIN
WritelnC a= ',a:6:2,', b= \b:6:2,*, c= ',c:6:2);
Writeln;
x:=(c-b)/a;
Writeln (' Wartość x =',x:10:4);
END
END.
Należy zwrócić uwagę na słowo kluczowe END zamykające blok instrukcji do wykonania. Jak widać, po słowie END nie
występuje średnik, ponieważ w następnym wierszu nie mamy już żadnej instrukcji lecz tylko słowo kluczowe END z
„kropką"
zamykające cały program.
Ćwiczenie 26
Otworzyć z dyskietki plik o nazwie pole_1.pas zawierający program o nazwie „Pole_prostokata_1", a następnie wprowadzić
instrukcję warunkową zabezpieczającą program przed wprowadzeniem dla boku b wartości mniejszej lub równej zero
(b<=0). W tym przypadku ma się ukazać komunikat „Prostokąt nie istnieje". W programie zmienić jego nazwę na „Pole
_prostokata_3". Zapisać program na dysku w pliku o nazwie pole_3.pas.
Ćwiczenie
Napisać program, z zabezpieczeniem w przypadku wprowadzenia wartości a<=0 i b<=0, na obliczenie powierzchni pola
prostokąta o bokach a i b. Wartość boków a i b należy do typu REAL i będzie wprowadzana do programu już po jego
uruchomieniu. Przyjąć następujące oznaczenia:
Pp - pole powierzchni prostokąta. Program ma tytuł „Pole jprostokataj_4". Zapisać program na dysku w pliku o nazwie
pole_4.pas.
Cały program został przedstawiony poniżej:
PROGRAM Pole_prostokata_4;
USES Crt;
VAR
a , b , P p : REAL;
BEGIN
ClrScr;
Writeln (' Obliczenie pola powierzchni prostokąta');
Writeln;
Write (' Podaj wartość boku a prostokąta - w cm, a= ');
Readln (a);
Writeln;
Write (' Podaj wartość boku b prostokąta - w cm, b= ');
Readln (b);
Writeln;
IF a*b>0 THEN
BEGIN
Writeln;
Writeln ('Boki wynoszą: a = ',a:6:2,' cm, b = ',b:6:2,' cm');
Pp:=a*b;
Writeln;
Write ('Pp = \Pp:10:2,' cm kw.');
END
ELSE
Write('Prostokat nie istnieje')
END.
Ćwiczenie 28
Napisać program wyznaczający najmniejszą z dwóch liczb rzeczywistych. Program ma tytuł „Najmniejsza_l". Zapisać
program na dysku w pliku o nazwie nąjmn_l.pas.
Ćwiczenie 29
Napisać program sprawdzający podzielność danej liczby całkowitej przez inną liczbę całkowitą. Program ma tytuł
„Podzielność_liczby". Zapisać program na dysku w pliku o nazwie podz_4.pas.
W programie wykorzystamy wcześniej poznany operator działań MOD (reszta z dzielenia). Po wprowadzeniu do programu
wartości dzielnej i dzielnika program sprawdza wartość reszty z dzielenia. Jeśli wartość operatora MOD jest równa zeru, to
dzielnik jest podzielnikiem danej dzielnej. Po tych wyjaśnieniach możemy napisać program. Został on przedstawiony poniżej.
PROGRAM Podzielnoscliczby;
USES Crt;
VAR
a , b : INTEGER;
BEGIN
ClrScr;
Writeln (' Podzielność liczby całkowitej a przez b');
Writeln;
Write (' Podaj wartość dzielnej a, a= ');
Readln(a);
Write (' Podaj wartość dzielnika b, b= ');
Readln(b);
Writeln;
Writeln (' Sprawdzenie podzielności liczby ',a ,' przez ',b);
Writeln;
IF a MOD b=0 THEN BEGIN
Writeln ('Liczba b = ', b,' jest podzielnikiem liczby a = ',a);
Writeln (a,' : ',b,' = ',a/b:5:0,', reszta = 0');
END
ELSE
Writeln (' Liczba b = ',b,' nie jest podzielnikiem liczby a = ',a);
END.
Ćwiczenie
Napisać program wyznaczający największą z trzech liczb.
Dla wprowadzanych liczb przyjąć format o polu 10-znakowym z 3 miejscami po przecinku. Program ma tytuł
„Nąjwiększa_1". Zapisać program na dysku w pliku o nazwie najw_1.pas.
Ćwiczenie 31
Napisać program sprawdzający warunki istnienia trójkąta przy zadanych wartościach jego boków wprowadzanych do
programu po jego uruchomieniu. Program ma tytuł „Trojkat_1". Zapisać program na dysku w pliku o nazwie trojka_1.pas.