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