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

3.5 C#程序控制結構

C#語言與其他語言一樣,其控制結構有順序結構、選擇結構和循環結構三種。順序結構是由從上到下的語句逐條執行;選擇結構則類似路上的行人走在三岔路口,需要做出選擇的程序結構;而循環結構則在滿足條件的情況下周而復始地循環執行某段語句。

3.5.1 順序結構

順序結構是程序中使用最多的結構方式,也是程序中大量代碼存在的主要形式。

在順序結構中程序始終按照語句排列順序依次逐條地執行。順序結構的代碼示例如表3-19所示。

表3-19 順序結構實例

3.5.2 選擇結構

所謂選擇結構,是指在程序運行時,根據不同的條件轉向不同的語句執行,使得程序可以跳過某些語句不執行、轉而執行某些特定的語句。

選擇結構主要有if與switch兩種。其中,if主要用于簡單選擇判斷,共有四種形式;switch則主要用于多分支選擇判斷。

1.if語句

if語句是選擇結構中使用頻率最高的語句,其表現形式共有四種。

(1)格式1

執行時先判斷“條件表達式”的值,如果為true,則執行“語句”,否則什么也不做。“語句”部分既可以是單獨的一條語句,也可以是用{}括起來的多條語句組成的復合語句。

(2)格式2

執行時先判斷“條件表達式”的值,如果為true,則執行語句1,否則執行語句2。語句1和語句2即可以是一條語句,也可以是多條語句組成的復合語句。

(3)格式3

執行時先判斷條件表達式1的值,如果是true,則執行語句1;否則就判斷表達式2的值,如果是true,就執行語句2;否則就判斷條件表達式3……以此類推,繼續執行,直到最后一個else為止,如果前面的條件都不滿足,就執行語句n。語句既可以是一條語句,也可以是多條語句組成的復合語句。

(4)格式4(多層嵌套if語句)

執行時先判斷條件表達式1的值,如果是true,則接著判斷條件表達式2的值,如果是true,就執行語句2,否則就執行語句3;如果條件表達式1的值是false,就執行語句n。

在多層嵌套語句的編寫過程要特別注意大括號的一一對應,有幾個“{”就要有幾個“}”,每個else都和距它最近的if相匹配。

【操作實例3-8】 編寫一個簡單的登錄程序。

新建網站文件,在設計視圖中輸入三行文字,分別是用戶登錄、用戶名、密碼,在用戶名和密碼后面分別添加一個文本框,名稱是Text1Box1、Text1Box2,繼續添加兩個按鈕,并將其Text屬性分別改為“確定”“取消”,雙擊“確定”按鈕后添加如表3-20所示代碼。

表3-20 if結構實例

程序運行結果如圖3-6所示。

圖3-6 if結構實例運行結果

2.switch

C#中switch語句多用于多路分支選擇控制結構。當需要從多個備選項中選擇一個的時候,使用該語句。該語句格式如下。

switch語句在執行時首先計算表達式的值,然后與case語句中的各個常量表達式的值進行比較,如果相同,則執行該case后面的語句,直到執行break語句來結束switch語句。如果表達式的值與所有常量表達式的值均不匹配,則執行default語句塊。其中default部分是可選的。break語句的作用是在執行完一個case分支后,使程序跳出switch語句,并繼續執行switch后面的語句。C#規定:每個分支必須以break、return、goto或throw語句來結束,而且語句中的任何代碼不得改變表達式的值,否則編譯無法通過。

表達式的類型可以是整數類型(包括枚舉類型和字符類型)和字符串類型常量,而常量表達式類型必須與表達式類型相同,或者能隱式地轉換為表達式類型。表達式n的值必須是常量,且各case子句中的值應是不同的。如果多個case語句都執行同一個分支,則可以把多個case語句的表達式合并。例如:

一般情況下,switch語句總是可以和if語句互換。如果條件過多或者離散分布,建議使用switch語句,switch語句可以很清晰地把邏輯關系表達清楚。如果標簽數量較少,使用if語句會使程序比較簡潔。表3-20中if語句代碼就可以改寫為下面的switch語句代碼,如表3-21所示。

表3-21 switch結構實例

3.5.3 循環結構

循環結構的作用是反復執行一段代碼,直到滿足條件跳出循環為止。它共有以下四種格式。

1.格式1

語句既可以是一條語句,也可以是什么也沒有的空語句或由多條語句組成的復合語句,條件表達式作為循環的控制條件。執行過程是:首先判斷條件表達式,如果條件表達式的值為true,那么就執行語句;再次判斷條件表達式,直到條件表達式的值為false,則退出循環。因為該循環要先進行判斷,所以while循環的執行次數將會是0次或者多次。注意,在語句中要寫明循環的終止條件,以免造成死循環。

2.格式2

執行過程是:首先執行語句,然后判斷條件表達式,如果條件表達式的值為true,那么就再次執行語句;再次判斷條件表達式,直到條件表達式的值為false,則退出循環。與while語句不同的是,do…while語句先執行后判斷,所以do…while語句至少執行1次。

3.格式3

執行時先執行初始化表達式1,然后判斷條件表達式2,如果條件表達式2的值為true,那么就執行語句;接著執行迭代表達式3,并返回重新判斷條件表達式2,如果為true,再次執行語句,并執行迭代表達式3,重復執行,直至條件表達式2的值是false,結束for語句的執行。

以上三個表達式都是可選的,并且各個表達式可以有一個或多個。當省略某個表達式時,表達式后面的分號不能省略。for的使用示例如下。

4.格式4

該語句用于遍歷集合中的各個元素,并讓集合中的每一個元素都執行循環語句。其中,變量會依次代表“集合”中的每一個元素。如果不知道一個集合中每個項目的類型是什么,完全可以定義一個object類型的臨時變量來表示。in關鍵字后面指明需要操作的集合,且集合必須是可枚舉的,不能為空。語句的內容不能改變集合中的元素。

【操作實例3-9】 計算1~100的和,程序代碼如表3-22所示。

表3-22 用While計算1~100的和

程序運行結果如圖3-7所示。

該程序利用while循環計算1~100的和,并在屏幕輸出結果。

圖3-7 while循環實例運行效果

主站蜘蛛池模板: 当雄县| 农安县| 武城县| 临洮县| 合阳县| 财经| 濉溪县| 当涂县| 白沙| 永平县| 吉水县| 伽师县| 郧西县| 安新县| 贺州市| 太仆寺旗| 彭阳县| 三门峡市| 朝阳区| 沐川县| 诏安县| 河北省| 沙洋县| 精河县| 虎林市| 安仁县| 南涧| 丽水市| 常宁市| 施甸县| 班玛县| 容城县| 深州市| 孟连| 营口市| 乐业县| 台山市| 芦山县| 内黄县| 合川市| 英德市|