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