版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章程序流程和異常處理(2)順序結(jié)構(gòu)選擇結(jié)構(gòu):if語句、switch語句循環(huán)結(jié)構(gòu):for語句、while語句、do...while語句和foreach語句跳轉(zhuǎn)語句:goto、break、continue、return、throwC#異常處理機制創(chuàng)建和引發(fā)異常第4章程序流程和異常處理(2)順序結(jié)構(gòu)現(xiàn)實生活中的循環(huán)銀行的ATM需要不停地為不同的客戶服務(wù)我們每天的生活和學習需要重復(fù)生活中充滿了循環(huán)食堂宿舍教室ATM業(yè)務(wù)ATM業(yè)務(wù)ATM業(yè)務(wù)ATM業(yè)務(wù)ATM業(yè)務(wù)食堂食堂宿舍食堂宿舍食堂教室宿舍食堂現(xiàn)實生活中的循環(huán)銀行的ATM需要不停地為不同的客戶服務(wù)我們每
在編寫程序過程中,往往出現(xiàn)相同類型操作需要重復(fù)出現(xiàn),如實現(xiàn)1+2+…+100,則需要做99次加法,這類問題使用循環(huán)語句解決。即循環(huán)語句用于實現(xiàn)語句塊的重復(fù)執(zhí)行。C#中提供了四種不同的循環(huán)機制:for循環(huán)while循環(huán)do…while循環(huán)foreach循環(huán)foreach循環(huán)常用在遍歷數(shù)組時用到。在編寫程序過程中,往往出現(xiàn)相同類型操作需for循環(huán)語句
for循環(huán)常常用于已知循環(huán)次數(shù)的情況,使用該循環(huán)時,測試是否滿足某個條件,如果滿足條件,則進入下一次循環(huán),否則,退出該循環(huán)。格式:for(表達式1;布爾表達式2;表達式3)
單語句或{循環(huán)語句序列}三元運算表達式4.3.1for循環(huán)for循環(huán)語句for(表達式1;布爾表達式2;表達式3)功能:truefalse語句布爾表達式21計算表達式1;2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;如果表達式2為false,則退出循環(huán)表達式1表達式31計算表達式1;2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;1計算表達式1;如果表達式2為false,則退出循環(huán)2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;1計算表達式1;如果表達式2為false,則退出循環(huán)2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;1計算表達式1;如果表達式2為false,則退出循環(huán)2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;1計算表達式1;表達式1for(表達式1;布爾表達式2;表達式3)
語句表達式1功能:truefalse語句布爾表達式21計算表達式1;2
for循環(huán)語句的使用【例子】計算1+2+3+…100。使用for語句實現(xiàn)。分析1:定義sum,連續(xù)寫sum=sum+n;分析2:該問題屬于重復(fù)執(zhí)行加法的問題,并且參與運算的兩個操作數(shù)不斷的按規(guī)律增加。該類問題可以通過循環(huán)進行解決。for循環(huán)語句的使用例:求1+2+3+...+100的值sum=sum+i;sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);寫完這100條語句,就算出來了你想累死我啊!sum=sum+i;sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);sum=sum+i;sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);sum=sum+i;sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);寫完這100條語句,就算出來了你想累死我啊!累加器寫完這100條語句,就算出來了例:求1+2+3+...+100的值sum=sum+例:求1+2+3+...+100的值sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);i:1i:2i:3i:100i:101sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);i:1sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);例:求1+2+3+...+100的值sum=0;isum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);i:1i:2i:3i:100i:101sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);循環(huán)條件:i<=100這兩條語句需要循環(huán)執(zhí)行sum=0;i=1;i:1i:2i:3i:100計算1+2+…+100的for循環(huán)流程intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);運行流程分析intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);計算1+2+…+100的for循環(huán)流程intsum=0在窗體設(shè)計圖上,雙擊按鈕button1編寫【計算】按鈕的Click(單擊)事件代碼為:privatevoidbutton1_Click(objectsender,System.EventArgse){intsum,k;sum=0;for(k=1;k<=100;k=k+1){sum=sum+k;}label1.Text="從1加到100值為"+sum.ToString();}在窗體設(shè)計圖上,雙擊按鈕button1編寫【計算】按程序的運行結(jié)果如圖所示的左圖,單擊“計算”按鈕,將在標簽上顯示運行結(jié)果。
程序運行結(jié)果程序的運行結(jié)果如圖所示的左圖,單擊“計算【例子】計算n!,假設(shè)n=10。分析:該例實現(xiàn)階乘的運算,可以使用改變乘數(shù)的值進行實現(xiàn),使用循環(huán)可以方便的實現(xiàn)該類問題。程序的運行結(jié)果如圖所示。計算n!n!=n*(n-1)*…*2*1【例子】計算n!,假設(shè)n=10。計算n!n!=n*(n-1)privatevoidbutton1_Click(objectsender,System.EventArgse){intsum,k;sum=1;for(k=1;k<=10;k++){sum=sum*k;}textBox1.Text=sum.ToString();}編寫【計算】按鈕的Click(單擊)事件代碼為:privatevoidbutton1_Click(obj練習:使用for語句,編程輸出1~10的每個整數(shù)的平方staticvoidMain(string[]args){ints;for(inti=1;i<=10;i++){s=i*i;Console.Write("{0}\t",s);}}練習:使用for語句,編程輸出1~10的每個整數(shù)的平方stfor語句的常見用法(1)inti;for(i=0;i<100;i++){
Console.WriteLine(i);}01234......9899運行結(jié)果:賦初值01234......9899循環(huán)體被運行100次,循環(huán)變量依次為0~99改變循環(huán)變量i:循環(huán)變量循環(huán)條件for語句的常見用法(1)inti;0運行結(jié)果:賦初值0for語句的常見用法(2)inti;for(i=1;i<=100;i++){
Console.WriteLine(i);}12345......99100運行結(jié)果:循環(huán)體也被運行100次,循環(huán)變量依次為1~100inti;for(i=1;i<=100;i++){
Console.WriteLine(i);}12345......99100inti;for(i=1;i<=100;i++){
Console.WriteLine(i);}12345......99100for語句的常見用法(2)inti;1運行結(jié)果:循環(huán)體也for語句的簡化:for(i=1;i<=100;i++)Console.WriteLine(i);可以為空可以為空可以為空,認為是trueinti=0;形成死循環(huán)分號不能省略哦!for語句的簡化:for(i=1;i<=100;i在for循環(huán)中定義變量for(inti=1;i<=100;i++)sum=sum+i;在for中定義的變量只在該循環(huán)語句內(nèi)有效,在循環(huán)語句外不能訪問可以在這里定義變量for(inti=1;i<=100;i++)sum=sum+i;在for中定義的變量只在該循環(huán)語句內(nèi)有效,在循環(huán)語句外不能訪問for(inti=1;i<=100;i++)sum=sum+i;在for循環(huán)中定義變量for(inti=1;i<=100可以用于不知道循環(huán)次數(shù)的情況;用于在循環(huán)時判斷是否滿足某個條件。while循環(huán)語句的格式為:
while(布爾表達式)
單語句或者語句塊
布爾條件表達式是每次循環(huán)開始前進行判斷的條件,當條件表達式的值為真時,執(zhí)行循環(huán);否則,退出循環(huán)。該語句結(jié)構(gòu)的流程圖如圖所示。
4.3.2while循環(huán)可以用于不知道循環(huán)次數(shù)的情況;用于在循環(huán)時判斷是否滿足某個條while語句while(布爾表達式)
語句格式:功能:1如果布爾表達式為false,直接跳出循環(huán);2如果為true,則執(zhí)行語句,并繼續(xù)第1步布爾表達式?語句falsetruewhile語句while(布爾表達式)格式:功能:布爾表while循環(huán)語句的使用【例子】設(shè)有一張厚為xmm,面積足夠大的紙,將它不斷地對折。試問對折多少次后,其厚度可達珠穆朗瑪峰的高度(8844.43m)。設(shè)對折后紙的厚度為hmm,計數(shù)器為n。在沒有對折時,紙厚為xmm,每對折一次,其厚度是上一次的2倍,在未到達8844.43m時,重復(fù)對折。在程序中,紙的厚度就是對折后紙的厚度,所以用一個變量h。while循環(huán)語句的使用建立應(yīng)用程序用戶界面與設(shè)置對象屬性,如圖所示。用戶界面及程序運行結(jié)果建立應(yīng)用程序用戶界面與設(shè)置對象屬性,如圖所示。用戶界面及程序privatevoidbutton1_Click(objectsender,System.EventArgse){intn=0;floath;h=float.Parse(textBox1.Text);while(h<8844430)//未到達8844.43m時,重復(fù)對折
{n=n+1;//計數(shù)器為n對折次數(shù)
h=2*h;//每對折一次,其厚度是上一次的2倍
}textBox2.Text=n.ToString();}privatevoidbutton1_Click(obj求1+2+3+...+100的值
改成while循環(huán):sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;cout<<sum<<endl;循環(huán)條件循環(huán)體語句5050運行結(jié)果:505050505050求1+2+3+...+100的值
改成while循環(huán):while運行流程分析i=1;while(i<=100){sum=sum+i;i++;}1<=100100<=100101<=100truetruefalse......1<=100true100<=1001<=100false100<=1001<=100101<=100100<=1001<=100while運行流程分析i=1;1<=100100<=100在while循環(huán)的循環(huán)體中一般應(yīng)該有使循環(huán)條件不成立的語句,否則會形成“死循環(huán)”;i=1;while(i<=100){sum=sum+i;i=i+1;}這個語句讓循環(huán)條件可以不成立死循環(huán):不會自動終止的循環(huán)i=1;while(i<=100){sum=sum+i;i=i+1;}死循環(huán):不會自動終止的循環(huán)i=1;while(i<=100){sum=sum+i;i=i+1;}在while循環(huán)的循環(huán)體中一般應(yīng)該有使循環(huán)條件不成立的語句,i=1;while(i<=100){sum=sum+i;//i=i+1;}死循環(huán)去掉該語句,形成死循環(huán)運行時,死循環(huán)占用大量CPU時間i=1;while(i<=100){sum=sum+i;//i=i+1;}死循環(huán)i=1;while(i<=100){sum=sum+i;//i=i+1;}死循環(huán)i=1;死循環(huán)去掉該語句,形成死循環(huán)運行時,死循環(huán)占用大量Cwhile(true)可以形成死循環(huán)while(true){Console.WriteLine("Hello");}HelloHelloHelloHelloHelloHelloHello條件恒為truewhile(true){Console.WriteLine("Hello");}HelloHelloHelloHelloHelloHelloHellowhile(true){Console.WriteLine("Hello");}while(true)Hello條件恒為truewhil計算1+2+…+100
for循環(huán)和while循環(huán)intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);sum=0;i=1;while(i<=100){sum=sum+i;i=i+1;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);sum=0;i=1;while(i<=100){sum=sum+i;i=i+1;}Console.WriteLine(sum);for循環(huán)與while循環(huán),功能完全相同(for可以轉(zhuǎn)化為while,while也可以轉(zhuǎn)為for)intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);sum=0;i=1;while(i<=100){sum=sum+i;i=i+1;}Console.WriteLine(sum);計算1+2+…+100
for循環(huán)和while循環(huán)int例:求一個整數(shù)x所有位數(shù)之和sum=0;while(x>0){sum+=x%10;x/=10;}Console.WriteLine(sum);算法思路:x%10可以得到個位數(shù)字,x=x/10可以得到去掉個位數(shù)字后剩下的數(shù)字。重復(fù)這個過程直到x變?yōu)?,可以依次得到所有數(shù)字學習編程語言的同時,也要學會用“計算機的思維方式”,掌握計算機解決問題的方法:算法sum=0;while(x>0){sum+=x%10;x/=10;}Console.WriteLine(sum);算法思路:x%10可以得到個位數(shù)字,x=x/10可以得到去掉個位數(shù)字后剩下的數(shù)字。重復(fù)這個過程直到x變?yōu)?,可以依次得到所有數(shù)字sum=0;while(x>0){sum+=x%10;x/=10;}Console.WriteLine(sum);算法思路:x%10可以得到個位數(shù)字,x=x/10可以得到去掉個位數(shù)字后剩下的數(shù)字。重復(fù)這個過程直到x變?yōu)?,可以依次得到所有數(shù)字例:求一個整數(shù)x所有位數(shù)之和sum=0;算法思路:x%do…while循環(huán)非常類似于while循環(huán)。差別在于while循環(huán)的測試條件在每一次循環(huán)開始時執(zhí)行,而do…while循環(huán)的測試條件在每一次循環(huán)體結(jié)束時進行判斷。同樣的,do…while可以解決一些循環(huán)問題,但使用的頻率較少。do…while語法的一般格式為:do
語句while(布爾表達式);4.3.3do…while循環(huán)do…while循環(huán)非常類似于while循環(huán)。4.3.3ddo...while語句do
語句while(布爾表達式);功能:truefalse語句表達式?1執(zhí)行循環(huán)體語句;2計算表達式,如果為true,并繼續(xù)第1步;
如果為false,則退出循環(huán)1執(zhí)行循環(huán)體語句;2計算表達式,如果為true,并繼續(xù)第1步;
如果為false,則退出循環(huán)1執(zhí)行循環(huán)體語句;2計算表達式,如果為true,并繼續(xù)第1步;do
語句while(布爾表達式);
如果為false,則退出循環(huán)1執(zhí)行循環(huán)體語句;2計算表達式,如果為true,并繼續(xù)第1步;do...while語句do功能:truefalse語do…while的使用【例子】使用do…while語句實現(xiàn)1+2+3+…100。inti=1,sum=0;do{sum=sum+i;i=i+1;}while(i<=100);Console.WriteLine(sum);;是do...while語句的一部分,不要遺忘5050運行結(jié)果:inti=1,sum=0;do{sum=sum+i;i=i+1;}while(i<=100);Console.WriteLine(sum);5050inti=1,sum=0;do{sum=sum+i;i=i+1;}while(i<=100);Console.WriteLine(sum);do…while的使用inti=1,sum=0;;是dodo-while的循環(huán)體至少被執(zhí)行一次inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;do{Console.WriteLine(i);i++;}while(i<10);運行結(jié)果:20運行結(jié)果:inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;do{Console.WriteLine(i);i++;}while(i<10);inti=20;while(i<10){Console.WriteLine(i);i++;}20inti=20;do{Console.WriteLine(i);i++;}while(i<10);inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;do{Console.WriteLine(i);i++;}while(i<10);inti=20;while(i<10){Console.WriteLine(i);i++;}do-while的循環(huán)體至少被執(zhí)行一次inti=20;i4.3.4foreach循環(huán)foreach語句用于循環(huán)訪問數(shù)組或集合以獲取所需信息。當為數(shù)組或集合中的所有元素完成迭代后,控制傳遞給foreach塊之后的下一個語句
foreach(類型名稱變量名稱in數(shù)組或集合名稱){
循環(huán)體語句序列;}【例4.17】使用foreach顯示整數(shù)數(shù)組的內(nèi)容4.3.4foreach循環(huán)foreach語句用于循環(huán)訪問當一個循環(huán)(稱為“外循環(huán)”)的循環(huán)語句序列內(nèi)包含另一個循環(huán)(稱為“內(nèi)循環(huán)”),稱為循環(huán)的嵌套,這種語句結(jié)構(gòu)稱為多重循環(huán)結(jié)構(gòu)。內(nèi)循環(huán)中還以包含循環(huán),形成多層循環(huán)(循環(huán)嵌套的層數(shù)理論上無限制)。
三種循環(huán)(while循環(huán)、do…while循環(huán)、for循環(huán))可以互相嵌套。在多重循環(huán)中,需要注意的是循環(huán)語句所在循環(huán)的層數(shù)。4.3.5循環(huán)的嵌套當一個循環(huán)(稱為“外循環(huán)”)的循環(huán)語句序列內(nèi)包含另一個循循環(huán)的嵌套循環(huán)體內(nèi)的語句也可以是任意循環(huán)語句inti;for(i=1;i<=100;i++){ j=0;while(j!=4)Console.WriteLine(j++);}內(nèi)循環(huán)外循環(huán)循環(huán)的嵌套循環(huán)體內(nèi)的語句也可以是任意循環(huán)語句inti;內(nèi)【例子】編程實現(xiàn)九九乘法表。分析:本例中實現(xiàn)每一個一位數(shù)i顯示從1乘到i,對于i的取值要從1取到9,所以可以使用兩重循環(huán)實現(xiàn),程序設(shè)計如圖所示。九九乘法表【例子】編程實現(xiàn)九九乘法表。九九乘法表本例的界面設(shè)計如圖,使用label1控件實現(xiàn)乘法表的顯示。本例使用兩重循環(huán)實現(xiàn),其中外層循環(huán)實現(xiàn)乘法表中第二乘數(shù)i取值范圍為1到9,內(nèi)層循環(huán)在外層循環(huán)的基礎(chǔ)上計算第一個乘數(shù)k的取值范圍為1到i,其乘積以及表達式在label控件中顯示。運行結(jié)果如圖所示?!揪啪懦朔ū怼堪粹o的Click(單擊)事件代碼為:本例的界面設(shè)計如圖,使用label1控件實現(xiàn)乘法表的顯示。本privatevoidbutton1_Click(objectsender,System.EventArgse){label1.Text="";strings="";intsum;for(inti=1;i<10;i=i+1){s="";for(intk=1;k<=i;k=k+1){sum=k*i;s=s+k.ToString()+"×"+i.ToString()+"="+sum.ToString()+";";}label1.Text+=s+"\n";//顯示并換行
}}privatevoidbutton1_Click(obj例:利用for循環(huán)的嵌套,求1!+2!+3!+…+10!的和N!=1*2*3*…*N,稱為N的階乘例:4!=1*2*3*4=24計算N的階乘的算法:mul=1;for(i=1;i<=N;i++)mul*=i;//循環(huán)結(jié)束后,mul保存N!N!=1*2*3*…*N,稱為N的階乘例:4!=1*2*3*4=24計算N的階乘的算法:mul=1;for(i=1;i<=N;i++)mul*=i;//循環(huán)結(jié)束后,mul保存N!例:利用for循環(huán)的嵌套,求1!+2!+3!+…+10!的staticvoidMain(string[]args){longs=0;longm;for(inti=1;i<=10;i++){m=1;for(intj=1;j<=i;j++)m*=j;s=s+m;//累加到變量s}Console.WriteLine("1!+2!+3!+...+10!={0}",s);}避免內(nèi)外循環(huán)的變量沖突避免內(nèi)外循環(huán)的變量沖突計算i的階乘到變量mstaticvoidMain(string[]args4.4跳轉(zhuǎn)語句使用跳轉(zhuǎn)語句執(zhí)行分支,可以使程序執(zhí)行跳轉(zhuǎn)到程序中其它部分。C#中提供四種轉(zhuǎn)移語句:
GotoBreakContinuereturn4.4跳轉(zhuǎn)語句使用跳轉(zhuǎn)語句執(zhí)行分支,可以使程序執(zhí)行跳轉(zhuǎn)到程。
goto語句可以將程序控制直接轉(zhuǎn)移給標簽制定的語句。但由于goto語句改變了程序的正常流程,使得程序特別容易出錯,所以盡量不要用。而且,用goto語句實現(xiàn)的循環(huán)完全可以用循環(huán)語句實現(xiàn),因此,goto語句很少使用。4.4.1goto語句。4.4.1goto語句goto語句:無條件轉(zhuǎn)移語句goto
標號.......標號:........功能:控制流程直接轉(zhuǎn)到指定標號處標號可以在goto之前或之后。但必須在同一個方法內(nèi)goto
標號.......標號:........控制流程直接轉(zhuǎn)到指定標號處標號可以在goto之前或之后。但必須在同一個方法內(nèi)goto
標號.......標號:........控制流程直接轉(zhuǎn)到指定標號處goto語句:無條件轉(zhuǎn)移語句goto標號功能:控制流程直例:使用if和goto計算1+2+...+100usingSystem;classProgram{staticvoidMain(string[]args){inti=1,sum=0;Loop:sum+=i;i++;if(i<=100)gotoLoop;Console.WriteLine("1+2+3+...+100={0}",sum);}}Loop是自定義的標號(屬于標識符)例:使用if和goto計算1+2+...+100using例:找到兩個數(shù),乘積為45,并且兩個數(shù)都小于10,輸出這兩個數(shù)staticvoidMain(string[]args){inti=0,j=0;for(i=1;i<10;i++)for(j=1;j<10;j++)if(i*j==45)gotoend;end:Console.WriteLine("{0}*{1}={2}",i,j,i*j);}退出多重循環(huán),是C#保留goto語句的最大價值只能從循環(huán)內(nèi)層往外層跳轉(zhuǎn),不能從外層往內(nèi)層跳轉(zhuǎn)退出多重循環(huán),是C#保留goto語句的最大價值只能從循環(huán)內(nèi)層往外層跳轉(zhuǎn),不能從外層往內(nèi)層跳轉(zhuǎn)例:找到兩個數(shù),乘積為45,并且兩個數(shù)都小于10,輸出這兩個使用goto的注意事項:經(jīng)驗證明,使用goto語句實現(xiàn)循環(huán),破環(huán)了程序的可讀性?,F(xiàn)代程序設(shè)計中,不提倡使用goto來完成循環(huán)。保留goto語句,應(yīng)該僅僅用于跳出多重循環(huán)這個功能。使用goto的注意事項:經(jīng)驗證明,使用goto語句實現(xiàn)循環(huán),用于switch語句和循環(huán)語句(while、do-while、for、foreach)語句中,用于跳出所在的switch或者循環(huán)語句break;例:break跳出for語句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");12345Finished輸出結(jié)果:4.4.2break語句用于switch語句和循環(huán)語句(while、do-while、for、foreach)語句中,用于跳出所在的switch或者循環(huán)語句break;例:break跳出for語句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");用于switch語句和循環(huán)語句(while、do-while、for、foreach)語句中,用于跳出所在的switch或者循環(huán)語句break;輸出結(jié)果:例:break跳出for語句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");用于switch語句和循環(huán)語句(while、do-while、for、foreach)語句中,用于跳出所在的switch或者循環(huán)語句break;12345Finished例:break跳出for語句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");用于switch語句和循環(huán)語句(while、do-while、for、foreach)語句中,用于跳出所在的switch或者循環(huán)語句break;用于switch語句和循環(huán)語句(while、do-whilebreak語句:強制退出一層循環(huán)只能夠退出一層!!使用goto可以退出多層for(...;...;...){for(;;){........... break;.........} Console.WriteLine(n);}break語句:強制退出一層循環(huán)只能夠退出一層!!使用go例:判斷一個整數(shù)n是否為素數(shù)算法:輸入n從2到n-1試驗是否被n整除。如果任意一個能夠整除,則不是素數(shù)如果全部試驗都不能整除,則為素數(shù)素數(shù):大于1的正整數(shù),如果除了1和它本身,沒有其它正因子算法:輸入n從2到n-1試驗是否被n整除。如果任意一個能夠整除,則不是素數(shù)如果全部試驗都不能整除,則為素數(shù)例:判斷一個整數(shù)n是否為素數(shù)算法:素數(shù):大于1的正整數(shù),如果算法偽代碼輸入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除
isPrime=false;}//現(xiàn)在,isPrime變量表示n是否素數(shù)偽代碼是人交流算法時使用的不完整的代碼,沒有固定的語法,但寫出關(guān)鍵的語句對所有的i進行檢測是多于的,因為只要有一個i被n整除,已經(jīng)可以判定不是素數(shù),不需要繼續(xù)試驗。在這里,可以使用break語句跳出循環(huán)輸入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除
isPrime=false;}//現(xiàn)在,isPrime變量表示n是否素數(shù)輸入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除
isPrime=false;}//現(xiàn)在,isPrime變量表示n是否素數(shù)輸入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除
isPrime=false;}//現(xiàn)在,isPrime變量表示n是否素數(shù)算法偽代碼輸入n;偽代碼是人交流算法時使用的不完整的代碼,沒staticvoidMain(string[]args){intn,k;boolIsPrime=true;//標志
Console.WriteLine("請輸入要檢測的整數(shù)(大于1):");n=int.Parse(Console.ReadLine());for(k=2;k<n;k++)if(n%k==0){IsPrime=false;//可以肯定不是素數(shù)
break;//余下的不必再試驗了
}if(IsPrime)Console.WriteLine("{0}是素數(shù)",n);elseConsole.WriteLine("{0}不是素數(shù)",n);}注:在該例子中,沒有break程序也能正確運行,但有多余計算staticvoidMain(string[]argscontinue語句用于循環(huán)語句中,類似于break語句,但僅從當前的循環(huán)迭代中退出,然后執(zhí)行下一次迭代循環(huán)。用于循環(huán)語句中(while,do-while,for,foreach)continue結(jié)束本次循環(huán),繼續(xù)下一次循環(huán)continue;4.4.3continue語句用于循環(huán)語句中(while,do-while,for,foreach)continue結(jié)束本次循環(huán),繼續(xù)下一次循環(huán)continue;continue語句用于循環(huán)語句中,類似于break語句,但staticvoidMain(string[]args){for(inti=1;i<=10;i=i+1){if(i<5)continue;Console.WriteLine(i);}}了解continue語句的使用,求輸出大于或等于5的數(shù)運行結(jié)果:5678910staticvoidMain(string[]args){for(inti=1;i<=10;i=i+1){if(i<5)continue;Console.WriteLine(i);}}運行結(jié)果:5678910staticvoidMain(string[]argsfor(intn=10;n<=20;n++){if(n%3==0) continue; Console.WriteLine(n);}例:打印出10到20之間不能被3整除的數(shù)字for(intn=10;n<=20;n++)例:打印出例:輸出100以內(nèi)所有能被5整除的數(shù)staticvoidMain(string[]args){for(inti=1;i<=100;i++){if(i%5!=0)continue;Console.Write("{0}\t",i);}}staticvoidMain(string[]args){for(inti=1;i<=100;i++){if(i%5==0)Console.Write("{0}\t",i);}}使用Continue:不用Continue:這兩個程序功能相同staticvoidMain(string[]args){for(inti=1;i<=100;i++){if(i%5!=0)continue;Console.Write("{0}\t",i);}}staticvoidMain(string[]args){for(inti=1;i<=100;i++){if(i%5==0)Console.Write("{0}\t",i);}}例:輸出100以內(nèi)所有能被5整除的數(shù)staticvoidfor最適合于已知循環(huán)次數(shù)的場合while最適合等待某個條件的場合for語句與while語句for最適合于已知循環(huán)次數(shù)的場合while最適合等待某個條件4.5異常處理usingSystem;classTest{publicstaticvoidMain(){intx;x=int.Parse(Console.ReadLine());Console.WriteLine(x*x);}}例4.5異常處理usingSystem;例運行10100程序正常運行,得到期望結(jié)果abc100程序出現(xiàn)異常運行10程序正常運行,得到期望結(jié)果abc100程序出現(xiàn)異常運行異常x=int.Parse("100");//執(zhí)行正常x=int.Parse("abc100");//異常運行異常x=int.Parse("100");//執(zhí)行正常常見的C#異常類
字符串格式錯誤System.FormatException內(nèi)存分配失?。ㄔ趎ew對象時)System.OutOfMemoryException數(shù)組下標越界System.IndexOutOfRangeException被0除System.DivideByZeroExceptionSystem.ArrayTypeMismatchExceiption算術(shù)運算異常System.ArithmeticException常見的C#異常類字符串格式錯誤System.FormatEtry-catch-finally語句的格式
try{//可能引發(fā)異常的語句}catch(異常類型異常變量){//在異常發(fā)生時執(zhí)行的代碼}finally{//最終必須執(zhí)行的代碼(即使發(fā)生異常),如釋放資源等}try-catch-finally語句的格式tryusingSystem;classTest{publicstaticvoidMain(){intx;try{x=int.Parse(Console.ReadLine());Console.WriteLine(x*x);}
catch(FormatException){Console.WriteLine("輸入格式不對");}}}usingSystem;usingSystem;classTest{publicstaticvoidMain(){
try{intx=5;inty=0;intz;z=x/y;Console.WriteLine(z);}catch(DivideByZeroException){Console.WriteLine("被0除");}finally{Console.WriteLine("謝謝使用,再見");}}}usingSystem;C#中的異常用于處理系統(tǒng)級和應(yīng)用程序級的錯誤狀態(tài),例如:零除異常、下標越界、I/O錯誤等通過使用try語句來定義代碼塊,實現(xiàn)嘗試可能未成功的操作、處理失敗,以及在事后清理資源等C#中的異常用于處理系統(tǒng)級和應(yīng)用程序級的錯誤狀態(tài),例如:零除try語句有以下三種可能的形式try-catch語句:一個try塊后接一個或多個catch塊。try-finally語句:一個try塊后接一個finally塊。try-catch-finally語句:一個try塊后接一個或多個catch塊,后面再跟一個finally塊?!纠?.23】異常處理示例:打開并寫入文件,如果文件為只讀,則會產(chǎn)生異常UnauthorizedAccessExceptionstry語句有以下三種可能的形式try-catch語句:一個t實驗和習題實驗2-2~實驗2-7(順序、if、switch)實驗3-1~實驗3-8(循環(huán)、跳轉(zhuǎn)、異常)實踐題:四.25~四.33Ch04.程序流程和異常處理單選題填空題思考題實踐題
四.1~四.24實驗和習題實驗2-2~實驗2-7(順序、if、switch演講完畢,謝謝觀看!演講完畢,謝謝觀看!第4章程序流程和異常處理(2)順序結(jié)構(gòu)選擇結(jié)構(gòu):if語句、switch語句循環(huán)結(jié)構(gòu):for語句、while語句、do...while語句和foreach語句跳轉(zhuǎn)語句:goto、break、continue、return、throwC#異常處理機制創(chuàng)建和引發(fā)異常第4章程序流程和異常處理(2)順序結(jié)構(gòu)現(xiàn)實生活中的循環(huán)銀行的ATM需要不停地為不同的客戶服務(wù)我們每天的生活和學習需要重復(fù)生活中充滿了循環(huán)食堂宿舍教室ATM業(yè)務(wù)ATM業(yè)務(wù)ATM業(yè)務(wù)ATM業(yè)務(wù)ATM業(yè)務(wù)食堂食堂宿舍食堂宿舍食堂教室宿舍食堂現(xiàn)實生活中的循環(huán)銀行的ATM需要不停地為不同的客戶服務(wù)我們每
在編寫程序過程中,往往出現(xiàn)相同類型操作需要重復(fù)出現(xiàn),如實現(xiàn)1+2+…+100,則需要做99次加法,這類問題使用循環(huán)語句解決。即循環(huán)語句用于實現(xiàn)語句塊的重復(fù)執(zhí)行。C#中提供了四種不同的循環(huán)機制:for循環(huán)while循環(huán)do…while循環(huán)foreach循環(huán)foreach循環(huán)常用在遍歷數(shù)組時用到。在編寫程序過程中,往往出現(xiàn)相同類型操作需for循環(huán)語句
for循環(huán)常常用于已知循環(huán)次數(shù)的情況,使用該循環(huán)時,測試是否滿足某個條件,如果滿足條件,則進入下一次循環(huán),否則,退出該循環(huán)。格式:for(表達式1;布爾表達式2;表達式3)
單語句或{循環(huán)語句序列}三元運算表達式4.3.1for循環(huán)for循環(huán)語句for(表達式1;布爾表達式2;表達式3)功能:truefalse語句布爾表達式21計算表達式1;2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;如果表達式2為false,則退出循環(huán)表達式1表達式31計算表達式1;2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;1計算表達式1;如果表達式2為false,則退出循環(huán)2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;1計算表達式1;如果表達式2為false,則退出循環(huán)2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;1計算表達式1;如果表達式2為false,則退出循環(huán)2計算布爾表達式2,如果結(jié)果為true,則執(zhí)行語句,再計算表達式3,然后重復(fù)本過程;1計算表達式1;表達式1for(表達式1;布爾表達式2;表達式3)
語句表達式1功能:truefalse語句布爾表達式21計算表達式1;2
for循環(huán)語句的使用【例子】計算1+2+3+…100。使用for語句實現(xiàn)。分析1:定義sum,連續(xù)寫sum=sum+n;分析2:該問題屬于重復(fù)執(zhí)行加法的問題,并且參與運算的兩個操作數(shù)不斷的按規(guī)律增加。該類問題可以通過循環(huán)進行解決。for循環(huán)語句的使用例:求1+2+3+...+100的值sum=sum+i;sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);寫完這100條語句,就算出來了你想累死我??!sum=sum+i;sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);sum=sum+i;sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);sum=sum+i;sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);寫完這100條語句,就算出來了你想累死我??!累加器寫完這100條語句,就算出來了例:求1+2+3+...+100的值sum=sum+例:求1+2+3+...+100的值sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);i:1i:2i:3i:100i:101sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);i:1sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;sum=sum+1;sum=sum+2;sum=sum+3;...........sum=sum+100;Console.WriteLine(sum);例:求1+2+3+...+100的值sum=0;isum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);i:1i:2i:3i:100i:101sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);sum=0;i=1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;sum=sum+i;i=i+1;...........sum=sum+i;i=i+1;Console.WriteLine(sum);循環(huán)條件:i<=100這兩條語句需要循環(huán)執(zhí)行sum=0;i=1;i:1i:2i:3i:100計算1+2+…+100的for循環(huán)流程intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);運行流程分析intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);intsum=0,i;for(i=1;i<=100;i++){sum=sum+i;}Console.WriteLine(sum);計算1+2+…+100的for循環(huán)流程intsum=0在窗體設(shè)計圖上,雙擊按鈕button1編寫【計算】按鈕的Click(單擊)事件代碼為:privatevoidbutton1_Click(objectsender,System.EventArgse){intsum,k;sum=0;for(k=1;k<=100;k=k+1){sum=sum+k;}label1.Text="從1加到100值為"+sum.ToString();}在窗體設(shè)計圖上,雙擊按鈕button1編寫【計算】按程序的運行結(jié)果如圖所示的左圖,單擊“計算”按鈕,將在標簽上顯示運行結(jié)果。
程序運行結(jié)果程序的運行結(jié)果如圖所示的左圖,單擊“計算【例子】計算n!,假設(shè)n=10。分析:該例實現(xiàn)階乘的運算,可以使用改變乘數(shù)的值進行實現(xiàn),使用循環(huán)可以方便的實現(xiàn)該類問題。程序的運行結(jié)果如圖所示。計算n!n!=n*(n-1)*…*2*1【例子】計算n!,假設(shè)n=10。計算n!n!=n*(n-1)privatevoidbutton1_Click(objectsender,System.EventArgse){intsum,k;sum=1;for(k=1;k<=10;k++){sum=sum*k;}textBox1.Text=sum.ToString();}編寫【計算】按鈕的Click(單擊)事件代碼為:privatevoidbutton1_Click(obj練習:使用for語句,編程輸出1~10的每個整數(shù)的平方staticvoidMain(string[]args){ints;for(inti=1;i<=10;i++){s=i*i;Console.Write("{0}\t",s);}}練習:使用for語句,編程輸出1~10的每個整數(shù)的平方stfor語句的常見用法(1)inti;for(i=0;i<100;i++){
Console.WriteLine(i);}01234......9899運行結(jié)果:賦初值0123
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度井蓋專利技術(shù)許可與轉(zhuǎn)讓合同3篇
- 2025年度新型建材鋼管租賃服務(wù)合同
- 二零二五年度家電產(chǎn)品銷售合同協(xié)議范本3篇
- 2025年度二手房屋買賣居間服務(wù)合同范本全新升級版
- 2025年度預(yù)制構(gòu)件裝配式建筑項目風險評估與保險合同
- 二零二五年度跑步賽事場地設(shè)施租賃合同4篇
- 二零二五年度古建筑修繕泥工班組專業(yè)施工合同4篇
- 2025版民爆物品裝卸作業(yè)應(yīng)急救援預(yù)案合同3篇
- 2025年墻體改梁與裝配式建筑技術(shù)應(yīng)用合同3篇
- 2025版二零二五年度商鋪租賃合同租賃物保險條款3篇
- 動物醫(yī)學類專業(yè)生涯發(fā)展展示
- 礦物加工工程基礎(chǔ)知識單選題100道及答案解析
- 2024年同等學力申碩英語考試真題
- 世說新語原文及翻譯-副本
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- 非遺文化走進數(shù)字展廳+大數(shù)據(jù)與互聯(lián)網(wǎng)系創(chuàng)業(yè)計劃書
- 2024山西省文化旅游投資控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 科普知識進社區(qū)活動總結(jié)與反思
- 加油站廉潔培訓課件
- 現(xiàn)金日記賬模板(帶公式)
- 消化內(nèi)科??票O(jiān)測指標匯總分析
評論
0/150
提交評論