版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第三三章章 流程控制流程控制C#.net程序設(shè)計C#.NET程序設(shè)計本章主要內(nèi)容本章主要內(nèi)容l選擇語句選擇語句(if語句和語句和switch語句語句)l循環(huán)語句循環(huán)語句(while,do-while,for,foreach循環(huán)語句循環(huán)語句)l跳轉(zhuǎn)語句跳轉(zhuǎn)語句(break,continue,return,goto語句語句)l異常處理異常處理(try-catch-Finally)和和throw語句語句C#.NET程序設(shè)計條件選擇語句條件選擇語句選擇語句根據(jù)某個條件是否為選擇語句根據(jù)某個條件是否為 true 來將程序控制權(quán)移交給特定的語句流程。來將程序控制權(quán)移交給特定的語句流程。選擇語句分為選擇語
2、句分為if語句和語句和switch語句兩種。語句兩種。C#.NET程序設(shè)計if語句語句if語句是條件選擇語句,根據(jù)布爾表達式的值選擇要執(zhí)行的語句是條件選擇語句,根據(jù)布爾表達式的值選擇要執(zhí)行的語句。其常用的表達形式有:語句。其常用的表達形式有:lif(布爾表達式)(布爾表達式) 語句組(塊)語句組(塊); 或或lif(布爾表達式)(布爾表達式) 語句組(塊)語句組(塊)1; else 語句組(塊)語句組(塊)2;l流程圖如下流程圖如下:條件選擇語句條件選擇語句C#.NET程序設(shè)計if語句語句例:使用if-else條件選擇語句對一個浮點數(shù)x 進行四舍五入,結(jié)果保存到一個整數(shù)i 中,代碼如下:if
3、(x (int)x = 0.5)/ x (int)x = 0.5條件成立執(zhí)行代碼 i = (int)x + 1; Else / x (int)x = 0.5條件不成立執(zhí)行代碼 i = (int)x; 例:使用if條件選擇語句將i除j,結(jié)果保存y 中(要判斷j不等于0), 代碼如下:if (j != 0) y=i/j; 條件選擇語句條件選擇語句C#.NET程序設(shè)計if 語句嵌套語句嵌套 if 語句可以嵌套使用,每一條語句可以嵌套使用,每一條else 與離它最近且與離它最近且沒有其它沒有其它else與之對應(yīng)的與之對應(yīng)的if相搭配。相搭配。 使用使用else if方法處理多個條件形式如下:方法處理多
4、個條件形式如下:if(布爾表達式1) 語句組1; else if(布爾表達式2) 語句組2; else if(布爾表達式n) 語句組n; else 語句組n+1; 條件選擇語句條件選擇語句例:檢查輸入字符是否是小寫字符、大寫字符或數(shù)字,或其他。using System;public class IfTest static void Main() Console.Write(Enter a character: ); char c = (char)Console.Read();/讀一個字符 if (Char.IsUpper(c) /用于判斷c是否為大寫字符Console.WriteLine(Ch
5、aracter is uppercase.); else if (Char.IsLower(c) /用于判斷c是否為小寫字符Console.WriteLine(Character is lowercase.); else if (Char.IsDigit(c) /用于判斷c是否為數(shù)字 Console.WriteLine(Character is a number.); Else/除字母數(shù)字以外的字符 Console.WriteLine(Character is not alphanumeric.); C#.NET程序設(shè)計switch語句語句 switch 語句的一般格式為:語句的一般格式為:s
6、witch(控制表達式)(控制表達式) case 常量表達式常量表達式1: 語句組語句組1 break; case 常量表達式常量表達式2: 語句組語句組2 break; case 常量表達式常量表達式n: 語句組語句組n break; default: 語句組語句組n+1 break;條件選擇語句條件選擇語句C#.NET程序設(shè)計switch 語句語句switch 語句的控制類型,即其中控制語句的控制類型,即其中控制表達式的數(shù)據(jù)類型可以是整數(shù)如(表達式的數(shù)據(jù)類型可以是整數(shù)如(byte、short、int、long等),等),char,string 或或枚舉類型,每個枚舉類型,每個case 標簽
7、中的常量表達式標簽中的常量表達式(constant-expression)必須屬于或能隱式必須屬于或能隱式轉(zhuǎn)換成控制類型。轉(zhuǎn)換成控制類型。下面例子說明下面例子說明switch 語句是如何實現(xiàn)語句是如何實現(xiàn)程序的多路分支的。假設(shè)考查課的成績按程序的多路分支的。假設(shè)考查課的成績按優(yōu),良,中,及格和不及格分為五等分別優(yōu),良,中,及格和不及格分為五等分別用用5、4、3、2、1來表示,但實際的考卷來表示,但實際的考卷為百分制分別對應(yīng)的分數(shù)為為百分制分別對應(yīng)的分數(shù)為90-100、80-89、70-79、60-69、60分以下。下面的程序?qū)⒎忠韵?。下面的程序?qū)⒖季沓煽兛季沓煽儀 轉(zhuǎn)換為考查課成績轉(zhuǎn)換為考查課
8、成績y。SwitchSample項目代碼如下:項目代碼如下:條件選擇語句條件選擇語句int y;double grade = double.Parse(Console.ReadLine();/控制臺輸入分數(shù)int x = (int)(grade/10); /除,去掉小數(shù)點取整。switch(x) case 10:/100/10 =10 case 9: y=5;break; /99-90/10=9 case 8: y=4;break; /80-89/10=8 case 7: y=3;break; /70-79/10=7 case 6: y=2;break; /60-69/10=6 default
9、: y=1;break; /其余Console.WriteLine(百分制0,轉(zhuǎn)換為1, grade, y); switch 語句可以包括任意數(shù)目的 case 實例,但是任何兩個 case 語句都不能具有相同的值。在每一個 case 塊(無論case 語句還是 default 語句)的后面,都必須有一個跳轉(zhuǎn)語句(如 break)。但有一個例外是當 case 語句中沒有代碼時。如上例:case 10:。如果沒有任何 case 表達式與開關(guān)值匹配,則控制傳遞給跟在可選 default 標簽后的語句。如果沒有 default 標簽,則控制傳遞到 switch 以外。 C#.NET程序設(shè)計循環(huán)語句循環(huán)
10、語句循環(huán)語句實現(xiàn)一個程序模塊的重復執(zhí)行。循環(huán)語句實現(xiàn)一個程序模塊的重復執(zhí)行。C#提供了四種循環(huán)語句提供了四種循環(huán)語句:lwhile語句語句ldo-while 語句語句lfor 語句語句lforeach 語句語句它們分別適用于不同的情形。它們分別適用于不同的情形。C#.NET程序設(shè)計while 循環(huán)語句循環(huán)語句lwhile 語句循環(huán)執(zhí)行一個語句或語句塊,直到指定的語句循環(huán)執(zhí)行一個語句或語句塊,直到指定的表達式計算為表達式計算為 false。while 語句的流程圖如下:語句的流程圖如下:lwhile 語句的格式為語句的格式為:while(布爾表達式)(布爾表達式) 循環(huán)體語句組循環(huán)體語句組 使用
11、使用break語句結(jié)束語句結(jié)束while循環(huán),執(zhí)行后續(xù)語句。使循環(huán),執(zhí)行后續(xù)語句。使用用continue語句停止循環(huán)體的執(zhí)行,重新回到語句停止循環(huán)體的執(zhí)行,重新回到while 循循環(huán)表達式判斷,開始下一次迭代但不退出循環(huán)。環(huán)表達式判斷,開始下一次迭代但不退出循環(huán)。 循環(huán)語句循環(huán)語句例:使用While循環(huán)語句,在給定數(shù)組中查找一個指定的值,遇到不等的正數(shù)在屏幕顯示,找到指定的值就返回數(shù)組下標并在屏幕顯示找到。未找到返回-1。下面是WhilSample項目的代碼: static int Find(int value, int array) int i = -1; while (+i array.L
12、ength) / array.Length是數(shù)組長度 if (arrayi = value) Console.WriteLine( 在數(shù)組第0個元素找到:1,i, value); break; /找到,結(jié)束while循環(huán) if(arrayi=0) continue; /數(shù)組元素為負數(shù)時,不執(zhí)行下句回到while循環(huán)表達式判斷 Console.WriteLine(arrayi); if (i =array.Length) /未找到時i= array.Length i=-1; Console.WriteLine( 在數(shù)組未找到:0, value); return i; C#.NET程序設(shè)計do-w
13、hile循環(huán)語句循環(huán)語句ldo-while循環(huán)語句循環(huán)語句, 語句格式如下:語句格式如下:do 循環(huán)體 while(布爾表達式);ldo 語句重復執(zhí)行括在語句重復執(zhí)行括在里的一個語句或語句組,里的一個語句或語句組,直到直到while指定的表達式計算為指定的表達式計算為 false。同樣允許。同樣允許使用使用break語句結(jié)束語句結(jié)束while循環(huán),和使用循環(huán),和使用continue語句停止循環(huán)體的執(zhí)行開始下一次迭代但不退出語句停止循環(huán)體的執(zhí)行開始下一次迭代但不退出循環(huán)。循環(huán)。ldo-while 語句與語句與while 語句不同的是:內(nèi)嵌循環(huán)語句不同的是:內(nèi)嵌循環(huán)體語句執(zhí)行至少一次,例如體語句執(zhí)
14、行至少一次,例如int x = 0;/如果如果x=6, 輸出輸出6,do Console.Write (x+”,”); x+; while (x intMax)txtMin.Text = txtMax.Text;txtMax.Text = intMin.ToString();txtResult.Text = GetPrime(intMin, intMax);private string GetPrime(int intMin, int intMax)/程序主要代碼程序主要代碼 int count = 0; StringBuilder sbResult=new StringBuilder();
15、for (int i = intMin; i = intMax; i+)/對區(qū)間內(nèi)每一個整數(shù)循環(huán)判斷是否是素數(shù) bool blnPrime = true;for (int j = 2; j i / 2 + 1; j+)/判斷i是否被2一直到i/2+1整除if (i % j = 0) /出現(xiàn)整除說明不是素數(shù)blnPrime = false;break;if (blnPrime) /是素數(shù)count+;sbResult.AppendFormat(0, i); sbResult.AppendFormat(共0個素數(shù)。, count); return sbResult.ToString();C#.NE
16、T程序設(shè)計foreach 語句語句lforeach 語句為數(shù)組或?qū)ο蠹现械拿總€元素重復執(zhí)行語句為數(shù)組或?qū)ο蠹现械拿總€元素重復執(zhí)行一個循環(huán)體。一個循環(huán)體。foreach 語句用于循環(huán)訪問集合以獲取所語句用于循環(huán)訪問集合以獲取所需信息,但不應(yīng)用于更改集合內(nèi)容,循環(huán)變量是一個只需信息,但不應(yīng)用于更改集合內(nèi)容,循環(huán)變量是一個只讀型局部變量讀型局部變量,如果試圖改變它的值將引發(fā)編譯時錯誤,如果試圖改變它的值將引發(fā)編譯時錯誤,如需要更改集合內(nèi)容,使用其他循環(huán)語句。如需要更改集合內(nèi)容,使用其他循環(huán)語句。lforeach循環(huán)語句的格式為循環(huán)語句的格式為:lforeach(變量類型(變量類型 循環(huán)變量循環(huán)變
17、量v in 集合表達式集合表達式e)循環(huán)體循環(huán)體l其中集合表達式其中集合表達式e是是,可枚舉的集合可枚舉的集合,指實現(xiàn)指實現(xiàn)System.Collections.IEnumerable接口的一個集合。接口的一個集合。如數(shù)組,如數(shù)組,ArrayList類等類等, foreach循環(huán)收集可枚舉的集循環(huán)收集可枚舉的集合中的各元素。合中的各元素。循環(huán)語句循環(huán)語句對數(shù)組使用 foreach的ForeachSample項目的部分代碼如下: int numbers = 4, 5, 6, 1, 2, 3, -2, -1, 0 ;foreach (int i in numbers) System.Console
18、.Write(0 , i);/輸出“5 6 1 2 3 -2 -1 0 ”int, numbers2D = new int3, 2 9, 99 , 3, 33 , 5, 55 ;foreach (int i in numbers2D) System.Console.Write(0 , i);/輸出“9 99 3 33 5 55 ”C#.NET程序設(shè)計跳轉(zhuǎn)語句跳轉(zhuǎn)語句跳轉(zhuǎn)語句有以下幾種跳轉(zhuǎn)語句有以下幾種:lbreak語句用于終止最內(nèi)層的語句用于終止最內(nèi)層的while、do-while、for和和switch等語句的執(zhí)行。當程序遇到這一語句后,跳出所在循環(huán)語句等語句的執(zhí)行。當程序遇到這一語句后,跳
19、出所在循環(huán)語句或或switch語句,執(zhí)行后面的語句。語句,執(zhí)行后面的語句。lcontinue語句語句,當程序循環(huán)遇到這一語句后,停止當前進行的當程序循環(huán)遇到這一語句后,停止當前進行的這次循環(huán)并把控制返回到當前循環(huán)的的布爾表達式判斷是否這次循環(huán)并把控制返回到當前循環(huán)的的布爾表達式判斷是否繼續(xù)循環(huán),以便于進行下一次循環(huán)。繼續(xù)循環(huán),以便于進行下一次循環(huán)。lreturn 語句終止方法的執(zhí)行并將控制返回給調(diào)用該方法的語語句終止方法的執(zhí)行并將控制返回給調(diào)用該方法的語句。不能在句。不能在finally塊中使用塊中使用return語句。它還可以返回一個可語句。它還可以返回一個可選值,如。選值,如。return
20、 表達式。如果方法為表達式。如果方法為 void 類型,則可以省類型,則可以省略略 return 語句。語句。lgoto 語句將程序控制直接傳遞給標記語句。語句將程序控制直接傳遞給標記語句。語法格式為:語法格式為:goto 標號標號; goto case 表達式表達式; goto default;goto語句可用來跳出循環(huán)和語句可用來跳出循環(huán)和switch語句。它無條件地轉(zhuǎn)移程語句。它無條件地轉(zhuǎn)移程序的執(zhí)行控制,其轉(zhuǎn)移目的地是一標號,因此要求標號與序的執(zhí)行控制,其轉(zhuǎn)移目的地是一標號,因此要求標號與goto語句處在同一個方法中。語句處在同一個方法中。lgoto語句例子如下語句例子如下: swit
21、ch (n) case 1: cost += 25; break; case 2: cost += 25; goto case 1;/轉(zhuǎn)到case 1語句 for (int i = 0; i x; i+) for (int j = 0; j y; j+) if (arrayi, j.Equals(myNumber) goto Found;/轉(zhuǎn)到標號Found Console.WriteLine(The number 0 was not found., myNumber);Found: Console.WriteLine(The number 0 is found., myNumber);C#.
22、NET程序設(shè)計異常處理異常處理l異常是程序運行程序時遇到的任何錯誤情況或意外行為。例如數(shù)據(jù)類型從字符串轉(zhuǎn)換整型int intA = int.Parse(strA);如果strA不是整數(shù)的字符串如strA=”A”則有引發(fā)FormatException異常。在語句intResult = (int)(100 / intA);如果intA是0,則有引發(fā)DivideByZeroException零除數(shù)異常。l異常處理使用 try、catch 和 finally 關(guān)鍵字來嘗試可能未成功的操作,處理可能發(fā)生的異常,以及在事后清理資源。代碼如下: try int intResult = (int)(100 /
23、 intA);catch (DivideByZeroException err) Console.WriteLine(零除數(shù)異常);C#.NET程序設(shè)計異常處理語句異常處理語句try-catch語句語句 l將可能引發(fā)異常的代碼節(jié)放在將可能引發(fā)異常的代碼節(jié)放在 try 塊中,而將處理異常塊中,而將處理異常的代碼放在的代碼放在 catch 塊中。塊中。catch 塊是一系列以關(guān)鍵字塊是一系列以關(guān)鍵字 catch 開頭的語句,語句后跟異常類型和要執(zhí)行的操作。開頭的語句,語句后跟異常類型和要執(zhí)行的操作。l如果能確定在如果能確定在try語句塊中可能發(fā)生的異常類型,那么語句塊中可能發(fā)生的異常類型,那么ca
24、tch語句可以捕捉相應(yīng)的異常類型;如果事先并不知語句可以捕捉相應(yīng)的異常類型;如果事先并不知道道try語句塊中會引起哪一種異常,則在語句塊中會引起哪一種異常,則在catch語句中可語句中可以忽略異常的類型。以忽略異常的類型。l如果是多個異常,可以用多個如果是多個異常,可以用多個catch語句塊,格式如下:語句塊,格式如下:try/try語句塊catch(類型1 參數(shù)1)/針對類型1的異常處理catch (類型2 參數(shù)2) / 針對類型2的異常處理catch (類型n 參數(shù)n)/針對類型n的異常處理異常處理異常處理static void CopyArray() int array1 = 0, 0
25、; int array2 = 0, 0 ; try Array.Copy(array1, array2, -1); /數(shù)組array1拷貝到array2 ,-1是復制長度-錯 Console.WriteLine(本語句因上句出錯而無發(fā)執(zhí)行); catch (ArgumentOutOfRangeException e) Console.WriteLine(Error: 0, e); /*finally Console.WriteLine(This statement is always executed.); */下面是使用Try-Catch的CopyArray()方法(TryCatch項目):
26、方法執(zhí)行結(jié)果將顯示“Error: System.ArgumentOutOfRangeException: 要求非負數(shù)。” C#.NET程序設(shè)計使用使用Finally塊塊l異常發(fā)生時,執(zhí)行將終止,并且控制交給最近的異常發(fā)生時,執(zhí)行將終止,并且控制交給最近的異常處理程序。這通常意味著不執(zhí)行希望總是調(diào)異常處理程序。這通常意味著不執(zhí)行希望總是調(diào)用的代碼行。有些資源清理(如關(guān)閉文件)必須用的代碼行。有些資源清理(如關(guān)閉文件)必須總是執(zhí)行,即使有異常發(fā)生。為實現(xiàn)這一點,可總是執(zhí)行,即使有異常發(fā)生。為實現(xiàn)這一點,可以使用以使用 Finally 塊。塊。Finally 塊總是執(zhí)行,不論塊總是執(zhí)行,不論是否有異
27、常發(fā)生。是否有異常發(fā)生。l格式有兩種:格式有兩種:try 語句塊語句塊-finally語句塊語句塊和和try語句塊語句塊-catch(s) 語句塊語句塊-finally語句塊語句塊。l如上例:如上例:Finally 塊注釋關(guān)閉了,去掉注釋就是塊注釋關(guān)閉了,去掉注釋就是try-catch-finally,如果去掉,如果去掉catch塊就塊就是是try finally。異常處理異常處理C#.NET程序設(shè)計throw 語句可以以兩種不同的方式引發(fā)異常:lC#語句和表達式執(zhí)行過程中激發(fā)了某個異常的條件使得操作無法正常結(jié)束從而引發(fā)異常,如整數(shù)除法操作分母為零時將拋出一個System.DivideByZeroException異常等。lthrow 語句無條件主動拋出異常。throw 語句用于在程序執(zhí)行期間主動發(fā)出異常的信號。throw 語句格式:throw; 或 throw expression;其中expression是System.Exception類或派生類的對象。lthrow 語句例子:class MyException : System.Exception throw new MyException();if (s = null) throw new ArgumentNullException();異常處理異常處理下面是包含了各種創(chuàng)建和引發(fā)異常及異常處理的TryCatch
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度軟件許可合同-企業(yè)安全防護系統(tǒng)授權(quán)與技術(shù)支持3篇
- 二零二五年度租賃車輛合同終止合同模板規(guī)范流程3篇
- 二零二五賓館股權(quán)轉(zhuǎn)讓與供應(yīng)鏈優(yōu)化合同2篇
- 2025年度高端醫(yī)療設(shè)備租賃代售及維修保養(yǎng)服務(wù)合同3篇
- 個人借款合同延期合同范本(2024年版)版
- 二零二五年度融資擔保合作協(xié)議合同范本集錦:新興產(chǎn)業(yè)投資2篇
- 網(wǎng)上教學系統(tǒng)mysql課程設(shè)計
- 瑜伽課程設(shè)計及原則
- 二零二五年度車間承包與知識產(chǎn)權(quán)保護合同2篇
- 二零二五年度房地產(chǎn)租賃合同保全與租金擔保協(xié)議3篇
- 2023-2024學年浙江省杭州市上城區(qū)教科版四年級上冊期末考試科學試卷
- 《三國志》導讀學習通超星期末考試答案章節(jié)答案2024年
- 期末 (試題) -2024-2025學年外研版(三起)(2024)英語三年級上冊
- 2023年成都溫江興蓉西城市運營集團有限公司招聘筆試題庫及答案解析
- 行為疼痛量表BPS
- 小學生必背古詩詞80首(硬筆書法田字格)
- 二年級上冊表內(nèi)乘法口算練習題(10套)
- 年產(chǎn)4000噸3-二氟甲基-1H-甲基吡唑-4-羧酸、1000噸二氟乙酸項目建議書寫作模板
- 鋁箔軋制及潤滑技術(shù)
- 學校期末考試成績單
- 支票打印模板
評論
0/150
提交評論