background image

1

PS/TP

TI

TI

TI

TI----PS

PS

PS

PS----4B

4B

4B

4B

Elementy zaawansowanego 

programowania w Pascalu

background image

2

PS/TP

PROGRAMOWANIE STRUKTURALNE

Lokalizacja i usuwanie usterek 

w programie za pomoc

ą

debuggera

background image

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 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)

background image

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);

background image

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.

background image

6

PS/TP

PROGRAMOWANIE STRUKTURALNE

Przykładowe zrzuty ekranowe po pojawieniu si

ę

ę

du wykonania:

background image

7

PS/TP

PROGRAMOWANIE STRUKTURALNE

background image

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

background image

9

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wybierz opcj

ę

Debug









Add Watch

Pojawi si

ę

okno Edit Watch

background image

10

PS/TP

PROGRAMOWANIE STRUKTURALNE

W polu Expression to watch znajduje si

ę

nazwa zmiennej nr

Kliknij OK

background image

11

PS/TP

PROGRAMOWANIE STRUKTURALNE

Dodaj do okna Watches nast

ę

pne zmienne

tab, dzielnik, iloraz, suma_ilorazow

background image

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

background image

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.

background image

14

PS/TP

PROGRAMOWANIE STRUKTURALNE

Klawisz F8 – krok 7.

Klawisz F8 – krok 8.

Klawisz F8 – krok 9.

Klawisz F8 – krok 10.

background image

15

PS/TP

PROGRAMOWANIE STRUKTURALNE

Klawisz F8 – krok 11.

background image

16

PS/TP

PROGRAMOWANIE STRUKTURALNE

Klawisz F8 – krok 12.

background image

17

PS/TP

PROGRAMOWANIE STRUKTURALNE

Klawisz F8 – krok 13.

background image

18

PS/TP

PROGRAMOWANIE STRUKTURALNE

Klawisz F8 – testujemy program a

Ŝ

instrukcja random(20)-1 

wyliczy warto

ść

0 ……..

background image

19

PS/TP

PROGRAMOWANIE STRUKTURALNE

Klawisz F8 – krok 14.

Zmienna dzielnik ma warto

ść

0, 

dlatego dzielenie tab[nr] / dzielnik wywołało bł

ą

d!

background image

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);

background image

21

PS/TP

PROGRAMOWANIE STRUKTURALNE

Klawisz F8 – krok 15.

background image

22

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ustanawianie punktów zatrzymania

background image

23

PS/TP

PROGRAMOWANIE STRUKTURALNE

Ustaw kursor w linii podejrzanej o bł

ą

d.

Debug









Breakpoint (dodanie punktu zatrzymania)

background image

24

PS/TP

PROGRAMOWANIE STRUKTURALNE

Uruchom program (Run









Run)

background image

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

background image

26

PS/TP

PROGRAMOWANIE STRUKTURALNE

Rodzaje b

Rodzaje b

Rodzaje b

Rodzaje b

ł

ęd

d

d

ó

ó

ów

w

w

w

background image

27

PS/TP

PROGRAMOWANIE STRUKTURALNE

Wyró

Ŝ

niamy trzy rodzaje bł

ę

dów: 



ę

dy syntaktyczne

, zwi

ą

zane ze składni

ą

danego j

ę

zyka 

(s

ą

wykrywane przez kompilator)



ę

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),



ę

dy logiczne

, powstałe na wskutek bł

ę

dnego zaprogramowania algorytmu.