決策結(jié)構(gòu)需要程序員指定的一個(gè)或多個(gè)條件進(jìn)行評(píng)估,或由程序進(jìn)行測(cè)試,如果條件被確定為真以及一條或多條語(yǔ)句,任選的其它語(yǔ)句,如果條件被確定為假則被執(zhí)行。
以下是在大多數(shù)編程語(yǔ)言中找到的典型決策結(jié)構(gòu)的一般形式:
TCL語(yǔ)言使用expr內(nèi)部命令,因此它為我們聲明使用expr的聲明不是必需的。
TCL語(yǔ)言提供了以下幾種類(lèi)型的決策語(yǔ)句。
| 語(yǔ)名 | 描述 |
|---|---|
| if語(yǔ)句 | if語(yǔ)句包含一個(gè)布爾表達(dá)式后跟一個(gè)或多個(gè)語(yǔ)句。 |
| if...else語(yǔ)句 | if語(yǔ)句可以跟著一個(gè)可選的else語(yǔ)句,當(dāng)else執(zhí)行時(shí),布爾表達(dá)式是假。 |
| 內(nèi)嵌if語(yǔ)句 | 可以使用一個(gè)if 或else if 里面再聲明 if 或 else if 語(yǔ)句(S)。 |
| switch語(yǔ)句 | switch語(yǔ)句可以讓一個(gè)變量對(duì)值列表相等進(jìn)行測(cè)試。 |
| 內(nèi)嵌switch語(yǔ)句 | 可以使用一個(gè)switch語(yǔ)句在另一個(gè)switch語(yǔ)句中。 |
我們已經(jīng)覆蓋條件操作符 ? :在前面的章節(jié)中可以用它來(lái)代替 if ... else語(yǔ)句。以下是它的一般形式:
Exp1 ? Exp2 : Exp3;
計(jì)算Exp1,Exp2和Exp3表達(dá)式。注意使用和放置。
a的值?表達(dá)是確定這樣:Exp1計(jì)算評(píng)估。如果是真的,那么Exp2后進(jìn)行評(píng)估計(jì)算,并成為整個(gè)的值?表達(dá)式。如果計(jì)算Exp1是假的,那么Exp3計(jì)算它的值變?yōu)楸磉_(dá)式的值。一個(gè)例子如下所示。
#!/usr/bin/tclsh set a 10; set b [expr $a == 1 ? 20: 30] puts "Value of b is $b\n" set b [expr $a == 10 ? 20: 30] puts "Value of b is $b\n"
當(dāng)編譯和執(zhí)行上面的程序,將會(huì)產(chǎn)生以下結(jié)果:
Value of b is 30 Value of b is 20