《《種程序結(jié)構(gòu)》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《種程序結(jié)構(gòu)》PPT課件.ppt(33頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、C#程序設(shè)計(jì),高歡萍 廣州科技職業(yè)技術(shù)學(xué)院,教學(xué)目的,通過本章的學(xué)習(xí),要求能熟練掌握C#中的流程控制結(jié)構(gòu)和相關(guān)的語句,熟悉各種語句的執(zhí)行流程,能夠在不同情況下靈活選擇不同的語句來解決實(shí)際問題。掌握基本語句為后續(xù)章節(jié)做好準(zhǔn)備,也為后續(xù)面向?qū)ο笳Z言課程的學(xué)習(xí)打下基礎(chǔ)。,本章要點(diǎn),switch語句與if語句的區(qū)別 while和dowhile語句的使用場合 for語句:最常用的循環(huán)語句 使用foreach語句遍歷數(shù)組集合 break與continue的區(qū)別 什么情況下使用goto語句 異常處理語句,C#流程控制語句,選擇語句: if語句 swich語句 循環(huán)語句: while語句
2、dowhile語句 for語句 foreach語句,if語句,if (布爾表達(dá)式) 內(nèi)嵌語句序列1; else 內(nèi)嵌語句序列2; ,switch語句與if語句,用if或if...else或它們的嵌套也可使程序?qū)崿F(xiàn)多路分支,但容易出現(xiàn)下面的問題: 可讀性差 破壞結(jié)構(gòu) 解決問題的方法: 采用switch語句,執(zhí)行效率更高,程序結(jié)構(gòu)形式上更清晰。,一般形式: switch (控制表達(dá)式) case 常量表達(dá)式1:語句塊1; break; //每個語句后面都要有 case 常量表達(dá)式2:語句塊2; b
3、reak; default: 語句塊; break; //只能有一個 default ,值是個常量,其類型與“表達(dá)式”的類型一致,switch語句,,break語句的功能是終止本switch語句的執(zhí)行。 執(zhí)行過程: 首先計(jì)算switch后圓括號內(nèi)的表達(dá)式的值,然后用這個值逐個與case的常量表達(dá)式的值進(jìn)行比較。當(dāng)找到相一致(匹配)的case時,就執(zhí)行 其后的語句序列;否則進(jìn)入default后的語句序列。,,使用swich語句需要注意一下幾點(diǎn): 每個case后面的常量表達(dá)式的值必須是與“表達(dá)式”的類型相同的一個常量,可以是整型或字符常量,不能是變量; 同一個swich語句中的兩個或多個
4、case中指定同一個常數(shù)值,會導(dǎo)致編譯出錯; case后面的每個語句段后面都必須寫上break,若某個case后面沒有處理語句,可以不寫break,與下一個case一并處理。 default可有可無,也可放在最前面,如: case A: case B: case C: Console.Write(“score60n”); break; ..,,例題: 1.根據(jù)輸入的月份,判斷該月屬于哪個季節(jié) 2.開發(fā)一個程序,要求在輸入1時,顯示星期一;輸入2時,顯示星期二;以此類推,輸入0時,顯示星期天。 (ex3-5),while (true)
5、 Console.WriteLine (請輸入一個0至6之間的整數(shù):); string s = Console.ReadLine(); int i = Convert.ToInt32(s); switch (i) case 1: Console.WriteLine (星期一); break; case 2: Console.WriteLine (星期二); break; case 3: Console.WriteLine (星期三); break; case 4: Console.WriteLine (星期四); brea
6、k; case 5: Console.WriteLine (星期五); break; case 6: Console.WriteLine (星期六); break; case 0: Console.WriteLine (星期天); break; default: Console.WriteLine (輸入無效,請重新輸入:); break; Console.Read();,循環(huán)語句,循環(huán)的本質(zhì):不斷地重復(fù)某種動作。 對計(jì)算機(jī)程序而言,循環(huán)必備兩個重要因素: 在一定的條件下,重復(fù)執(zhí)行一組指令 必然出現(xiàn)不滿足條件的情況,使循
7、環(huán)終止 計(jì)算機(jī)程序的兩種循環(huán)方式: 計(jì)算器控制的循環(huán)(while/dowhile/for) 標(biāo)記控制的循環(huán)(if與goto),,如果要在控制臺中循環(huán)輸入數(shù)據(jù),可以定義一個無限循環(huán),出現(xiàn)無限循環(huán)的代碼可能有以下情況: for( ; ; ) while(true) //while(1) 錯誤 do while(true) ;,while語句,一般形式: 執(zhí)行流程: 特點(diǎn):先判斷表達(dá)式, 后執(zhí)行循環(huán)體,while(布爾表達(dá)式) 循環(huán)體語句塊; ,,說明: 循環(huán)體有可能一次也不執(zhí)行(條件一開始就不成立) 循環(huán)體可為任意類型語句,但必須要有改變循環(huán)控制變量的語句,以確
8、保有限次后正常結(jié)束 下列情況,退出while循環(huán) 條件表達(dá)式不成立(false) 循環(huán)體內(nèi)遇break,return,goto,,舉例: 開發(fā)一個程序,要求使用While語句計(jì)算前N個自然數(shù)之和 。(ex3-7) int sum = 0; int i = 0; //循環(huán)初值 while (i <= id) //設(shè)置循環(huán)條件 sum += i; //循環(huán)體 i++; //循環(huán)變量增值 ,dowhile語句,一般形式: 執(zhí)行流程: 特點(diǎn):先執(zhí)行循環(huán)體,后判斷表達(dá)式,do 循環(huán)體語句; while(表達(dá)式);,,說明: 至少執(zhí)行一次循環(huán)體
9、 dowhile可轉(zhuǎn)化成while結(jié)構(gòu),for語句,一般形式: expr1:初始化表達(dá)式,給循環(huán)變量賦初值 expr2:條件表達(dá)式,循環(huán)條件。 expr3:增量表達(dá)式,改變循環(huán)變量。 執(zhí)行流程:,for(expr1 ; expr2 ; expr3) 循環(huán)體語句塊;,,說明: for語句中expr1, expr2 ,expr3 類型任意,都可省略,但分號“;”不可省 無限循環(huán): for(;;) for語句可以轉(zhuǎn)換成while結(jié)構(gòu)。,expr1; while(expr2) 循環(huán)體語句; expr3; ,for語句的幾種特例(表達(dá)方式靈活多樣),1)可以省略初始化表達(dá)式, 但須保留分號
10、, 但在for之前必須給循環(huán)變量賦值;,i=a; j=b; for (; i<=j; i++) sum=sum+i;,2)增量表達(dá)式亦可省略,但在循環(huán)體中必須有語句來修改循環(huán)變量,使能夠正常結(jié)束循環(huán);,for (sum=0,i=1;i<=100; ) /* 沒有增量表達(dá)式 */ sum=sum+i; i++; /*此處為增量表達(dá)式 */ ,,4)若同時省略初始表達(dá)式,和增量表達(dá)式,則相當(dāng)于while語句;,for ( ; i<=100; ) sum+=i; i++;,while (i<=100) sum+= i; i++; ,3)條件表達(dá)式一般不可省略,否則為無限循環(huán),循環(huán)
11、體內(nèi)應(yīng)設(shè)法結(jié)束循環(huán);,for ( i=0; ;i++) s+=ai; if (i=10) break;,6)初始表達(dá)式、循環(huán)表達(dá)式可以是逗號表達(dá)式,以使循環(huán)變量值在修改時可以對其它變量賦值;,for (sum=0, i=1; i<=100; i++, i++) 相當(dāng)于: sum=0;for (i=1; i<=100; i=i+2),7)循環(huán)體可以為空;,5)三個表達(dá)式均省略 即for(;;)語句則相當(dāng)于while(true)語句,為無限循環(huán);,三種循環(huán)的比較,1. 使用場合:三種循環(huán)都可以用來處理同一問題,一般情況下可以互相代替。 1)for一般用于具有明確循環(huán)次數(shù)的情況; 2)whi
12、le 和do-while常用在事先只知道循環(huán)控制條件,循環(huán)次數(shù)要在循環(huán)過程中才能確定的情況; 2.三個要素:循環(huán)的初始條件、循環(huán)條件、改變循環(huán)變量,只是指定的位置不同。 3.判斷循環(huán)條件的時機(jī):while、for循環(huán)先判循環(huán)條件,后執(zhí)行;do-while循環(huán)先執(zhí)行,后判循環(huán)條件。,foreach語句,用于循環(huán)列舉一個集合的元素,對每個元素執(zhí)行一次相關(guān)的語句,基本格式: foreach(類型 變量名 in 集合類型表達(dá)式) 語句塊; foreach循環(huán)支持在容器類中迭代每個項(xiàng)目。,變量的類型要與集合的類型一致,,數(shù) 組,集合類,,數(shù)組的聲明與初始化: 數(shù)組:一種有序的、能夠存儲多個相同
13、類型變量的集合,是一種指定了類型的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中連續(xù)存放數(shù)據(jù),以便訪問。 一維數(shù)組的聲明: type arrayName;,,type: 數(shù)組存儲數(shù)據(jù)的數(shù)據(jù)類型; arrayName:數(shù)組名稱; 必須跟在類型后面,數(shù)組的初始化: 聲明數(shù)組的同時初始化: 通過new運(yùn)算符創(chuàng)建數(shù)組并將數(shù)組初始化為默認(rèn)值: int arr=new arr5; //初始化為零 初始化的值為用戶自定義的值: int arr=new arr51,2,3,4,5; int arr=new arr 1,2,3,4,5; int arr=1,2,3,4,5; //快捷方式,,聲明數(shù)組時不對
14、其初始化: string arr; arr=new string3 Sun , Mon ,Tue ; string arr=Sun , Mon ,Tue ; 舉例:使用foreach語句遍歷數(shù)組中的每個元素 (ex3-10),使用new運(yùn)算符,循環(huán)的嵌套,四種循環(huán)可互相嵌套,層數(shù)不限 外層循環(huán)可包含兩個以上內(nèi)循環(huán),但不能相互交叉 嵌套循環(huán)的執(zhí)行流程,(1) while() while() ... ,(2) do do while( ); ... while( );,(3) while() do
15、 while( ); . ,(4) for( ; ;) do while(); while() ... ,避免使用,,舉例:1.打印九九乘法表 (ex3-8) 2.計(jì)算1!+2!++10!(ex3-9),跳轉(zhuǎn)語句,用于無條件地轉(zhuǎn)移控制,將控制轉(zhuǎn)到指定位置,這個位置就成為跳轉(zhuǎn)語句的目標(biāo)。 break語句:只能跳出直接包含它的語句,通常用于跳出switch、while、foreach、for 等 continue語句:只能使直接包含它的循環(huán)語句開始一次新的循環(huán) 舉例:區(qū)別break語句與continue語句 ex3-11,,,return語句:將控制返回到使用return語句的方法成員的調(diào)用處,如果return后面沒有表達(dá)式,只能用于返回值為void的方法中。 go語句:將控制轉(zhuǎn)移到由標(biāo)簽標(biāo)記的語句 goto 標(biāo)識符 goto case 常數(shù)表達(dá)式 //switch goto default //switch,異常處理語句,trycatch try...catch...finally,