1
PS/TP
TI
TI
TI
TI----PS
PS
PS
PS----4B
4B
4B
4B
Elementy zaawansowanego
programowania w Pascalu
2
PS/TP
PROGRAMOWANIE STRUKTURALNE
Lokalizacja i usuwanie usterek
w programie za pomoc
ą
debuggera
3
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ś
rodowiska Turbo Pascal 6.0/7.x oraz Free Pascal Compiler posiadaj
ą
wbudowany program debugger.
Debugger pozwala na umiejscawianie i usuwanie usterek w programach.
Z umiejscawianiem i usuwaniem usterek zwi
ą
zane s
ą
dwie opcje głównego menu
( Free Pascal Compiler ) Run i Debug:
Run
Step over(F8) (wykonywanie krokowe programu)
Run
Trace into(F7) (wykonywanie krokowe programu)
Run
Go to Cursor(F4) (skocz do miejsca programu, zaznaczonego kursorem)
Debug
Add Watch (dodanie zmiennej do okna
ś
ledzenia)
Debug
Watchs (otworzenie okna
ś
ledzenia zmiennych)
Debug
Breakpoint (dodanie punktu zatrzymania)
4
PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykładowy program (z bł
ę
dem) do demonstracji wykorzystania debuggera:
program testowy;
uses crt;
const size = 20;
var nr : integer;
tab : array[1..size] of real;
dzielnik, iloraz, suma_ilorazow : real;
BEGIN
clrscr;
randomize;
suma_ilorazow := 0.0;
writeln('Program testowy');
{ustaw warto
ś
ci tablicy}
for nr := 1 to size do tab[nr] := random(200);
5
PS/TP
PROGRAMOWANIE STRUKTURALNE
{wy
ś
wietl tablic
ę
}
writeln;
for nr := 1 to size do writeln(tab[nr],' ');
{obliczenia}
writeln;
for nr := 1 to size do
begin
dzielnik := random(20)-1;
iloraz := tab[nr] / dzielnik;
suma_ilorazow := suma_ilorazow + iloraz;
end;
{wynik}
writeln;
writeln('suma ilorazow: ',iloraz);
writeln;
writeln('Naci
ś
nij dowolny klawisz aby kontynuowa
ć
');
readkey;
END.
6
PS/TP
PROGRAMOWANIE STRUKTURALNE
Przykładowe zrzuty ekranowe po pojawieniu si
ę
bł
ę
du wykonania:
7
PS/TP
PROGRAMOWANIE STRUKTURALNE
8
PS/TP
PROGRAMOWANIE STRUKTURALNE
Za pomoc
ą
debuggera b
ę
dziemy
ś
ledzi
ć
(krok po kroku) zawarto
ś
ci zmiennych:
VAR
nr : integer;
tab : array[1..size] of real;
dzielnik,
iloraz,
suma_ilorazow : real;
Za pomoc
ą
debuggera wstaw do okna zmienne:
nr, tab, dzielnik, iloraz, suma_ilorazow
Ustaw kursor pod zmienn
ą
nr
9
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wybierz opcj
ę
Debug
Add Watch
Pojawi si
ę
okno Edit Watch
10
PS/TP
PROGRAMOWANIE STRUKTURALNE
W polu Expression to watch znajduje si
ę
nazwa zmiennej nr
Kliknij OK
11
PS/TP
PROGRAMOWANIE STRUKTURALNE
Dodaj do okna Watches nast
ę
pne zmienne
tab, dzielnik, iloraz, suma_ilorazow
12
PS/TP
PROGRAMOWANIE STRUKTURALNE
Teraz mo
ż
emy przyst
ą
pi
ć
do krokowego
ś
ledzenia wykonywania programu.
Uruchom program za pomoc
ą
opcji F8 (Run
Step over)
Klawisz F8 – słu
ż
y do wykonywania krok po kroku (linia po linii) programu.
Klawisz F8 – krok 1
13
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz F8 – krok 2.
Klawisz F8 – krok 3.
Klawisz F8 – krok 4.
Klawisz F8 – krok 5.
Klawisz F8 – krok 6.
14
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz F8 – krok 7.
Klawisz F8 – krok 8.
Klawisz F8 – krok 9.
Klawisz F8 – krok 10.
15
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz F8 – krok 11.
16
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz F8 – krok 12.
17
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz F8 – krok 13.
18
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz F8 – testujemy program a
ż
instrukcja random(20)-1
wyliczy warto
ść
0 ……..
19
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz F8 – krok 14.
Zmienna dzielnik ma warto
ść
0,
dlatego dzielenie tab[nr] / dzielnik wywołało bł
ą
d!
20
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz Ctrl+F2 – Program reset
Nale
ż
y zresetowa
ć
działanie programu i poprawi
ć
kod
ź
ródłowy:
Instrukcj
ę
dzielnik := random(20)-1;
Nale
ż
y zamieni
ć
na
repeat
dzielnik := random(20)-1;
until (dzielnik<>0.0);
21
PS/TP
PROGRAMOWANIE STRUKTURALNE
Klawisz F8 – krok 15.
22
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ustanawianie punktów zatrzymania
23
PS/TP
PROGRAMOWANIE STRUKTURALNE
Ustaw kursor w linii podejrzanej o bł
ą
d.
Debug
Breakpoint (dodanie punktu zatrzymania)
24
PS/TP
PROGRAMOWANIE STRUKTURALNE
Uruchom program (Run
Run)
25
PS/TP
PROGRAMOWANIE STRUKTURALNE
Program zatrzymał si
ę
w linii zaznaczonej jako
Breakpoint
Teraz mo
ż
na krokowo wykona
ć
dalsze linie programu
(F8)
i sprawdza
ć
co si
ę
dzieje
26
PS/TP
PROGRAMOWANIE STRUKTURALNE
Rodzaje b
Rodzaje b
Rodzaje b
Rodzaje b
ł
ęd
d
d
dó
ó
ó
ów
w
w
w
27
PS/TP
PROGRAMOWANIE STRUKTURALNE
Wyró
ż
niamy trzy rodzaje bł
ę
dów:
Bł
ę
dy syntaktyczne
, zwi
ą
zane ze składni
ą
danego j
ę
zyka
(s
ą
wykrywane przez kompilator)
Bł
ę
dy semantyczne
, wyst
ę
puj
ą
ce podczas wykonywania programu
i zwi
ą
zane z prób
ą
wykonania niedozwolonej operacji (np. dzielenie przez zero
lub otwieranie nie istniej
ą
cego zbioru),
Bł
ę
dy logiczne
, powstałe na wskutek bł
ę
dnego zaprogramowania algorytmu.