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

4.5.4 流程控制步驟

默認序列中的步驟是按順序執行的,而流程控制步驟可以額外控制步驟的執行方式。比如:條件執行語句可以選擇性地執行某些步驟;循環語句可以使步驟多次運行;Goto語句可以直接跳轉,打破執行順序。如果讀者有過文本編程的經驗,對于這些語句應該并不陌生,它們的原理基本是相通的。大體上可將TestStand中的流程控制步驟分為三類。

條件執行語句:if-else if-else和Select-Case

循環語句:For-For Each/While-Do While以及循環控制語句Break/Continue

Goto語句

1.條件執行語句

if語句有三種使用方法,第一種為直接if:

if(表達式)語句;

第二種為if-else:

以上適用于兩個分支的情況,當出現多個條件分支時,可以采用第三種if-else if-else:

由于這些步驟的使用比較直觀,也沒有需要特別配置的地方,比較容易在TestStand中掌握上述三種if語句的使用方法。

在范例資源的第4章練習中,附有例程<Exercises>\Chapter 4\Flow Control\If_ElseIf_Else.seq,讀者可以通過菜單命令“ExecuteSingle Pass”運行該范例并觀察結果。思考:如果將Locals.Index的值改為1,將會執行哪個分支?

Select-Case步驟類似于文本語言中的Switch-Case語句。如果Select表達式的值與某個Case分支中的常量表達式的值相等,則執行該Case分支。與文本語言中Switch-Case語句的不同之處在于:Select-Case步驟中,任何時候,只要有一個Case分支匹配,則在執行完該分支后,立刻跳出整個Select-Case結構,即最多只有一個Case分支被執行,并且它不需要Default默認分支。

Select-Case的形式如下:

在范例資源的第4章練習中,附有例程<Exercises>\Chapter 4\Flow Control\Select_Case.seq,讀者可以通過菜單命令“ExecuteSingle Pass”運行該范例并觀察結果。思考:如果將Locals.Name的值改為“Short”,將會執行哪個分支?

2.循環語句

在循環語句中,For循環和While循環的區別在于For循環是執行固定的次數,而While循環的執行次數預先是不知道的,由循環繼續條件(Loop Condition)決定。首先看For循環,當在序列中添加For步驟時,TestStand會自動添加一個對應的End步驟,如圖4-60所示;For Each、While、Do While等類似。

圖4-60 自動添加End步驟

For循環的使用方式有兩種,一種是“Fixed Number of Iterations”(固定循環次數),如圖4-61中,配置循環次數為“3”,循環變量設為“Locals.x”,當填寫完這兩項設置之后,右側的“Initialization”、“Condition”、“Increment”表達式就自動生成了。可以用如下偽碼表示:

圖4-61 For步驟特定配置頁

For循環的另一種方式是“Custom Loop”,在這種模式下,需要手動輸入初始化、循環條件、循環增量,這種方式的好處是更靈活。

在范例資源的第4章練習中,附有例程<Exercises>\Chapter 4\Flow Control\For.seq,讀者可以通過菜單命令“ExecuteSingle Pass”運行該范例并觀察結果。

For Each的作用和For類似,它是和一個數組關聯起來的。舉個例子,某一維數組的長度為10,那么For Each就將執行10次,每次循環將訪問該數組中當前索引下的元素。關于For Each不做過多介紹,有興趣的讀者可以查看幫助文檔,并運行例程<Exercises>\Chapter 4\Flow Control\ForEach.seq。

While與Do While的區別在于,While循環會先判斷循環條件是否得到滿足,若條件滿足才執行語句,而Do While則會先執行語句,再去評估循環條件,所以Do While中包含的語句至少會被執行一次。

在范例資源第4章練習中,附有例程<Exercises>\Chapter 4\Flow Control\While_DoWhile.seq,讀者可以通過菜單命令“ExecuteSingle Pass”運行該范例并觀察結果,體會While與Do While的區別。

所有的循環語句都可以用Break語句跳出循環,用Continue語句結束本次循環。Break語句用于從循環體內跳出,提前結束循環,程序接著執行循環后面的語句。Continue語句是強制跳過當前循環中剩余的語句而執行下一次循環,其作用為結束本次循環。Continue語句只結束本次循環,而不是終止整個循環的執行,Break語句則是結束整個循環過程。Break和Continue語句一般與if語句一起使用,例如:

3.Goto語句

Goto語句會改變序列執行的順序,它指向序列中的某個步驟(跳轉目標),這樣TestStand執行到Goto語句時,會直接跳轉到該步驟。在TestStand中,一般會使用標簽作為跳轉目標,標簽之后緊接著是相關的測試步驟,這樣做的好處是修改或刪除測試步驟時,不會影響Goto語句正常跳轉。Goto語句不可濫用,由于它改變了序列的執行順序,增加了調試和追蹤的難度,并且多次采用Goto語句跳轉,可能導致死循環。

主站蜘蛛池模板: 云林县| 灌阳县| 论坛| 平罗县| 新和县| 宁乡县| 长沙市| 绩溪县| 乌拉特后旗| 理塘县| 调兵山市| 怀仁县| 斗六市| 武平县| 张家港市| 综艺| 灌阳县| 乐都县| 漳平市| 布尔津县| 凤山县| 昌吉市| 淳安县| 体育| 奉新县| 攀枝花市| 锡林浩特市| 林西县| 二手房| 新巴尔虎右旗| 叙永县| 靖西县| 渭南市| 尼木县| 平舆县| 宁阳县| 沾化县| 青神县| 屏南县| 和静县| 桐庐县|