官术网_书友最值得收藏!

3.3.5 控制流程錯誤

1.如果程序包含多條分支路徑,比如有計算GO TO語句,索引變量的值是否會大于可能的分支數量?例如,在語句figure_0037_0009中,i的取值是否總是1、2或3?

2.是否所有的循環最終都終止了?應設計一個非正式的證據或論據來證明每一個循環都會終止。

3.程序、模塊或子程序是否最終都終止了?

4.由于實際情況沒有滿足循環的入口條件,循環體是否有可能從未執行過?如果確實發生這種情況,這里是否是一處疏漏?例如,如果循環以下面的語句作為開頭:

figure_0038_0010

當NOTFOUND初始時就為假,或者x大于z時,情況會如何呢?

5.如果循環同時由迭代變量和一個布爾條件所控制(如一個搜索循環),如果循環越界(fall-through)了,后果會如何?例如,偽指令循環以figure_0038_0011開頭,如果NOTFOUND永不為假,會發生什么結果呢?

6.是否存在“僅差一個”的錯誤,如迭代數量恰恰多一次或少一次?這在從0開始的循環中是常見的錯誤。我們會經常忘記將“0”作為一次計數。舉例來說,如果想編寫一段Java代碼執行10次循環,下面的語句是錯誤的,因為它執行了11次:

figure_0038_0012

正確的應該是執行10次循環:

figure_0038_0013
figure_0038_0014

7.如果編程語言中有語句組或代碼塊的概念(例如do-while或{……}),是否每一組語句都有一個明確的while語句,并且do語句也與其相應的語句組對應?或者,是否每一個左括號都對應有一個右括號?目前的大多數編譯器都能識別出這些不匹配的情況。

8.是否存在不能窮盡的判斷?舉例來說,如果一個輸入參數的預期值是1,2或3,當參數值不為1或2時,在邏輯上是否假設了參數必定為3?如果是這樣的話,這種假設是否有效?

主站蜘蛛池模板: 蓬溪县| 溆浦县| 吴旗县| 罗甸县| 新平| 册亨县| 鄂州市| 兴宁市| 东方市| 尼勒克县| 深圳市| 周至县| 商南县| 湘西| 获嘉县| 田东县| 三河市| 阿拉善右旗| 曲靖市| 曲松县| 乌鲁木齐县| 五原县| 青海省| 新宾| 大厂| 元阳县| 新津县| 固始县| 喀喇沁旗| 丽江市| 麻城市| 特克斯县| 牟定县| 望谟县| 睢宁县| 临海市| 库尔勒市| 丹江口市| 漳浦县| 宕昌县| 牙克石市|