C#程序設(shè)計(jì) 課件 第4章 C#流程控制語句_第1頁
C#程序設(shè)計(jì) 課件 第4章 C#流程控制語句_第2頁
C#程序設(shè)計(jì) 課件 第4章 C#流程控制語句_第3頁
C#程序設(shè)計(jì) 課件 第4章 C#流程控制語句_第4頁
C#程序設(shè)計(jì) 課件 第4章 C#流程控制語句_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第4章C#程序流程控制語句引入生活中的流程控制引入生活中的流程控制引入智造中國生活中的流程控制引入智造中國生活中的流程控制第4章C#程序流程控制語句4.1語句4.2賦值語句4.3選擇結(jié)構(gòu)語句4.4循環(huán)(迭代)語句4.5跳轉(zhuǎn)語句4.6using語句4.7選擇、循環(huán)結(jié)構(gòu)的嵌套4.8方法的遞歸調(diào)用4.9C#中常用的數(shù)值操作類4.10綜合應(yīng)用目錄流程控制語句:語句在程序中的執(zhí)行順序稱為“控制流”或“執(zhí)行流”。

教學(xué)重點(diǎn)教學(xué)目標(biāo)了解C#語句的特征與分類;理解流程控制的概念和方法;能夠運(yùn)用選擇、循環(huán)等流程控制語句,對(duì)現(xiàn)實(shí)事物進(jìn)行抽象。難點(diǎn)選擇語句、循環(huán)語句、跳轉(zhuǎn)語句的靈活運(yùn)用;語句的嵌套與方法的遞歸調(diào)用。4.1語句語句語句:

語句是描述某個(gè)類型或讓程序執(zhí)行某個(gè)動(dòng)作的源代碼指令。包括:聲明變量賦值調(diào)用方法循環(huán)訪問數(shù)組簡單語句由單行代碼+分號(hào)組成。復(fù)合語句(語句塊)是大括號(hào){}括起來的一個(gè)語句序列。語句塊可以嵌套塊在語法上可以算作單條語句classDaysTemp{publicintHigh=75;//聲明字段并初始化

publicintLow=45;//簡單語句}classProgram{staticvoidMain()

{//復(fù)合語句/語句塊DaysTemptemp=newDaysTemp();

temp.High=85;

temp.Low=60; Console.WriteLine("High:{0}",temp.High);Console.WriteLine($"Low:{temp.low}");}}4.1語句語句語句的類型:聲明語句賦值語句選擇語句循環(huán)語句跳轉(zhuǎn)語句標(biāo)簽語句異常處理語句空語句…4.2

賦值語句intx,y,z;x=1;y=x+2;z=y++;////////賦值語句功能:給變量賦值語法:變量

=表達(dá)式;

執(zhí)行過程:首先求表達(dá)式的值,然后賦值給左邊的變量。示例:說明:右操作數(shù)類型必須與左操作數(shù)類型相同,或可隱式轉(zhuǎn)換為左操作數(shù)的類型。流程控制語句流程控制語句流程控制語句:語句的執(zhí)行順序稱為“控制流”或“流程控制”。C#中的流程控制語句:選擇語句:依據(jù)一個(gè)條件執(zhí)行/跳過一個(gè)代碼片段。選擇語句包括:ifif…elseswitch循環(huán)語句:重復(fù)執(zhí)行一個(gè)代碼片段。循環(huán)語句包括:whiledoforforeach跳轉(zhuǎn)語句:把控制流從一個(gè)代碼片段,改變到另一個(gè)代碼片段中的指定語句。跳轉(zhuǎn)語句包括:breakcontinuereturngoto(與標(biāo)簽語句配合,慎用)throw4.3

選擇語句if語句if語句:if語句實(shí)現(xiàn)按條件執(zhí)行,其語法如下。if(測試表達(dá)式)執(zhí)行語句//測試表達(dá)式的值必須為bool類型//流程:如果測試表達(dá)式求值為true,運(yùn)行執(zhí)行語句;如果測試表達(dá)式求值為false,則不執(zhí)行(即會(huì)跳過)執(zhí)行語句。intx=1;if(x==1)x=x+1;////示例:intx=1;if(x)x=x+1;//錯(cuò)誤!測試表達(dá)式必須返回bool型值4.3

選擇語句if語句例3:編寫C#程序,要求使用if語句判定學(xué)生的期末成績是否及格(>=60),要求如下:創(chuàng)建學(xué)生類,數(shù)據(jù)包括姓名,期末成績,是否及格,并創(chuàng)建構(gòu)造函數(shù);創(chuàng)建程序類,并在主函數(shù)中創(chuàng)建學(xué)生類的實(shí)例,并利用構(gòu)造函數(shù)對(duì)實(shí)例進(jìn)行初始化;編寫if條件語句,判斷學(xué)生的期末成績是否及格,并通過控制臺(tái)輸出。4.3

選擇語句if語句例3:classStudent{

publicstringName{get;set;}publicdoubleFinalScore{get;set;}publicboolIsPass{get;set;}

publicStudent(stringname,doublefinalScore){Name=name;FinalScore=finalScore;}}classProgram{staticvoidMain(){Studentstudent1=newStudent("Alice",75);if(student1.FinalScore>=60)student1.IsPass=true;Console.WriteLine("{0}'sfinalscoreis{1}.Pass:{2}",student1.Name,student1.FinalScore,student1.IsPass?“true":“false");}}//學(xué)生類////屬性//字段,成員變量//構(gòu)造函數(shù)//程序類//創(chuàng)建學(xué)生實(shí)例并初始化,對(duì)象初始化語句//判斷學(xué)生的期末成績是否及格,并輸出結(jié)果4.3

選擇語句if語句例3:classProgram{staticvoidMain(){Studentstudent1=newStudent("Alice",75);

if(student1.FinalScore>=60)student1.IsPass=true;if(student1.FinalScore<60)student1.IsPass=false;Console.WriteLine("{0}'sfinalscoreis{1}.Pass:{2}",student1.Name,student1.FinalScore,student1.IsPass?“true":“false");}}//////////流程圖?4.3

選擇語句if...else語句if…else語句:if…else語句實(shí)現(xiàn)雙路分支,其語法如下。if(測試表達(dá)式)

執(zhí)行語句1else

執(zhí)行語句2//分支1////分支2//流程:如果測試表達(dá)式求值為true,運(yùn)行執(zhí)行語句1;如果測試表達(dá)式求值為false,則運(yùn)行)執(zhí)行語句2。if(student1.FinalScore>=60)student1.IsPass=true;elsesdudent1.IsPass=false;////執(zhí)行語句1//執(zhí)行語句2示例:if(student1.FinalScore>=60)student1.IsPass=true;if(student1.FinalScore<60)student1.IsPass=false;4.3

選擇語句例4:根據(jù)期末成績計(jì)算學(xué)生某科目的GPA值:if...else語句if(score>=90)GPA=4.0;else

{if(score>=80)GPA=3.0;

else

{if(score>=70)GPA=2.0;

else

{if(score>=60)GPA=1.0;

elseGPA=0.0;

}

}

}說明:每個(gè)else語句都與離它最近的if語句是一組。如果成績大于等于80,則GPA值等于3;如果成績大于等于90,則GPA值等于4;如果成績大于等于70,則GPA值等于2;如果成績大于等于60,則GPA值等于1;如果成績?yōu)?0以下,則GPA值等于0。4.3

選擇語句當(dāng)執(zhí)行語句2是if或if...else語句時(shí),可將嵌套的if…else語句結(jié)構(gòu)格式化為下面的形式,實(shí)現(xiàn)多路分支:if(測試表達(dá)式1)

執(zhí)行語句1elseif(測試表達(dá)式2)

執(zhí)行語句2…elseif(測試表達(dá)式n)

執(zhí)行語句nelse

執(zhí)行語句n+1if...else語句if(score>=90)GPA=4.0;else

{if(score>=80)GPA=3.0;

else

{if(score>=70)GPA=2.0;

else

{if(score>=60)GPA=1.0;

elseGPA=0.0;

}

}

}4.3

選擇語句例4:根據(jù)期末成績計(jì)算學(xué)生某科目的GPA值,實(shí)現(xiàn)if...else語句if(score>=90)GPA=4.0;elseif(score>=80)GPA=3.0;elseif(score>=70)GPA=2.0;elseif(score>=60)GPA=1.0;elseGPA=0.0;擴(kuò)展:假如有多門課呢?請?jiān)谡n下練習(xí)將計(jì)算GPA值的代碼寫成局部函數(shù)的形式。if(score>=90)GPA=4.0;else

{if(score>=80)GPA=3.0;

else

{if(score>=70)GPA=2.0;

else

{if(score>=60)GPA=1.0;

elseGPA=0.0;

}

}

}4.3

選擇語句switch語句:switch語句也實(shí)現(xiàn)多路分支,其語法如下。switch(測試表達(dá)式)

{case模式表達(dá)式1:

執(zhí)行語句1break;

case模式表達(dá)式2:

執(zhí)行語句2

break;…case模式表達(dá)式n:

執(zhí)行語句n

break;

default:

執(zhí)行語句n+1

break;}////分支塊以case開頭//分支塊1:////分支塊2//分支塊n//defalut分支塊(可選)流程:按順序?qū)y試表達(dá)式的值與分支標(biāo)簽中的模式表達(dá)式的值進(jìn)行對(duì)比,如果相等,則執(zhí)行該分支標(biāo)簽后面的執(zhí)行語句,直到遇到跳轉(zhuǎn)語句。switch語句4.3

選擇語句switch語句示例:intoption=2;switch(option){case1:Console.WriteLine("您選擇了選項(xiàng)1");break;case2:Console.WriteLine("您選擇了選項(xiàng)2");break;case3:Console.WriteLine("您選擇了選項(xiàng)3");break;default:Console.WriteLine("無效的選項(xiàng)");break;}//////switch語句4.3

選擇語句switch語句說明:測試表達(dá)式可以是任何類型(C#7.0后),包括integer、char、string、bool、enum等。如果整數(shù)類型,則使用C#的相等運(yùn)算符(==)進(jìn)行比較。如果是其他類型,則使用靜態(tài)方法Object.Equals(test,pattern)進(jìn)行比較。switch語句4.3

選擇語句例5:字符charscore='B';switch(score){case'A':gpa=4.0;break;case'B':gpa=3.0;break;case'C':gpa=2.0;break;case'D':gpa=1.0;break;case'F':gpa=0.0;break;default:gpa=0.0;Console.WriteLine("無效的成績等級(jí)!");break;}//////switch語句4.3

選擇語句例5:字符串stringfruit="apple";switch(fruit){case"apple":Console.WriteLine("蘋果");break;case"banana":Console.WriteLine("香蕉");break;case"orange":Console.WriteLine("橙子");break;default:Console.WriteLine("未知的水果");break;}//////switch語句4.3

選擇語句例5:枚舉enumDayOfWeek{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}DayOfWeekday=DayOfWeek.Friday;switch(day){caseDayOfWeek.Monday:Console.WriteLine("星期一");break;caseDayOfWeek.Tuesday:Console.WriteLine("星期二");break;…caseDayOfWeek.Sunday:Console.WriteLine("星期日");break;default:Console.WriteLine("無效的日期");break;}//////switch語句4.3

選擇語句switch語句說明:測試表達(dá)式可以是任何類型(C#7.0后),包括integer、char、string、bool、enum等。如果整數(shù)類型,則使用C#的相等運(yùn)算符(==)進(jìn)行比較。如果是其他類型,則使用靜態(tài)方法Object.Equals(test,pattern)進(jìn)行比較。每個(gè)分支塊可以一個(gè)或多個(gè)分支標(biāo)簽(case)開頭,每個(gè)分支標(biāo)簽后跟一個(gè)模式表達(dá)式(類型與測試表達(dá)式相同)switch語句4.3

選擇語句switch語句示例:intoption=2;switch(option){case1:case2:Console.WriteLine(“您選擇了選項(xiàng)1或2");break;case3:Console.WriteLine("您選擇了選項(xiàng)3");break;default:Console.WriteLine("無效的選項(xiàng)");break;}//////switch語句分支塊14.3

選擇語句switch語句說明:測試表達(dá)式可以是任何類型(C#7.0后),包括integer、char、string、bool、enum等。如果整數(shù)類型,則使用C#的相等運(yùn)算符(==)進(jìn)行比較。如果是其他類型,則使用靜態(tài)方法Object.Equals(test,pattern)進(jìn)行比較。每個(gè)分支塊可以一個(gè)或多個(gè)分支標(biāo)簽(case)開頭,每個(gè)分支標(biāo)簽后跟一個(gè)模式表達(dá)式(類型與測試表達(dá)式相同)每個(gè)分支塊按順序比較,并遵守“不穿過原則”,需配合跳轉(zhuǎn)語句(break,return,continue,goto,throw)來實(shí)現(xiàn)。break語句會(huì)切換執(zhí)行流程到switch語句的末尾。switch語句4.3

選擇語句switch語句示例:intoption=2;switch(option){case1:case2:Console.WriteLine(“您選擇了選項(xiàng)1或2");

break;case3:Console.WriteLine("您選擇了選項(xiàng)3");break;default:Console.WriteLine("無效的選項(xiàng)");break;}////////跳轉(zhuǎn)到switch語句末尾switch語句4.3

選擇語句switch語句說明:測試表達(dá)式可以是任何類型(C#7.0后),包括integer、char、string、bool、enum等。如果整數(shù)類型,則使用C#的相等運(yùn)算符(==)進(jìn)行比較。如果是其他類型,則使用靜態(tài)方法Object.Equals(test,pattern)進(jìn)行比較。每個(gè)分支塊可以一個(gè)或多個(gè)分支標(biāo)簽(case)開頭,每個(gè)分支標(biāo)簽后跟一個(gè)模式表達(dá)式(類型與測試表達(dá)式相同)每個(gè)分支塊按順序比較,并遵守“不穿過原則”,需配合跳轉(zhuǎn)語句(break,return,continue,goto,throw)來實(shí)現(xiàn)。break語句會(huì)切換執(zhí)行流程到switch語句的末尾。default分支是可選的,但如果有,也要以跳轉(zhuǎn)語句結(jié)束。switch語句4.3

選擇語句例5:使用switch語句改寫剛才的GPA的計(jì)算程序。if(score>=90)GPA=4.0;elseif(score>=80)GPA=3.0;elseif(score>=70)GPA=2.0;elseif(score>=60)GPA=1.0;elseGPA=0.0;switch語句intScoreRange=Score/10;switch(ScoreRange){case10:case9:GPA=4.0;break;case8:GPA=3.0;break;case7:GPA=2.0;break;case6:GPA=1.0;break;default:GPA=0.0;break;}4.3

選擇語句小結(jié)選擇語句小結(jié):功能:依據(jù)一個(gè)條件執(zhí)行/跳過一個(gè)代碼片段。條件執(zhí)行語句包括:if語句:實(shí)現(xiàn)按條件執(zhí)行if…else語句:實(shí)現(xiàn)雙路或多路的分支switch語句:實(shí)現(xiàn)多路分支if(測試表達(dá)式)執(zhí)行語句if(測試表達(dá)式)

執(zhí)行語句1else

執(zhí)行語句2switch(測試表達(dá)式)

{case模式表達(dá)式1:

執(zhí)行語句組1

break;…}不同點(diǎn):簡單來說,`if...else`語句基于布爾表達(dá)式,條件處理更加靈活,適用于復(fù)雜的條件邏輯,而`switch`語句使用簡單的值匹配,結(jié)構(gòu)更加清晰。4.4循環(huán)語句while循環(huán)while循環(huán):一種在頂部執(zhí)行測試表達(dá)式的簡單循環(huán)結(jié)構(gòu),其語法如下重復(fù)執(zhí)行一個(gè)代碼片段。包括:while、do、for、foreachwhile(測試表達(dá)式)執(zhí)行語句////流程:對(duì)測試表達(dá)式求值,如果測試表達(dá)式求值為true,運(yùn)行執(zhí)行語句;并再次對(duì)測試表達(dá)式求值。循環(huán)在測試表達(dá)式求值為false時(shí)結(jié)束。inti=1;while(i<4){Console.WriteLine($"第{i}次循環(huán)");i++;}Console.WriteLine("循環(huán)結(jié)束");////示例:while循環(huán)例6:“數(shù)字炸彈”小游戲。4.4循環(huán)語句游戲規(guī)則:由系統(tǒng)隨機(jī)生成一個(gè)1到100的隨機(jī)整數(shù);由一位或多位玩家輪流猜測數(shù)字的大小,如果所猜數(shù)字比生成數(shù)小,則提示“小了”,如果所猜數(shù)字比生成數(shù)大,則提示“大了”;直到兩者相等,提示“你猜中了”,猜中的玩家則獲得數(shù)字炸彈。while循環(huán)例6:“數(shù)字炸彈”小游戲。while(!guessedCorrectly){Console.Write("請輸入你的猜測:");guess=int.Parse(Console.ReadLine());if(guess==targetNumber){Console.WriteLine("恭喜你,喜提數(shù)字炸彈!");guessedCorrectly=true;}elseif(guess<targetNumber){Console.WriteLine("小了,下一位:");}else{Console.WriteLine("大了,下一位:");}}//循環(huán),直到猜對(duì)//////檢查猜測是否正確4.4循環(huán)語句4.4循環(huán)語句do循環(huán)do循環(huán):一種在底部執(zhí)行測試表達(dá)式的簡單循環(huán)結(jié)構(gòu),其語法如下do

執(zhí)行語句while(測試表達(dá)式)//////測試表達(dá)式為false時(shí)結(jié)束循環(huán)流程:運(yùn)行執(zhí)行語句,然后對(duì)測試表達(dá)式求值,如果測試表達(dá)式求值為true,繼續(xù)運(yùn)行執(zhí)行語句;并再次對(duì)測試表達(dá)式求值。循環(huán)在測試表達(dá)式求值為false時(shí)結(jié)束。inti=1;do{Console.WriteLine($"第{i}次循環(huán)");i++;}while(i<4);Console.WriteLine("循環(huán)結(jié)束");////示例:while循環(huán)與do循環(huán):inti=1;do{Console.WriteLine($"第{i}次循環(huán)");i++;}while(i<4);Console.WriteLine("循環(huán)結(jié)束");inti=1;while(i<4){Console.WriteLine($"第{i}次循環(huán)");i++;}Console.WriteLine("循環(huán)結(jié)束");4.4循環(huán)語句比較4.4循環(huán)語句while循環(huán)與do循環(huán):do循環(huán)的執(zhí)行語句至少執(zhí)行一次;在測試表達(dá)式的后面需要書寫分號(hào)。課下練習(xí):嘗試將前面的數(shù)字炸彈游戲用do循環(huán)改寫。比較4.4循環(huán)語句for循環(huán)for循環(huán):在循環(huán)體頂端計(jì)算測試表達(dá)式,語法如下。for(初始化表達(dá)式;測試表達(dá)式;迭代表達(dá)式)

執(zhí)行語句////測試表達(dá)式為false時(shí)結(jié)束循環(huán)流程:運(yùn)行初始化表達(dá)式,然后對(duì)測試表達(dá)式求值,如果測試表達(dá)式求值為true,運(yùn)行執(zhí)行語句與迭代表達(dá)式;然后再次對(duì)測試表達(dá)式求值。循環(huán)在測試表達(dá)式求值為false時(shí)結(jié)束。for(inti=1;i<4;i++){Console.WriteLine($"第{i}次循環(huán)");}Console.WriteLine("循環(huán)結(jié)束");////示例:4.4循環(huán)語句for循環(huán)的特點(diǎn):在for循環(huán)中,初始化、條件檢查和迭代通常在循環(huán)頭部一起完成,因此循環(huán)的結(jié)構(gòu)更加緊湊while/do循環(huán)更靈活,因?yàn)榭梢栽谌魏蔚胤綀?zhí)行初始化和迭代,甚至在循環(huán)體內(nèi)部當(dāng)需要固定次數(shù)的迭代或者需要更緊湊的循環(huán)結(jié)構(gòu)時(shí),通常使用for循環(huán)思考:前面的數(shù)字炸彈游戲可以用for循環(huán)改寫嗎?請?jiān)谡n下嘗試。for循環(huán)4.4循環(huán)語句for循環(huán)中變量的作用域:與C/C++不同,任何聲明在初始化表達(dá)式中的變量只在該for語句的內(nèi)部可見。for循環(huán)4.4循環(huán)語句for循環(huán)中初始化和迭代表達(dá)式中的多表達(dá)式:初始化表達(dá)式和選代表達(dá)式都可以包含多個(gè)表達(dá)式,多個(gè)表達(dá)式之間用逗號(hào)隔開。for(inti=1,j=10;i<4;i++,j+=10){Console.WriteLine($"第{i}次循環(huán):i={i},j={j}");}Console.WriteLine("循環(huán)結(jié)束");運(yùn)行結(jié)果:for循環(huán)4.4循環(huán)語句foreach循環(huán)foreach循環(huán):循環(huán)用于遍歷數(shù)組、集合和其他可枚舉類型的元素。foreach(元素類型迭代變量in數(shù)組/集合)

執(zhí)行語句//沒有測試表達(dá)式//元素全部遍歷時(shí)結(jié)束循環(huán)流程:連續(xù)訪問數(shù)組或集合中的每一個(gè)元素,循環(huán)次數(shù)取決于元素的個(gè)數(shù)。int[]array=newint[]{10,20,30,40,50};Console.WriteLine("數(shù)組示例:");foreach(intnuminarray){Console.WriteLine(num);}List<string>list=newList<string>{"apple","banana","orange"};Console.WriteLine("\n集合示例(List):");foreach(stringfruitinlist){Console.WriteLine(fruit);}示例:讀取數(shù)組/集合的元素并打印4.4循環(huán)語句foreach循環(huán)的重點(diǎn):迭代變量是臨時(shí)的,類型與數(shù)組/集合中的元素類型相同(迭代變量相繼表示數(shù)組/集合中的每一個(gè)元素)可以使用var關(guān)鍵字,讓編譯器自動(dòng)判斷元素類型執(zhí)行語句是要為數(shù)組每一個(gè)元素執(zhí)行一次的單條語句或語句塊迭代變量是只讀的,可以讀取元素的值,或根據(jù)元素的值進(jìn)行某些操作,但不能直接修改元素的值foreach循環(huán)4.4循環(huán)語句小結(jié)循環(huán)語句小結(jié):循環(huán)(迭代)語句:重復(fù)執(zhí)行一個(gè)代碼片段。循環(huán)語句包括:while:在頂部執(zhí)行測試表達(dá)式do:在底部執(zhí)行測試表達(dá)式for:在頂端執(zhí)行測試表達(dá)式foreach:遍歷數(shù)組、集合中的所有元素while(測試表達(dá)式)執(zhí)行語句////do

執(zhí)行語句while(測試表達(dá)式)//////測試表達(dá)式為false時(shí)結(jié)束循環(huán)for(初始化表達(dá)式;測試表達(dá)式;迭代表達(dá)式)

執(zhí)行語句////測試表達(dá)式為false時(shí)結(jié)束循環(huán)foreach(元素類型迭代變量in數(shù)組/集合)

執(zhí)行語句//沒有測試表達(dá)式//元素全部遍歷時(shí)結(jié)束循環(huán)說明:條件執(zhí)行和循環(huán)結(jié)構(gòu)(除了foreach)需要一個(gè)測試表達(dá)式或條件以決定程序應(yīng)當(dāng)在哪里繼續(xù)執(zhí)行。與C和C++不同,測試表達(dá)式必須返回bool型值。數(shù)字在C#中沒有布爾意義。4.5跳轉(zhuǎn)語句跳轉(zhuǎn)語句break語句:使執(zhí)行跳出最內(nèi)層封裝語句(innermostenclosingstatement)。常用于switch語句forforeachwhiledo改變執(zhí)行到指定語句:break、continue、return、goto、throw*intx=0;while(true){x++;if(x>=3)break;}////無限循環(huán)/死循環(huán)////退出循環(huán)4.5跳轉(zhuǎn)語句跳轉(zhuǎn)語句classProgram{staticvoidMain(string[]args){

for(inti=0;i<3;i++){

Console.WriteLine("外層循環(huán):"+i);for(intj=0;j<3;j++){Console.WriteLine("內(nèi)層循環(huán):"+j);if(j==1){Console.WriteLine("跳出內(nèi)層循環(huán)");break;}}

}}}////////外層循環(huán)////內(nèi)層循環(huán)//模擬某種條件,當(dāng)j等于1時(shí)跳出內(nèi)層循環(huán)//跳出內(nèi)層循環(huán)例7:使用break語句跳出循環(huán)嵌套的內(nèi)層循環(huán)。4.5跳轉(zhuǎn)語句跳轉(zhuǎn)語句continue語句:使執(zhí)行跳轉(zhuǎn)到最內(nèi)層封裝語句的頂部。常用于forforeachwhiledofor(intx=0;x<5;x++){if(x<3)continue;Console.WriteLine(x);}////////輸出3和4示例:應(yīng)用:使用foreach語句遍歷學(xué)生成績計(jì)算加權(quán)GPA時(shí),跳過選修課。4.5跳轉(zhuǎn)語句跳轉(zhuǎn)語句goto語句:與標(biāo)簽語句配合使用,強(qiáng)制程序跳轉(zhuǎn)到指定的標(biāo)簽語句處。{

標(biāo)簽:執(zhí)行語句…goto標(biāo)簽;}////////示例:classProgram{staticvoidMain(string[]args){intcount=0;

start:Console.WriteLine("Count:"+count);count++;if(count<5)

gotostart;Console.WriteLine("Endofprogram.");}}//程序會(huì)輸出從0到4的數(shù)字,然后輸出"Endofprogram."。在start標(biāo)簽處,使用goto語句將程序跳轉(zhuǎn)回循環(huán)的起始位置,直到count達(dá)到5。//////4.5跳轉(zhuǎn)語句跳轉(zhuǎn)語句goto語句:與標(biāo)簽語句配合使用,強(qiáng)制程序跳轉(zhuǎn)到指定的標(biāo)簽語句處。標(biāo)簽語句的注意事項(xiàng):標(biāo)簽不能與關(guān)鍵字或相同作用域的其他標(biāo)簽重名;標(biāo)簽語句的作用域:聲明所在的塊,及其嵌套的內(nèi)部塊。goto語句的注意事項(xiàng):goto語句必須在標(biāo)簽語句的作用域內(nèi)——goto語句可以跳轉(zhuǎn)所在塊和跳出嵌套它的塊,但不能跳入嵌套在其所在塊內(nèi)部的塊。goto語句不是現(xiàn)代編程語言的推薦語法,因?yàn)樗鼤?huì)導(dǎo)致弱結(jié)構(gòu)化的、難以調(diào)試和維護(hù)的代碼。4.5跳轉(zhuǎn)語句跳轉(zhuǎn)語句return語句:將控制返回到調(diào)用它的地方,并返回一個(gè)值。示例:publicintAdd(inta,intb){intsum=a+b;returnsum;//返回計(jì)算的結(jié)果}////////用在控制流中時(shí):退出當(dāng)前方法。publicvoidPrintMessage(stringmessage){if(string.IsNullOrEmpty(message)){Console.WriteLine("Messageisempty.");return;

}Console.WriteLine("Message:"+message);}////////提前結(jié)束方法,不執(zhí)行后續(xù)的代碼4.6

using語句using語句using語句:在C#中,using語句用于管理非托管資源的自動(dòng)釋放(它不同于using指令,如usingsystem),尤其是在使用IDisposable接口的對(duì)象時(shí)。using語句可以自動(dòng)釋放資源,而不需要手動(dòng)調(diào)用Dispose方法。這樣可以確保資源得到及時(shí)釋放,避免資源泄露和內(nèi)存溢出。非托管資源指的是不受.NET管理的對(duì)象,比如外部庫、打開的文件、數(shù)據(jù)庫鏈接、網(wǎng)絡(luò)鏈接等。IDisposable接口是.NET框架提供的一個(gè)接口,用于在對(duì)象不再需要時(shí)釋放資源。它定義了一個(gè)Dispose方法,該方法允許對(duì)象釋放非托管資源、取消對(duì)其他對(duì)象的引用以及執(zhí)行其他清理操作。通過實(shí)現(xiàn)IDisposable接口,對(duì)象可以在不再需要時(shí)手動(dòng)釋放它所占用的資源,而不必等待.NET垃圾回收器自動(dòng)釋放。通常,實(shí)現(xiàn)IDisposable接口的對(duì)象應(yīng)該在其Dispose方法中釋放非托管資源,并在使用完對(duì)象后顯式調(diào)用Dispose方法來釋放資源。另外,為了確保資源能夠及時(shí)釋放,可以使用using語句來自動(dòng)調(diào)用Dispose方法。4.7選擇、循環(huán)結(jié)構(gòu)的嵌套語句嵌套嵌套語句:在編程中,選擇結(jié)構(gòu)(例如:if、else、switch)和循環(huán)結(jié)構(gòu)(例如:for、while、do-while)可以相互嵌套,即在一個(gè)結(jié)構(gòu)的代碼塊內(nèi)包含另一個(gè)結(jié)構(gòu)。這種嵌套可以幫助我們實(shí)現(xiàn)更復(fù)雜的邏輯和控制流程。if(condition1){if(condition2){//嵌套的語句塊

}}for(inti=0;i<5;i++){for(intj=0;j<3;j++){//嵌套的語句塊

}}switch(variable){case1://語句塊

break;case2://嵌套的switch-case塊

switch(anotherVariable){case1://語句塊

break;case2://語句塊

break;}break;}示例:4.8方法的遞歸調(diào)用publicclassProgram{//階乘的遞歸實(shí)現(xiàn)

publicstaticintFactorial(intn){//遞歸出口:當(dāng)n為1時(shí),返回1if(n==1)return1;//遞歸調(diào)用:n的階乘等于n乘以(n-1)的階乘

returnn*Factorial(n-1);}publicstaticvoidMain(){intnumber=5;intresult=Factorial(number);Console.WriteLine($"階乘{(lán)number}!={result}");}}實(shí)例:階乘的遞歸實(shí)現(xiàn)遞歸調(diào)用遞歸調(diào)用是指在方法的方法體中調(diào)用自身的過程。遞歸是一種常用的編程技巧,特別適用于解決問題具有遞歸性質(zhì)的情況,例如計(jì)算階乘、斐波那契數(shù)列等。在使用遞歸時(shí),需要定義一個(gè)遞歸出口,以防止無限遞歸,否則可能導(dǎo)致棧溢出。雖然遞歸是一種強(qiáng)大的編程技巧,但在使用時(shí)要小心遞歸深度過大導(dǎo)致的棧溢出問題。在實(shí)際應(yīng)用中,可以根據(jù)問題的規(guī)模和性能要求,選擇適合的遞歸深度或使用非遞歸方法來解決問題。4.9C#中常用的數(shù)值操作類方法說明Math.Abs(x)返回x的絕對(duì)值Math.Sqrt(x)返回x的平方根Math.Pow(x,y)返回x的y次冪Math.Exp(x)返回e(自然對(duì)數(shù)的底數(shù))的x次冪Math.Log(x)返回x的自然對(duì)數(shù)Math.Log10(x)返回x的以10為底的對(duì)數(shù)Math.Sin(x)返回x的正弦值(x以弧度表示)Math.Cos(x)返回x的余弦值(x以弧度表示)Math.Tan(x)返回x的正切值(x以弧度表示)Math.DegreesToRadians(x)將角度轉(zhuǎn)換為弧度Math.RadiansToDegrees(x)將弧度轉(zhuǎn)換為角度Math.PI常量π的近似值,約為3.141592653589793Math類Math類是一個(gè)靜態(tài)類,包含許多用于數(shù)學(xué)計(jì)算的靜態(tài)方法和常量。它位于System命名空間中,因此在使用Math類之前,需要添加以下using聲明:

usingSystem;Math類提供了各種常用的數(shù)學(xué)函數(shù)和操作,讓您能夠執(zhí)行數(shù)學(xué)運(yùn)算,如絕對(duì)值、平方根、三角函數(shù)、指數(shù)函數(shù)等等。以下是一些常見的Math類方法和常量:3.9C#中常用的數(shù)值操作類2.Random類方法說明Random()默認(rèn)構(gòu)造函數(shù),使用系統(tǒng)時(shí)鐘作為種子生成一個(gè)新的Random實(shí)例。Randomrandom=newRandom();Random(intseed)使用指定的種子生成一個(gè)新的Random實(shí)例,種子是一個(gè)整數(shù),相同種子將生成相同的隨機(jī)數(shù)序列。Next()返回一個(gè)非負(fù)的隨機(jī)整數(shù)。Next(intmaxValue)返回一個(gè)介于0(包含)和maxValue(不包含)之間的隨機(jī)整數(shù)。Next(intminValue,intmaxValue)返回一個(gè)介于minValue(包含)和maxValue(不包含)之間的隨機(jī)整數(shù)。NextDouble()返回一個(gè)介于0.0(包含)和1.0(不包含)之間的隨機(jī)雙精度浮點(diǎn)數(shù)。Random類隨機(jī)數(shù)的生成是通過System.Random類來實(shí)現(xiàn)的。Random類允許您生成偽隨機(jī)數(shù),這些數(shù)看起來是隨機(jī)的,但實(shí)際上是通過算法計(jì)算得到的。為了使用Random類,需要在代碼文件的開頭添加以下using聲明:

usingSystem;

以下是一些常用的Random類方法://生成一個(gè)隨機(jī)數(shù)Randomrandom=newRandom();inttargetNumber=random.Next(1,101);//生成1到100之間的隨機(jī)數(shù)4.10

小結(jié)及作業(yè)作業(yè)作業(yè)(截止日期:2024年4月14日):個(gè)人:課本第4章習(xí)題第一、三、四(1和3)題,拍照提交到暢課。小組:完成我們課上講的數(shù)字炸彈小游戲。上機(jī)(暫定:2024年4月1日,地點(diǎn):機(jī)電樓D座319):個(gè)人:課本第4章習(xí)題第二題,第11章實(shí)驗(yàn)一,其中第11章的實(shí)驗(yàn)一的代碼打包提交到暢課。習(xí)題四、程序設(shè)計(jì)題3.

關(guān)于Π/4的近似計(jì)算,利用萊布尼茨公式:Π/4=1-1/3+1/5-1/7+…直到最后一項(xiàng)小于10^-6,編程求圓周率Π的值classProgram{staticvoidMain(string[]args){doublepi=0;doublesum=0;intsign=1;doublen=1;while(Math.Abs(1/n)>=1e-6){sum+=sign/n;n+=2;sign=-sign;}pi=sum*4;Console.WriteLine($"π的近似值為:{pi:f4}");}}習(xí)題四、程序設(shè)計(jì)題2.

編寫程序?qū)崿F(xiàn)對(duì)用戶輸入的字符進(jìn)行連續(xù)讀取,若輸入的字符是阿拉伯?dāng)?shù)字則輸出,直到用戶連續(xù)輸入的三個(gè)字符組成為END(大小寫任意)時(shí)結(jié)束。例如,用戶分別輸入字符:124ty5ENd,則結(jié)果輸出1245.習(xí)題四、程序設(shè)計(jì)題2.

編寫程序?qū)崿F(xiàn)對(duì)用戶輸入的字符進(jìn)行連續(xù)讀取,若輸入的字符是阿拉伯?dāng)?shù)字則輸出,直到用戶連續(xù)輸入的三個(gè)字符組成為END(大小寫任意)時(shí)結(jié)束。例如,用戶分別輸入字符:124ty5ENd,則結(jié)果輸出1245.classProgram{staticvoidMain(string[]args){stringinput="";Console.WriteLine("請輸入字符(連續(xù)輸入e、n、d結(jié)束):");while(true){charc=Console.ReadKey().KeyChar;input+=c;if(input.Length>=3&&input.Substring(input.Length-3).ToUpper()=="END"){break;}if(char.IsDigit(c)){Console.Write(c+"");}}Console.WriteLine("\n程序結(jié)束。");}}習(xí)題四、程序設(shè)計(jì)題1.

編寫程序,求區(qū)間[1,100]中所有能被3整除但不能被7整除的那些整數(shù)之和。namespaceConsoleApp1{internalclassProgram{staticvoidMain(string[]args){intsum=0;for(inti=1;i<=100;i++){if(i%3==0&&i%7!=0){sum=sum+i;}}Console.WriteLine("區(qū)間[1,100]中所有能被3整除但不能被7整除的整數(shù)之和為:"+sum);}}}////////習(xí)題三、閱讀程序?qū)戇\(yùn)行結(jié)果3.

對(duì)于如下程序,運(yùn)行結(jié)果是:___________。namespacech3_while{internalclassProgram{staticintc=1;staticvoidMain(string[]args){longs;s=fun1(3)+fun2(3);Console.WriteLine("s="+s);Console.WriteLine();

}staticlongfun1(intp){longs=1;inti=1;for(;i<=p;i++)s=s*2;returns;}staticlongfun2(intq){longs=0;inti=1;for(;i<q;i++)s=s+3;returns;}}}s=14fun1(3)=?fun2(3)=?習(xí)題三、閱讀程序?qū)戇\(yùn)行結(jié)果2.

對(duì)于如下程序,運(yùn)行結(jié)果是:___________。namespacech3_while{internalclassProgram{static

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論