- PEVR虛擬現實編輯平臺設計與實現精析
- 浙江優創信息技術有限公司
- 1705字
- 2024-08-01 15:58:35
2.1.2 循環語句
循環語句可以實現一個程序模塊的重復執行,它對于簡化程序、更好地組織算法有著重要的意義。C#提供了四種循環語句,分別適用于不同的情形:while語句、do-while語句、for語句、foreach語句。
2.1.2.1 while語句
while語句有條件地將內嵌語句執行0遍或若干遍,語句的格式為

它的執行順序是:
1)計算布爾表達式boolean-expression的值。
2)當布爾表達式的值為真時,執行內嵌語句embedded-statement一遍,程序轉至第1)步。
3)當布爾表達式的值為假時,while循環結束。
下面來看一個簡單的例子,該例在數組中查找一個指定的值,如找到就返回數組下標,否則返回并報告。
程序清單 2-3:

while語句中允許使用break語句結束循環,執行后續語句;也可以用continue語句來停止內嵌語句的執行,繼續進行while循環。
我們使用下面的程序片段來計算一個整數x的階乘值:

2.1.2.2 do-while語句
do-while語句與while語句不同的是:它將內嵌語句執行至少一遍。語句的格式為

它按如下順序執行:
1)執行內嵌語句embedded-statement一遍。
2)計算布爾表達式boolean-expression的值,為true則回到第1)步,為false則終止do循環。在do-while循環語句同樣允許用break語句和continue語句實現與while語句中相同的功能。
我們看一下如何使用do-while循環來實現求整數的階乘:

2.1.2.3 for語句
for語句是C#中使用頻率最高的循環語句,在事先知道循環次數的情況下使用for語句是比較方便的。for語句的格式為

其中,initializer、condition、iterator這三項都是可選項:initializer為循環控制變量做初始化,循環控制變量可以有一個或多個(用逗號隔開);condition為循環控制條件,也可以有一個或多個語句;iterator按規律改變循環控制變量的值。應注意初始化循環控制條件和循環控制都是可選的。如果忽略了條件,就會產生死循環,要用跳轉語句break或goto才能退出。

for語句執行順序如下:
1)按書寫順序將initializer部分(如果有的話)執行一遍,為循環控制變量賦初值。
2)測試condition(如果有的話)中的條件是否滿足。
3)若沒有condition項或條件滿足,則執行內嵌語句一遍,按iterator改變循環控制變量的值回到第2)步執行。
4)若條件不滿足則for循環終止。
下面的例子非常簡單,打印數字1到9,但它卻清楚地顯示出了for語句是怎樣工作的:

for語句可以嵌套使用,幫助我們完成大量重復性、規律性的工作。
下面的例子用于打印楊輝三角形:
程序清單 2-4:


運行程序的結果為

還以求整數的階乘為例,代碼可以這樣寫:

同樣可以用break和continue語句來和循環判斷符合語句中的邏輯表達式配合使用達到控制循環的目的。仍然以打印數字為例,如果要求打印除7以外的0到9之間的數字,只要在for循環執行到7時,跳過打印語句就可以了。

2.1.2.4 foreach語句
foreach語句是在C#中新引入的,C和C++中沒有這個語句,而Visual Basic的程序員應該對它不會陌生,它表示收集一個集合中的各元素,并針對各個元素執行內嵌語句。語句的格式為

其中,類型(type)和標識符(identifier)用來聲明循環變量表達式(expression)對應集合,每執行一次內嵌語句,循環變量就依次取集合中的一個元素,代入其中。在這里,循環變量是一個只讀型局部變量,如果試圖改變它的值或將它作為一個ref或out類型的參數傳遞,都將引發編譯時錯誤。
foreach語句中的expression必須是集合類型,如果該集合的元素類型與循環變量類型不一致,則必須將集合中的元素類型顯式轉換為循環變量元素類型。
集合表示一組相同或相似的數據項總的描述。那么在C#中究竟什么樣的類型算是集合類型呢?我們從語法上給出集合類型的定義:
1)該類型必須支持一個形為GetEnumerator的公有的非靜態方法,該方法的返回類型為結構類或接口。
2)形為GetEnumerator的方法,返回的結構類或接口應當包含一個公有的非靜態的方法MoveNext,該方法的返回類型為布爾型。
3)形為GetEnumerator的方法,返回的結構類或接口應當包含一個公有的非靜態的屬性Current,該屬性可以讀出。
如果一個類型同時滿足以上三個條件,該類型稱為集合類型,Current屬性的類型叫作該集合類型的元素類型。
我們姑且不論集合類型的具體形式,只從foreach語句的使用角度舉一個例子。假設Prime是一個滿足條件的集合類型,它的元素類型為1000以內的質數,MyInt是我們自定義的一個類型,其范圍為200到300之間的整數。下面這段程序用于在屏幕上顯示出從200到300之間的所有質數:
程序清單 2-5:

順便說一句,數組類型是支持foreach語句的。對于一維數組執行順序是從下標為0的元素開始,一直到數組的最后一個元素。對于多維數組元素,下標的遞增是從最右邊那一維開始的,依此類推。同樣break和continue可以出現在foreach語句中,功能不變。
- 現代企業應用設計指南
- AI繪畫教程:Midjourney使用方法與技巧從入門到精通
- 數碼攝影后期零基礎入門教程
- Spring Python 1.1
- Photoshop CS6平面設計應用教程(第4版)
- Photoshop CS6完全自學案例教程(微課版)
- Magento 1.4 Themes Design
- After Effects CS6入門與提高
- 新編AutoCAD制圖快捷命令速查一冊通
- Building Websites with ExpressionEngine 1.6
- Seam 2 Web Development: LITE
- 好學、好用、好玩的Photoshop 寫給初學者的入門書(第4版)
- 精進PPT:PPT設計思維、技術與實踐(第3版)
- AutoCAD 2024室內設計從入門到精通(升級版)
- SketchUP草圖繪制從新手到高手