Algorytmy i programowanie w Pascalu - podstawy
I. Algorytmika
Algorytm określa „przepis” na zrealizowanie przez program postawionego zadania. Przepis ten ma zapewniać rozwiązanie problemu w skończonej liczbie kroków. Algorytm stanowi wzorzec do tworzenia programu komputerowego.
Rodzaje przedstawiania algorytmów:
Algorytm w postaci krokowej - zawiera tekstową listę działań (kroków) algorytmu oraz ewentualne warunki przechodzenia do innych kroków.
przykład: algorytm rozwiązania równania ax + b = c dla dowolnych a, b, c.
krok 1: Odczytaj wartości a,b,c. Jeżeli a=0 to przejdź do kroku 3.
krok 2: Oblicz (c-b)/a i podaj wynik jako rozwiązanie równania. Przejdź do kroku 4.
krok 3: Jeżeli b=c, to napisz komunikat, że równanie jest prawdziwe dla każdego x, a w przeciwnym razie, że nie ma żadnych rozwiązań (równanie sprzeczne).
krok 4: Zakończ działanie programu.
Algorytm w postaci sieci działań. Poszczególnym krokom lub grupom kroków odpowiadają tu bloki o różnym kształcie:
bloki prostokątne - zawierają polecenia wykonania obliczeń lub innych działań na danych.
bloki o kształcie równoległoboku - zawierają polecenia dotyczące odczytywania danych i wyświetlania wyników.
bloki o kształcie rombu - bloki warunkowe, w których następuje sprawdzenie warunku. Z bloku warunkowego można wyjść w jednym z dwóch kierunków zależnie od tego, czy warunek jest spełniony czy nie.
bloki owalne - dla start i stop
II. Wprowadzenie do programowania.
Program komputerowy jest to ciąg rozkazów wykonywanych przez mikroprocesor. W naturalnej postaci to kod maszynowy (bajty zapisane w postaci zer i jedynek).
Tworzenie programów w postaci kodu maszynowego było bardzo skomplikowane, a uproszczenie tego procesu staje się możliwe dzięki opracowaniu:
języków programowania - zasad służących do konstruowania programów komputerowych;
systemów programowania - oprogramowania służącego do edycji, sprawdzania, tłumaczenia i wykonania programu zgodnie z regułami danego języka.
Program źródłowy - program sformułowany w języku programowania.
Program wykonywalny (wynikowy) - program powstały przez przetłumaczenie programu źródłowego na kod maszynowy.
Program służący do tłumaczenia programu źródłowego na program wykonywalny nazywa się translatorem.
Istnieją dwa rodzaje translatorów:
interpletery (np. Qbasic) - tłumaczą poszczególne polecenia programu źródłowego na instrukcje mikroprocesora i przekazują od razu do wykonania przez mikroprocesor. Po zakończeniu wykonywania jednej instrukcji, tłumaczy następną ...itd.
kompilatory - tłumaczą cały program źródłowy na wykonywalny. Wykonanie programu może się rozpocząć dopiero po zakończeniu tłumaczenia przez kompilator całego programu źródłowego.
Etapy tworzenia programu komputerowego.
Określenie zadania do którego ma program służyć.
Opracowanie algorytmu rozwiązania zadania.
Utworzenie programu źródłowego w danym języku programowania.
Tłumaczenie (kompilacja) programu źródłowego na program wykonywalny.
Przygotowanie danych, uruchomienie i testowanie programu.
TURBO PASCAL
Pascal był jednym z najpopularniejszych języków programowania komputerów.
Powstał on w 1971 roku, kiedy to Niklaus Wirth opublikował pierwszy artykuł o nim.
Upowszechnienie Pascala nastąpiło po roku 1974, w którym Wirth, wydał wraz z Kathleem Jensen pierwszy podręcznik tego języka. W zamierzeniu Wirtha język Pascal miał służyć przede wszystkim do nauki programowania strukturalnego, czyli określania dużych elementów poprzez elementy niższego rzędu, aż do końcowych elementów programowych realizujących określone funkcje.
Wraz z rozwojem techniki mikrokomputerów pojawiły sie liczne wersje języka Pascal. Światowy prymat należy jednak do tzw. Turbo Pascala, wprowadzonego na rynek w 1983 roku przez amerykańską firmę Borland International Inc.
Stałe wzbogacanie i doskonalenie języka Turbo Pascal przez Borland doprowadziło do powstania pod koniec 1992 roku wersji 7.0 która pojawiła sie na rynku w postaci dwóch pakietów: Borland Pascal 7.0 i Turbo Pascal 7.0 .
Zintegrowane systemy programowania i sam język Turbo Pascal cechują:
okienkowość systemów programowania,
wielozbiorowy edytor, generujący zbiory tekstowe w kodzie ASCII,
możliwość sterowania za pomocą myszki,
środki śledzenia wykonywania programów oraz lokalizacji i usuwania ich błędów,
programowanie strukturalne,
możliwość pisania fragmentów programów w asemblerze i traktowania funkcji jak procedur,
programowanie grafiki,
możliwość usuwania zbędnych fragmentów tekstów,
przeglądanie modułów, obiektów i identyfikatorów,
wyróżnianie identyfikatorów, słów kluczowych, łańcuchów, komentarzy.
Struktura programu pascalowego.
nagłówek |
program nazwa_programu; |
sekcja deklaracji |
deklaracje modułow (uses); deklaracje stałych (const); deklaracje zmiennych (var); procedury i funkcje (procedure, function); definicje typów (type); |
sekcja instrukcji |
BEGIN instrukcja 1; instrukcja 2; ... instrukcja i; ... instrukcja n; END. |
Alfabet języka Pascal.
Wielkie i małe litery alfabetu łacińskiego.
Cyfry: 0 1 2 3 4 5 6 7 8 9 0.
Symbole specjalne:
jednoznakowe:
+ |
- |
* |
/ |
= |
< |
> |
[ |
] |
. |
, |
: |
; |
( |
) |
{ |
} |
spacja |
dwuznakowe:
<> |
<= |
>= |
:= |
.. |
Działania na zmiennych:
+,-,*,/ - operacje arytmetyczne;
div - dzielenie całkowite, np. (5div3)=1;
mod - reszta z dzielenia liczb całkowitych, np. (5mod3)=2;
abs(x) - |x|;
sqr(x) - x2;
sqrt(x) - pierwiastek kwadratowy z liczby x;
sin(x), cos(x) - funkcje trygonometryczne kąta (x - radiany);
ln(x) - logarytm naturalny;
arctan(x) - funkcja odwrotna do funkcji tangens;
Najważniejsze słowa kluczowe:
program, begin, end, div, mod, and, or, not, if, then, else, for, to, downto, do, case, repeat, until, while, procedure, function, var, type, const, array, string, file, record, uses, with.
Polecenia wyświetlania i wczytania danych:
write(x) - wyświetl wartość zmiennej x i pozostaw kursor w tej samej linii;
writeln(x) - wyświetl wartość zmiennej x i przenieś kursor do nowej linii;
write(`witaj'), writeln(`witaj') - wyświetl tekst `witaj' bez przenoszenia (lub z przeniesieniem) kursora do nowej lini.
read(x), readln(x) - wczytaj wartość zmiennej x i pozostaw kursor w tej samej linii (lub przenieś kursor do nowej linii);
Podstawowe (wybrane) typy danych w języku Pascal.
typ integer - zbiór liczb całkowitych (-32768<c<32767).
Kompilator rezerwuje dla zmiennej tego typu 2 bajty pamięci.
przykład deklaracji zmiennej tego typu:
var c, suma:integer;
typ real - zbiór liczb rzeczywistych (-3,402*1038<r<3,402*1038) (6 bajtów).
przykład deklaracji zmiennej tego typu:
var r, iloraz:real;
typ boolean - zbiór wartości logicznych, dwuelementowy{false, true};
operatory: AND, OR, NOT (i, lub, nie).
przykład deklaracji zmiennej tego typu:
var a,b,c:boolean;
typ char - znakowy - uporządkowany zbiór 256 znaków ASCII (kody ASCII - każdemu znakowi klawiatury odpowiada numer (kod) 0...255), (1 bajt pamięci);
przykład deklaracji zmiennej tego typu:
var znak,klawisz:char;
składnia: `A' `B' `*' - oznacza: znak A, znak B, znak *.
#65 - znak o numerze 65 (A)
#148 - znak o numerze 148 (ö)
ord(`x') - dla x typu char zwróci numer kodu znaku x w ciągu znaków ASCII.
np.
ord(`A') ≡ 65,
ord(`x') ≡ 120,
char(i) - jest znakiem ASCII odpowiadającym numerowi (kodowi) i.
np. char(120) ≡ x, char(65) ≡ A,
typ string - typ łańcuchowy - określa ciąg znaków. Elementy tego ciągu muszą być typu char;
przykład deklaracji zmiennej tego typu: var nazwa: string[liczba znaków];
var s: string[25];
niektóre polecenia: ord(s[0]), length(s) - liczba znaków w łańcuchu s;
insert(s,d,n) - wstawi do łańcucha d łańcuch s zaczynając w miejscu n;
delete(s,n,m) - usuwa z łańcucha s, m znaków poczynając od miejsca n.
s[i] - i-ty znak łańcucha s.
typ array - typ tablicowy (złożony). Tablica to zbiór elementów tego samego typu.
2 |
12 |
33 |
14 |
56 |
- tablica jednowymiarowa; |
przykład deklaracji tablicy jednowymiarowej 100 elementowej, z elementami typu integer:
type TabJedn = array[1..100] of integer;
var x:TabJedn;
lub
var x:array[1..100] of integer;
selektor elementu tablicy: x[3] - trzeci element tablicy jednowymiarowej;
x[3]=33;
tablica dwuwymiarowa:
1.12 |
3.4 |
2.4 |
12.4 |
3.3 |
112.1 |
7.8 |
3.4 |
13.8 |
4.5 |
1.23 |
5.65 |
6.87 |
9.809 |
6.15 |
1.54 |
2.21 |
9.67 |
77.3 |
88.9 |
przykład deklaracji tablicy dwuwymiarowej o 5 kolumnach i 4 wierszach, z elementami typu real;
type TabDwu = array[1..5,1..4] of real;
var y: TabDwu;
lub
var y: array[1..5,1..4]of real;
selektor elementu tablicy: y[3,2] - element z 3-kolumny i 2-wiersza tablicy dwuwymiarowej;
y[3,2]=3.4;
Instrukcje języka Pascal.
Instrukcja podstawienia (przypisania) - służy do przypisania określonej wartości lub wyrażenia do zmiennej;
operator: :=
np. a:=12; b:=3.5; pole:=a*b;
Instrukcja warunkowa IF;
oznaczenia: W - warunek; I,I1,I2....In - instrukcja;
składnia:
IF W THEN I1 ELSE I2;
czytaj: jeśli warunek W jest spełniony to wykonuj instrukcję I1, a jeśli nie to wykonuj instrukcję I2
lub
IF W THEN I1;
czytaj: jeśli warunek W jest spełniony to wykonuj instrukcję I1, a jeśli nie to ni rób nic.
Instrukcja wyboru CASE;
wybiera jedną z wielu dróg w programie;
składnia: czytaj:
CASE x OF jeśli zmienna x jest równa x1 to wykonuj instrukcję 1;
x1: I1; jeśli zmienna x jest równa x2 to wykonuj instrukcję 2;
x2: I2; itd;
.
.
xn: In;
END;
Instrukcje iteracyjne (powtarzania);
iteracja FOR - iteracja z parametrem;
składnia:
FOR k:=A TO B DO I;
czytaj: dla k równego od A do B wykonuj (powtarzaj) instrukcję I;
FOR k:=B DAWNTO A DO I;
czytaj: dla k równego od B do A (w tył) wykonuj (powtarzaj) instrukcję I;
gdzie: A, B - liczby całkowite, A ≤ B;
iteracja REPEAT;
składnia:
REPEAT I UNTIL W;
czytaj: powtarzaj instrukcję I, aż do spełnienia warunku W.
iteracyjna WHILE;
składnia:
WHILE W DO I;
czytaj: dopóki warunek W jest prawdziwy wykonuj instrukcję I.
Edytor Systemu Pascal.
MENU
File - funkcje umożliwiające wczytanie z dysku odpowiedniego programu (polecenie Open); edycję nowego programu (polecenie New); zapisanie programu na dysku (polecenia Save, Save as, Save all), w tym ostatnim przypadku spowodujemy zapisanie na dysku wszystkich aktualnie edytowanych programów; wybranie odpowiedniego katalogu (Change dir); wyjście do systemu operacyjnego (DOS shell, Exit).
Edit - zawiera funkcje umożliwiające usunięcie z tekstu programu pewnego bloku, przeniesienie go na inne miejsce lub wielokrotne kopiowanie w różne miejsca edytowanych aktualnie programów. Dokładne działanie tych funkcji przedstawimy podczas omawiania edytora Turbo Pascala.
Search - wyszukiwanie w programie odpowiednich fragmentów bądź zastępowanie ich innymi.
Run - uruchomienie skompilowanego programu; jeśli nie zrobiono tego wcześniej, to program przed wykonaniem zostanie skompilowany.
Compile - za pomocą tej opcji dokonujemy kompilacji programu utworzonego za pomocą edytora. Jeśli podczas kompilacji zostaną wykryte błędy składniowe w programie, to wówczas następuje powrót do edytora. Na szczególną uwagę w tej opcji zasługuje funkcja Destination, która steruje wyprowadzaniem kompilowanego programu. Program może być kompilowany do pamięci komputera (memory), jest to normalny sposób kompilacji. Utworzony program może być również kompilowany bezpośrednio na dysk. Otrzymujemy wtedy zbiór z rozszerzeniem .EXE lub dla niektórych wcześniejszych wersji Turbo Pascala .COM. Program taki może być uruchomiony bezpośrednio pod kontrolą systemu operacyjnego z pominięciem kompilatora Turbo Pascala.
Options - umożliwia zdefiniowanie pewnych parametrów środowiska kompilatora. Mamy między innymi możliwość ustalenia ścieżek dostępu do różnych programów i używanych w nich pewnych dodatkowych plików.
Window - umożliwia nam odpowiednie ułożenie na ekranie okien z poszczególnymi programami, tak abyśmy mogli porównywać odpowiednie fragmenty i łatwo przechodzić od edycji jednego z nich do innego. Mamy tu kolejno funkcje: zmiana wielkości okna (Size), powiększenie okna do rozmiarów całego ekranu (Zoom), rozłożenie okien z edytowanymi programami równomiernie po całym ekranie (Tile) lub dachówkowato (Cascade), możliwość przejścia od edycji jednego z programów do programu w innym oknie (Next, Previous) oraz zamknięcie aktywnego okna.
Wykaz wybranych poleceń bezpośrednich w edytorze Turbo Pascala.
[Fl] - uzyskanie tekstu pomocy właściwego dla aktywnej opcji.
[F2] - zapisanie aktualnie edytowanego programu na dysku.
[F3] - załadowanie do edytora nowego programu.
[F5] - powiększenie okna z aktualnie edytowanym programem do wielkości całego ekranu.
[F6] - przejście do następnego okna edycji programu.
[Shift-F6] - przejście do poprzedniego okna edycji.
[F10] - opuszczenie edytora i uaktywnienie menu.
[Ctrl-F1] - uzyskanie tekstu pomocy właściwego dla danego słowa Pascala użytego w programie (jeśli takie istnieje). W celu uzyskania tej informacji, podczas edycji programu naprowadzamy kursor na odpowiednie słowo występujące w programie i naciskamy [Ctrl_F1]. Na ekranie pojawia się okienko, w którym znajduje się opis danego słowa i przykłady jego użycia. Wybrane fragmenty z okna pomocy możemy kopiować do edytowanego programu.
[Ctrl-F9] - kompilacja oraz wykonanie aktualnie edytowanego programu.
[Alt-F3] - zamknięcie okna z aktualnie edytowanym programem. Jeśli wcześniej nie zapisaliśmy programu na dysku, to jest on stracony.
[Alt-F5] - wyświetlenie ekranu użytkownika, tj. tego, na którym są uwidocznione wyniki wykonania programu.
[Alt-F9] - kompilacja aktualnie edytowanego programu.
[Alt-x] - opuszczenie środowiska Turbo Pascala i powrót do systemu operacyjnego.
opracował: Waldemar Kajkowski
4
start
czytaj a b c
a=0 ?
oblicz x=(c-b)/a
b=c ?
napisz: równanie sprzeczne
napisz: równanie zawsze prawdziwe
wyświetl wartość x
stop
TAK
NIE
TAK
NIE