C#教學(xué)課件:第3章 流程控制語句_第1頁
C#教學(xué)課件:第3章 流程控制語句_第2頁
C#教學(xué)課件:第3章 流程控制語句_第3頁
C#教學(xué)課件:第3章 流程控制語句_第4頁
C#教學(xué)課件:第3章 流程控制語句_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第3章 流程控制語句1內(nèi)容簡介 和Java、C+、Pascal等其他編程語言一樣,C#語言也是由各種各樣的語句有序構(gòu)建而成的,它提供了控制程序步驟的基本手段。如果沒有流程控制語句,整個(gè)程序?qū)凑站€性的順序來執(zhí)行,不能根據(jù)用戶的輸入條件來決定執(zhí)行的順序。本章將詳細(xì)介紹C#語言中的流程控制語句,包括基本語句、選擇語句、循環(huán)語句和跳轉(zhuǎn)語句等內(nèi)容。 學(xué)習(xí)本章后,用戶能夠熟練掌握流程控制語句的語法形式和使用規(guī)則,為后面的程序開發(fā)奠定基礎(chǔ)。2本章學(xué)習(xí)要點(diǎn) 熟悉空語句、語句塊、聲明語句和表達(dá)式語句的作用 掌握if語句、if else語句和嵌套if語句的使用方法 掌握for循環(huán)語句的使用方法 掌握while循

2、環(huán)語句的使用方法 掌握do while語句的使用方法 掌握foreach語句的使用方法 熟悉while語句和do while語句的異同點(diǎn) 熟練使用多重語句輸出各種圖形 了解各種跳轉(zhuǎn)語句的作用33.1.33.1.43.1 基本語句3.1.23.1.1 C#語句中包含多種常用的基本語句,如空語句、聲明語句和語句塊等。本節(jié)詳細(xì)介紹這些語句的使用方法??照Z句語句塊聲明語句表達(dá)式語句43.1.1 空語句 只有分號(hào)“;”組成的語句就稱為空語句,它在應(yīng)用程序中什么都不做,且不包含任何實(shí)際性的語句。如果要求有語句的上下文中不執(zhí)行任何操作時(shí),使用空語句。 上述代碼中無論isCheck的值是什么,while語句都

3、不執(zhí)行任何操作。class Program static bool isCheck = false; public static void Test() while (isCheck) ; public static void Main(string args) Test(); Console.ReadLine(); 53.1.2 語句塊 語句塊中可以包含多個(gè)語句,一個(gè)語句塊可以看作是多個(gè)語句的組合。它的語法形式如下所示: statement-list /語句列表 上面語法中statement-list表示一個(gè)或多個(gè)語句組成的列表,如果不存在statement-list,則稱該塊是空的。 語句

4、塊的執(zhí)行規(guī)則如下:如果語句塊的內(nèi)容為空,控制轉(zhuǎn)到塊的結(jié)束點(diǎn)如果語句塊的內(nèi)容不為空,控制轉(zhuǎn)到語句列表。當(dāng)控制到達(dá)語句列表的結(jié)束點(diǎn)時(shí),控制轉(zhuǎn)到塊的結(jié)束點(diǎn)63.1.2 語句塊例:創(chuàng)建一個(gè)語句塊,該語句塊包含4條語句。第一條語句聲明3個(gè)int類型的變量;中間兩條語句分別為變量firstnum和secondnum賦值。最后將這兩個(gè)變量的值相乘,結(jié)果保存到total變量中。 int firstnum, secondnum, total; firstnum = 100; secondnum = 10; total = firstnum * secondnum;73.1.3 聲明語句 聲明語句主要用來聲明常量

5、或者變量。static string name = Jack“; /聲明字符型的靜態(tài)變量double money = 300.23; /聲明double類型的實(shí)例變量const double Radius = 3.14;/聲明double類型的常量const int Size = 100;/聲明整型的常量 例如下面語句演示了常量和變量的聲明:83.1.4 表達(dá)式語句 表達(dá)式語句是C#語言中最常見的語句之一。實(shí)際上它的值只是一個(gè)中間結(jié)果,常用的表達(dá)式語句主要包括7類,如下所示:賦值表達(dá)式 如“num=2002”創(chuàng)建對(duì)象表達(dá)式 如“object obj = new object()”前綴遞增表達(dá)式

6、 如“+num”前綴遞減表達(dá)式 如“-num”后綴遞增表達(dá)式 如“num+”后綴遞減表達(dá)式 如“num-”調(diào)用表達(dá)式 如“count()”93.2.33.2.43.2 選擇語句3.2.23.2.1 選擇語句是指根據(jù)表達(dá)式的值從若干個(gè)給定的語句中選擇一個(gè)來執(zhí)行的語句。 本節(jié)介紹常用的判斷語句,如if語句、if else語句和switch語句等。if語句if else語句if else if else語句嵌套if語句3.2.5switch語句103.2.1 if語句 if語句是使用最多的條件分支結(jié)構(gòu),它屬于選擇語句,也可以稱為條件語句。根據(jù)布爾表達(dá)式的值判斷是否執(zhí)行語句塊的內(nèi)容。if ( 表達(dá)式

7、) 語句塊其中表達(dá)式可以是任何一種邏輯表達(dá)式。if語句的執(zhí)行流程如圖所示。11/ 如果只有一條語句if ( 表達(dá)式 ) 語句;/ 如果只有一條語句if ( 表達(dá)式 ) 語句;Console.Write(請(qǐng)輸入用戶名:);string userName = Console.ReadLine();Console.Write(請(qǐng)輸入用戶密碼:);string userPass = Console.ReadLine();if (userName.Contains() Console.WriteLine(對(duì)不起,您的用戶名包含非法字符!);if (string.IsNullOrEmpty(userPas

8、s) | userPass.Length 4 & dt.Hour 9) Console.WriteLine(早晨好!); else Console.WriteLine(努力工作吧!); Console.ReadLine(); 143.2.3 if - else if - else 無論是if語句還是if else語句,它們給應(yīng)用程序只提供了一個(gè)分支。但是,C#中的應(yīng)用程序分支可以有多個(gè),這時(shí)候可以使用if else if else語句,它由多個(gè)if else語句組合而成。if (表達(dá)式1) 語句塊1else if(表達(dá)式2)語句塊2else if (表達(dá)式n) 語句塊nelse語句塊n+1首先

9、判斷表達(dá)式1的值,如果它的值為true則執(zhí)行語句塊1;否則依次判斷else if中表達(dá)式的值。當(dāng)某個(gè)條件表達(dá)式的值為true時(shí)則執(zhí)行該分支相應(yīng)的語句塊。如果所有分支的值都為false則執(zhí)行語句塊n+1,然后繼續(xù)執(zhí)行程序后面的代碼。1516public static void Main(string args) Console.WriteLine(請(qǐng)選擇你的身份:); Console.WriteLine(1、普通管理員 2、超級(jí)管理員 3、游客 ); int i = int.Parse(Console.ReadLine(); if (i = 1) Console.WriteLine(你好,普通管

10、理員可以查看系統(tǒng)全部信息。); else if (i = 2) Console.WriteLine(你好,超級(jí)用戶可以查看和修改、刪除。); else if (i = 3) Console.WriteLine(你好,游客只能查看自己的信息。請(qǐng)注冊(cè)!); else Console.WriteLine(選擇的編號(hào)錯(cuò)誤); Console.ReadLine(); 17173.2.4 嵌套if語句嵌套if語句就是指在if語句或else語句中,嵌套了多個(gè)if else語句。if語句、if else語句和if else if else語句之間可以相互嵌套,并且可以嵌套多個(gè)if語句。if (表達(dá)式1) if

11、 (表達(dá)式2) 語句塊1 else 語句塊2 else if (表達(dá)式3) 語句塊3 else 語句塊4 183.2.4 嵌套if語句 上述語法中if else語句又分別嵌套了一個(gè)if else語句。在執(zhí)行嵌套if語句時(shí)程序會(huì)首先執(zhí)行外層的if else語句,然后再執(zhí)行內(nèi)層的if else語句。嵌套if語句的執(zhí)行流程如圖所示。193.2.5 switch語句 switch語句提供多路分支??梢园阉醋魇莍f else語句的另一種實(shí)現(xiàn)方式。如果需要比較有很多值的變量,可以使用switch語句。 switch (表達(dá)式) case 常量1: 語句塊1; break; case 常量2: 語句塊2;

12、 break; . case 常量n: 語句塊n; break; default: 語句塊n+1; break;表達(dá)式將和每個(gè)case子句的值進(jìn)行比較,如果匹配成功則執(zhí)行相關(guān)語句塊。如果都不匹配則執(zhí)行default中的語句塊。每個(gè)語句塊以break語句結(jié)尾,否則編譯錯(cuò)誤??梢詻]有default語句塊。203.2.5 switch語句21 public static void Main(string args) Console.Write(請(qǐng)輸入出生的月、日(MMDD):); int monthday = Convert.ToInt32(Console.ReadLine(); int month

13、 = monthday / 100; int day = monthday % 100; string xingzuo=; switch (month) case 1: xingzuo = day 21 ? 魔蝎座 : 水瓶座; break; case 2: xingzuo= day 20 ? 水瓶座:雙魚座; break; Console.WriteLine(xingzuo); Console.ReadLine(); 例:輸入出生的月、日,計(jì)算出星座22下面程序執(zhí)行時(shí),若輸入2,則輸出結(jié)果是? int i = Convert.ToInt32(Console.ReadLine(); switc

14、h (i+) case 1: Console.WriteLine(1:+i); break; case 2: Console.WriteLine(2: + i); break; 23找錯(cuò):switch i*3 case 1 Console.WriteLine(1:+i); case 2 Console.WriteLine(2: + i); ( ) : break; : break; 243.3.33.3.43.3 循環(huán)語句3.3.23.3.1 循環(huán)語句也叫迭代語句,它可以重復(fù)執(zhí)行嵌入語句的語句塊。被重復(fù)執(zhí)行的語句稱之為循環(huán)體,能否繼續(xù)重復(fù)執(zhí)行取決于循環(huán)條件。本節(jié)就詳細(xì)介紹C#中的4種循環(huán)語句。

15、for語句while語句do while語句foreach語句253.3.1 for語句 for循環(huán)語句通常用在確定循環(huán)次數(shù)的情況下,語法格式如下: 上述語法格式中程序首先執(zhí)行初始化表達(dá)式的代碼,然后判斷是否滿足條件表達(dá)式,如果滿足條件則執(zhí)行語句塊的代碼。執(zhí)行語句塊完畢后執(zhí)行迭代表達(dá)式的代碼,如果條件表達(dá)式仍然成立則繼續(xù)執(zhí)行語句塊的代碼,再重新執(zhí)行迭代表達(dá)式。重復(fù)上面的步驟直到不滿足條件表達(dá)式為止。for (初始化表達(dá)式; 條件表達(dá)式; 迭代表達(dá)式) 語句塊26例:計(jì)算1100所有整數(shù)的和、所有奇數(shù)的和、所有偶數(shù)的和。 public static void Main(string args)

16、int totalSum=0,eventSum = 0,oddSum = 0; for (int i = 1; i = 100;i+ ) totalSum += i; if (i % 2 = 0) eventSum += i; else oddSum += i; Console.WriteLine(“總和0,奇數(shù)和1,偶數(shù)和2,totalSum,oddSum,eventSum); Console.ReadLine(); 27長語句可書寫成多行 Console.WriteLine(“總和0,奇數(shù)和1,偶和2,totalSum,oddSum,eventSum); Console . WriteLi

17、ne ( “總和0, 奇數(shù)和1, 偶和2“ , totalSum , oddSum ,eventSum);28for語句可以單獨(dú)使用,也可以嵌套使用,構(gòu)成多重循環(huán)。例:根據(jù)輸入的行數(shù)和列數(shù),繪制長方形。 public static void Main(string args) Console.WriteLine(請(qǐng)分別輸入行數(shù)、列數(shù):); int row = Convert.ToInt32(Console.ReadLine(); int col = Convert.ToInt32(Console.ReadLine(); for ( int i = 1; i = row; i+ ) for (i

18、nt j = 1; j = col; j+) Console.Write(*); Console.WriteLine(); Console.ReadLine(); 293.3.2 while語句 for語句是用戶確定循環(huán)次數(shù)時(shí)使用的循環(huán)語句。如果不知道程序要循環(huán)的次數(shù),怎么辦?在C#中有另外一種循環(huán):while循環(huán)。while循環(huán)語句能夠按照不同的條件執(zhí)行一個(gè)嵌入語句零次或多次。語法如下: 在while語句的語法中首先判斷表達(dá)式是否滿足條件,如果滿足條件則執(zhí)行語句塊的內(nèi)容。否則直接執(zhí)行while語句后面的內(nèi)容。while (條件表達(dá)式) 語句塊30 public static void Mai

19、n(string args) int i = 1 , sum =0; while (i= 0); Console.ReadLine(); 例:猜數(shù)游戲,電腦生成03的隨機(jī)數(shù)。與輸入數(shù)做比較。若輸入負(fù)數(shù)結(jié)束。33Random的用法int Next() ; 返回大于等于零且小于Int32.MaxValue 的 32 位帶符號(hào)整數(shù)。 int Next( int maxValue ); 返回大于等于零且小于 maxValue 的 32 位帶符號(hào)整數(shù)。 int Next( int minValue, int maxValue ) ; 返回一個(gè)大于等于 minValue 且小于 maxValue 的 32

20、 位帶符號(hào)整數(shù)。34 int k; Random rnd = new Random(); k = rnd.Next(); /返回非負(fù)隨機(jī)數(shù),整數(shù) k = rnd.Next(20); / 返回非負(fù)隨機(jī)數(shù),整數(shù),0= k 20 k = rnd.Next(-11, 3); /返回兩值之間的隨機(jī)整數(shù), -11= k 33.3.4 foreach語句 foreach語句是一個(gè)特殊的for循環(huán)語句,它用于枚舉一個(gè)集合元素,迭代出集合中的每一項(xiàng),但是不能修改集合中的每一項(xiàng)(即:循環(huán)體內(nèi)不能修改item的值)。foreach (type item in collection) 語句塊35public stat

21、ic void Main() string numbers = new string 4one,two,three,four; foreach(string s in numbers) foreach(char ch in s) Console.WriteLine(ch); Console.WriteLine(-); Console.ReadLine();可用于數(shù)組、Arraylist等363.4.33.4.43.4 跳轉(zhuǎn)語句3.4.23.4.1 除了基本語句、選擇語句和循環(huán)語句外,C#中還有另外的一種語句:跳轉(zhuǎn)語句。跳轉(zhuǎn)語句用于無條件的轉(zhuǎn)移,主要包括break、goto、return和con

22、tinue等語句。break語句continue語句return語句goto語句373.4.1 break語句 break語句從最近層的循環(huán)語句中(switch、while、do 、for 、foreach)跳出,從而執(zhí)行循環(huán)語句下面的語句。 (與if語句無關(guān))static void Main(string args) string famous = 紅樓夢(mèng), 三國演義, 水滸傳, 西游記 ; foreach (string fam in famous) if (fam = 水滸傳) break; else Console.Write(fam); Console.WriteLine(!); C

23、onsole.ReadLine(); 控制臺(tái)輸出的結(jié)果是?383.4.2 continue語句 continue語句只能出現(xiàn)在循環(huán)體中,它表示跳出本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。continue語句只能用在while、do、for、foreach語句中,否則會(huì)發(fā)生編譯時(shí)錯(cuò)誤。 continue語句和break語句相似,但是它們最大的區(qū)別在于:continue語句是跳過循環(huán)體中剩余的語句而強(qiáng)制執(zhí)行下一次循環(huán),而break語句是直接跳出循環(huán)語句。 continue語句的在for循環(huán)語句中的執(zhí)行流程:39static void Main(string args) string famous = 紅樓夢(mèng)

24、, 三國演義, 水滸傳, 西游記 ; foreach (string fam in famous) if (fam = 水滸傳) continue; else Console.Write(fam); Console.WriteLine(!); Console.ReadLine(); 把上例的break改成continue:403.4.3 return語句return語句用于終止其執(zhí)行的方法,并將控制返回給調(diào)用方法。如果方法沒有返回類型,可以省略return語句。如果方法有返回類型,return語句必須返回這個(gè)類型的值。 例:裴波那契數(shù)列又稱黃金分割數(shù)列,它指的是這樣的數(shù)列:1、1、2、3、5、

25、8、13、21。數(shù)列中后一個(gè)數(shù)值總是等于前兩個(gè)數(shù)字的和。下面實(shí)現(xiàn)裴波那契數(shù)列:41public static int Fibonacci(int number) if (number = 1 | number = 2) return 1; else return Fibonacci(number - 1) + Fibonacci(number - 2);static void Main(string args) int inputnum = Fibonacci(14); Console.WriteLine(第14個(gè)數(shù)字的值應(yīng)該是: + inputnum); 運(yùn)行輸出的結(jié)果是:第14個(gè)數(shù)字的值應(yīng)

26、該是:3771、1、2、3、5、8、13、21423.4.4 goto語句goto語句也叫無條件轉(zhuǎn)移語句,它可以跳轉(zhuǎn)到指定的標(biāo)簽位置。goto 語句標(biāo)號(hào); goto語句多用于switch語句,實(shí)現(xiàn)由某個(gè)switch的case標(biāo)簽或default標(biāo)簽跳轉(zhuǎn)到另一個(gè)case標(biāo)簽或default標(biāo)簽。goto也可以用在嵌套語句中,使程序跳出多層循環(huán)。goto不能跳出類的范圍。goto不能跳到類似于for循環(huán)那樣的語句塊中。43static void Main(string args) Choose: Console.WriteLine(下列四個(gè)選項(xiàng)中,哪項(xiàng)不是中國古代四大發(fā)明?); Console.W

27、riteLine(A.造紙術(shù) B.指南針 C.醫(yī)藥 D.火藥 E.印刷術(shù)); Console.Write(您選擇:);string answer = Console.ReadLine(); if (answer = C) goto Right; else Console.WriteLine(選擇答案錯(cuò)誤,請(qǐng)重新選擇!); goto Choose; Right: Console.WriteLine(恭喜您,回答正確!); Console.ReadLine();例:如果選擇的不是C則goto跳轉(zhuǎn)到Choose標(biāo)簽,否則跳轉(zhuǎn)到Right標(biāo)簽。443.5 實(shí)現(xiàn)簡單的計(jì)算器本節(jié)將前幾節(jié)所講的部分內(nèi)容相結(jié)合實(shí)現(xiàn)一個(gè)簡單的計(jì)算器。首先提示用戶輸入兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論