Professional Documents
Culture Documents
131
-DNXUXFKDPLD
oporne programy
,P EDUG]LHM ]R*RQ\ SURJUDP W\P PQLHMV]D V]DQVD *H XGD &L VL
RG UD]X QDSLVD JR
EH]E
GQLH :\DSDQLH ZV]\VWNLFK E
GyZ NRPSLODFML WR GRSLHUR SRF]WHN ]DZV]H
PR*H &L VL
SU]\WUDIL G]LHOHQLH SU]H] ]HUR F]\ SUyED RWZDUFLD QLHLVWQLHMFHJR SOLNX
%
G\WH]ZDQHE
GDPLZ\NRQDQLDDQJruntime errorsV]QDF]QLHPQLHMSU]\MHPQH
i trudniejsze do XVXQL
FLDRGE
GyZNRPSLODFML,FKORNDOL]DFMDZ\PDJDQDRJyX*\FLD
VSHFMDOQHJR QDU]
G]LD XUXFKRPLHQLRZHJR ]ZDQHJR ] DQJLHOVND debuggerem (czyli
RGSOXVNZLDF]HP 6\VWHP XUXFKRPLHQLRZ\ 7XUER 3DVFDOD E
G]LH WHPDWHP RVWDWQLHJR
MX*UR]G]LDXSRZL
FRQHJRWHmu kompilatorowi.
3ROHFHQLD V\VWHPX XUXFKRPLHQLRZHJR ]JUXSRZDQH V Z PHQX Run oraz Debug, przy
F]\P ZL
NV]RFL ] QLFK RGSRZLDGDM NODZLV]H VNUyWX 'R HNVSHU\PHQWyZ ] GHEXJJHUHP PR*QD Z\NRU]\VWD SUDNW\F]QLH GRZROQ\ SURJUDP FKRFLD* ZDUWR E\ ]DZLHUD
on GHILQLFMHSURFHGXUL]PLHQQ\FKORNDOQ\FK'ODQDV]\FKSRWU]HERGSRZLHGQLE
G]LH
przedstawiony na stronie 62 program Bisekcja.
-DNMX*ZLHV]Z\VWSLHQLHE
GXZ\NRQDQLDSRZRGXMHSU]HUZDQLHG]LDDQLDSURJUDPX
i ZVND]DQLH NXUVRUHP LQVWUXNFML NWyUD WHQ EG VSRZRGRZDD 1LHVWHW\ QD RJy LQIRUPDFMD WDND MHVW QLHZ\VWDUF]DMFD JG\* GR VNXWHF]QHM ORNDOL]DFML E
GX Z\PDJDQH MHVW
SU]HOHG]HQLH ]DFKRZDQLD SURJUDPX QD FR QDMPQLHM NLOND LQVWUXNFML SU]HG MHJR Z\VWSLHQLHP 0R*OLZR WDN GDMH Z QRZRF]HVQ\FK QDU]
G]iach uruchomieniowych tzw.
tryb krokowySR]ZDODMF\QDZ\NRQ\ZDQLHSURJUDPXLQVWUXNFMDSRLQVWUXNFML
Turbo Pascal pozwala na krokowe wykonywanie programu na dwa sposoby, realizowane odpowiednio poleceniami Trace Into i Step Over z menu Run (lub odpowiadaMF\PLLPNODZLV]DPLF7 i F85y*QLFDSRPL
G]\RE\GZRPDWU\EDPLVSURZDG]DVL
do innego sposobu traktowania procedur i funkcji: polecenie Trace Into pozwala na
ZHMFLH GR ZQ
WU]D SURFHGXU\ ]D Step Over Z\NRQXMH M MDNR MHGQ LQVWUXNFM
W obu przypDGNDFK DNWXDOQLH Z\NRQ\ZDQD LQVWUXNFMD ]RVWDMH Z\Uy*QLRQD Z WHNFLH
SURJUDPX NRORURZ\P SDVNLHP $E\ Z\SUyERZD G]LDDQLH WU\EX NURNRZHJR
skompiluj program Bisekcja (F9 L Z\NRQDM JR Z REX WU\EDFK =DXZD* WH* *H
132
Jak uruchamiaRSRUQHSURJUDP\
133
:SU]\SDGNXZL
NV]\FKSURJUDPyZPR*HVL
RND]D*HGRWDUFLHGRIDWDOQHMLQVWUXNFML
] Z\NRU]\VWDQLHP WU\EX NURNRZHJR MHVW ]E\W F]DVRFKRQQe. W takich sytuacjach
z SRPRFSU]\FKRG]LSROHFHQLHGo to cursor (F4SRZRGXMFHZ\NRQDQLHZV]\VWNLFK
LQVWUXNFML D* GR PLHMVFD ZVND]DQHJR NXUVRUHP D QDVW
SQLH SU]HMFLH GR SUDF\
NURNRZHM:\NRU]\VWXMFMHPR*HV]DWZRZVNRF]\QSGRZQ
WU]DIXQNFMLf(x) bez
konieczQRFLZ\NRQ\ZDQLDLQVWUXNFMLSRSU]HG]DMF\FKMHMZ\ZRDQLH
-HOLSRZ\*V]HF]\QQRFLPDV]Z\NRQ\ZDZLHORNURWQLH]QDF]QLHEDUG]LHMX*\WHF]QH
od funkcji Go to cursorRND]XMHVL
SROHFHQLHAdd breakpoint z menu Debug (CTRLF8). Jego wydanie pozwala na ustawienie w miejscu wskazanym kursorem tzw. punktu
wstrzymaniaSRZRGXMFHJR]DWU]\PDQLHSURJUDPXSRND*GRUD]RZ\PMHJRRVLJQL
FLX
1LH GR WHJR GRGDWNRZH SDUDPHWU\ SXQNWX ZVWU]\PDQLD Condition i Pass count)
XPR*OLZLDMMHJRZDUXQNRZHZ\NRQ\ZDQLHOXE]LJQRURZDQLHRNUHORQHMOLF]E\SU]HM
2SFMHWHX*\ZDQHVU]DGNRLQLHE
G]LHP\LFKWXRPDZLDZZL
NV]RFLSU]\SDGNyZ
X*\FLH SXQNWyZ ZVWU]\PDQLD VSURZDG]D VL
GR LFK XVWDZLDQLD L XVXZDQLD ]D SRPRF
klawiszy CTRL-F8 (odpowiednia instrukcja zosWDQLH Z\Uy*QLRQD Z WUHFL SURJUDPX
NRORURZ\PSDVNLHP3RGRMFLXSURJUDPXGRSXQNWXZVWU]\PDQLDQDRJyZ\VWDUF]\
VSUDZG]L]DZDUWRSRGHMU]DQHM]PLHQQHMSROHFHQLHPEvaluate lub Add Watch.
6NUyWRZHRPyZLHQLHSROHFHV\VWHPXXUXFKRPLHQLRZHJRNRF]\QDV]Hwprowadzenie
GRSURJUDPRZDQLDL7XUER3DVFDOD'DOV]HZLDGRPRFL]GRE
G]LHV]NRU]\VWDMF]EDUdziej zaawansowanej literatury, a przede wszystkim na drodze praktycznej SLV]F
SURJUDP\3DPL
WDM
.RU]\VWDQLH]NRPSXWHUDQLH]ZDOQLDRGP\OHQLD
,P ZL
NV]\ QDFLVN SRR*\V] QD ZDFLZH ]DSURMHNWRZDQLH UR]ZL]DQLD W\P PQLHM
F]DVX E
G]LHV] PXVLD SRZL
FL QD MHJR ]DSURJUDPRZDQLH L W\P PQLHMV]H V]DQVH *H
E
G]LHV]PXVLDRGZR\ZDVL
GRSRPRF\URGNyZXUXFKRPLHQLRZ\FK
Powodzenia!