- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
D3算法测试
D3 算法測試
1. 程式錯誤及追蹤程式流程
程式錯誤(Program Errors / Bugs)
語法錯誤(Syntax Error)
語法錯誤是違反程式語言的文法規則。例如: 6 ( X (偽代碼)、IF := 4 (Pascal)
習作:
錯誤的Pascal語句 解釋 A = B; A := B C:=B+3; IF := C; if A = b than A = 2;
運行錯誤 (Run-Time Error)
運行錯誤是在程式運行中異常終止,原因可能是運算上的錯誤(1 除以 0)或者將數字賦予文字變量等。
邏輯錯誤 (Logical Error)
邏輯錯誤是程式上編寫的錯誤,以致輸出的結果不是預期的結果。例如:計算一班同學的平均年齡,但得出的答案竟然超過100歲。
習作:
以下程式是要找出10個輸入數字中的最大值,但程式的輸出發生錯誤,請指出其錯誤的地方,並且作出修正。
program findmax;
var max, c, x :integer;
begin
c := 1;
while c = 10 do
read(x);
if x max then max := x;
c := c + 1;
writeln(Maximum = ,max)
end.
測試
測試是使用不同的測試數據,以測定算法的準確性。
為以下程序建議三組測試數據,並測試程序是否正確,若不,請作出修改。
program swap;
var x, y, temp : real;
begin
readln(x, y);
writeln(Before swap: x = ,x,, y = ,y);
x := x / y;
y := x * y;
x := y / x;
writeln(After swap: x = ,x,, y = ,y)
end.
除錯技巧 (Debugging Techniques)
語法錯誤會在編譯時由編譯器(Compiler)檢查出來,所以留意編譯器的指示便可以。
運行錯誤會在運行時發生,留意作業系統(Operating System)的指示便可知道。
邏輯錯誤是最難檢查,因為編譯器及作業系統都不會知道程式有沒有出錯,只有程式編寫員才知道,另外除錯也十分困難,但有些技巧可以幫助程式編寫員除錯。
1) 空運行(Dry Run)
空運行是假設你是一部電腦,追蹤程式的執行情況,一般來說,空運行會使用空運行表(追蹤表)記錄程式執行中變量的變化及輸出的情況。
習作一 行數 i sum 輸出 01 program dryrun1;
02 var i, sum : integer;
03 begin
i:= 2; sum:= 0;
repeat
sum := sum + i;
i := i * 2;
writeln(i)
until i 10;
writeln(sum)
end.
習作二 行數 i sum 輸出 01 x ( 6
02 y ( -2
03 當 x y
x ( x – 2
y ( y + 1
06 輸出 x + y
2) 回波檢查(Echo Checking)
回波檢查在程式碼中插入輸出語句以取得在程式運行中時所產生的中介值。
program findmax;
var max, c, x :integer;
begin
c := 1;
while c = 10 do
read(x);
if x max then begin max := x; writeln(*** max = ,max) end;
c := c + 1;
writeln(Maximum = ,max)
end.
使用編譯器軟件提供的除錯工具(Debugging Tools)。
2. 比較用不同的算法解決相同問題的優劣從執行步數及資源的運用的角度去比較使用不同算法解決同一問題的優劣P1 程式P2 Program p1;
Var x:integer;
Begin
Readln(x);
While x 0 do
Begin
Writeln(x*x);
Readln(x)
End
End. Program p2;
Var x:integer;
Begin
Repeat
Readln(x);
If x 0 then
Writeln(x*x)
Until x = 0
End.
___________________________________________
文档评论(0)