程序流程和异常处理教材课件_第1页
程序流程和异常处理教材课件_第2页
程序流程和异常处理教材课件_第3页
程序流程和异常处理教材课件_第4页
程序流程和异常处理教材课件_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章程序流程和异常处理(2)顺序结构选择结构:if语句、switch语句循环结构:for语句、while语句、do...while语句和foreach语句跳转语句:goto、break、continue、return、throwC#异常处理机制创建和引发异常第4章程序流程和异常处理(2)顺序结构现实生活中的循环银行的ATM需要不停地为不同的客户服务我们每天的生活和学习需要重复生活中充满了循环食堂宿舍教室ATM业务ATM业务ATM业务ATM业务ATM业务食堂食堂宿舍食堂宿舍食堂教室宿舍食堂现实生活中的循环银行的ATM需要不停地为不同的客户服务我们每

在编写程序过程中,往往出现相同类型操作需要重复出现,如实现1+2+…+100,则需要做99次加法,这类问题使用循环语句解决。即循环语句用于实现语句块的重复执行。C#中提供了四种不同的循环机制:for循环while循环do…while循环foreach循环foreach循环常用在遍历数组时用到。在编写程序过程中,往往出现相同类型操作需for循环语句

for循环常常用于已知循环次数的情况,使用该循环时,测试是否满足某个条件,如果满足条件,则进入下一次循环,否则,退出该循环。格式:for(表达式1;布尔表达式2;表达式3)

单语句或{循环语句序列}三元运算表达式4.3.1for循环for循环语句for(表达式1;布尔表达式2;表达式3)功能:truefalse语句布尔表达式21计算表达式1;2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;如果表达式2为false,则退出循环表达式1表达式31计算表达式1;2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;表达式1for(表达式1;布尔表达式2;表达式3)

语句表达式1功能:truefalse语句布尔表达式21计算表达式1;2

for循环语句的使用【例子】计算1+2+3+…100。使用for语句实现。分析1:定义sum,连续写sum=sum+n;分析2:该问题属于重复执行加法的问题,并且参与运算的两个操作数不断的按规律增加。该类问题可以通过循环进行解决。for循环语句的使用例:求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);循环条件:i<=100这两条语句需要循环执行sum=0;i=1;i:1i:2i:3i:100计算1+2+…+100的for循环流程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循环流程intsum=0在窗体设计图上,双击按钮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();}在窗体设计图上,双击按钮button1编写【计算】按程序的运行结果如图所示的左图,单击“计算”按钮,将在标签上显示运行结果。

程序运行结果程序的运行结果如图所示的左图,单击“计算【例子】计算n!,假设n=10。分析:该例实现阶乘的运算,可以使用改变乘数的值进行实现,使用循环可以方便的实现该类问题。程序的运行结果如图所示。计算n!n!=n*(n-1)*…*2*1【例子】计算n!,假设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的每个整数的平方staticvoidMain(string[]args){ints;for(inti=1;i<=10;i++){s=i*i;Console.Write("{0}\t",s);}}练习:使用for语句,编程输出1~10的每个整数的平方stfor语句的常见用法(1)inti;for(i=0;i<100;i++){

Console.WriteLine(i);}01234......9899运行结果:赋初值01234......9899循环体被运行100次,循环变量依次为0~99改变循环变量i:循环变量循环条件for语句的常见用法(1)inti;0运行结果:赋初值0for语句的常见用法(2)inti;for(i=1;i<=100;i++){

Console.WriteLine(i);}12345......99100运行结果:循环体也被运行100次,循环变量依次为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运行结果:循环体也for语句的简化:for(i=1;i<=100;i++)Console.WriteLine(i);可以为空可以为空可以为空,认为是trueinti=0;形成死循环分号不能省略哦!for语句的简化:for(i=1;i<=100;i在for循环中定义变量for(inti=1;i<=100;i++)sum=sum+i;在for中定义的变量只在该循环语句内有效,在循环语句外不能访问可以在这里定义变量for(inti=1;i<=100;i++)sum=sum+i;在for中定义的变量只在该循环语句内有效,在循环语句外不能访问for(inti=1;i<=100;i++)sum=sum+i;在for循环中定义变量for(inti=1;i<=100可以用于不知道循环次数的情况;用于在循环时判断是否满足某个条件。while循环语句的格式为:

while(布尔表达式)

单语句或者语句块

布尔条件表达式是每次循环开始前进行判断的条件,当条件表达式的值为真时,执行循环;否则,退出循环。该语句结构的流程图如图所示。

4.3.2while循环可以用于不知道循环次数的情况;用于在循环时判断是否满足某个条while语句while(布尔表达式)

语句格式:功能:1如果布尔表达式为false,直接跳出循环;2如果为true,则执行语句,并继续第1步布尔表达式?语句falsetruewhile语句while(布尔表达式)格式:功能:布尔表while循环语句的使用【例子】设有一张厚为xmm,面积足够大的纸,将它不断地对折。试问对折多少次后,其厚度可达珠穆朗玛峰的高度(8844.43m)。设对折后纸的厚度为hmm,计数器为n。在没有对折时,纸厚为xmm,每对折一次,其厚度是上一次的2倍,在未到达8844.43m时,重复对折。在程序中,纸的厚度就是对折后纸的厚度,所以用一个变量h。while循环语句的使用建立应用程序用户界面与设置对象属性,如图所示。用户界面及程序运行结果建立应用程序用户界面与设置对象属性,如图所示。用户界面及程序privatevoidbutton1_Click(objectsender,System.EventArgse){intn=0;floath;h=float.Parse(textBox1.Text);while(h<8844430)//未到达8844.43m时,重复对折

{n=n+1;//计数器为n对折次数

h=2*h;//每对折一次,其厚度是上一次的2倍

}textBox2.Text=n.ToString();}privatevoidbutton1_Click(obj求1+2+3+...+100的值

改成while循环: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;循环条件循环体语句5050运行结果:505050505050求1+2+3+...+100的值

改成while循环: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循环的循环体中一般应该有使循环条件不成立的语句,否则会形成“死循环”;i=1;while(i<=100){sum=sum+i;i=i+1;}这个语句让循环条件可以不成立死循环:不会自动终止的循环i=1;while(i<=100){sum=sum+i;i=i+1;}死循环:不会自动终止的循环i=1;while(i<=100){sum=sum+i;i=i+1;}在while循环的循环体中一般应该有使循环条件不成立的语句,i=1;while(i<=100){sum=sum+i;//i=i+1;}死循环去掉该语句,形成死循环运行时,死循环占用大量CPU时间i=1;while(i<=100){sum=sum+i;//i=i+1;}死循环i=1;while(i<=100){sum=sum+i;//i=i+1;}死循环i=1;死循环去掉该语句,形成死循环运行时,死循环占用大量Cwhile(true)可以形成死循环while(true){Console.WriteLine("Hello");}HelloHelloHelloHelloHelloHelloHello条件恒为truewhile(true){Console.WriteLine("Hello");}HelloHelloHelloHelloHelloHelloHellowhile(true){Console.WriteLine("Hello");}while(true)Hello条件恒为truewhil计算1+2+…+100

for循环和while循环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循环与while循环,功能完全相同(for可以转化为while,while也可以转为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循环和while循环int例:求一个整数x所有位数之和sum=0;while(x>0){sum+=x%10;x/=10;}Console.WriteLine(sum);算法思路:x%10可以得到个位数字,x=x/10可以得到去掉个位数字后剩下的数字。重复这个过程直到x变为0,可以依次得到所有数字学习编程语言的同时,也要学会用“计算机的思维方式”,掌握计算机解决问题的方法:算法sum=0;while(x>0){sum+=x%10;x/=10;}Console.WriteLine(sum);算法思路:x%10可以得到个位数字,x=x/10可以得到去掉个位数字后剩下的数字。重复这个过程直到x变为0,可以依次得到所有数字sum=0;while(x>0){sum+=x%10;x/=10;}Console.WriteLine(sum);算法思路:x%10可以得到个位数字,x=x/10可以得到去掉个位数字后剩下的数字。重复这个过程直到x变为0,可以依次得到所有数字例:求一个整数x所有位数之和sum=0;算法思路:x%do…while循环非常类似于while循环。差别在于while循环的测试条件在每一次循环开始时执行,而do…while循环的测试条件在每一次循环体结束时进行判断。同样的,do…while可以解决一些循环问题,但使用的频率较少。do…while语法的一般格式为:do

语句while(布尔表达式);4.3.3do…while循环do…while循环非常类似于while循环。4.3.3ddo...while语句do

语句while(布尔表达式);功能:truefalse语句表达式?1执行循环体语句;2计算表达式,如果为true,并继续第1步;

如果为false,则退出循环1执行循环体语句;2计算表达式,如果为true,并继续第1步;

如果为false,则退出循环1执行循环体语句;2计算表达式,如果为true,并继续第1步;do

语句while(布尔表达式);

如果为false,则退出循环1执行循环体语句;2计算表达式,如果为true,并继续第1步;do...while语句do功能:truefalse语do…while的使用【例子】使用do…while语句实现1+2+3+…100。inti=1,sum=0;do{sum=sum+i;i=i+1;}while(i<=100);Console.WriteLine(sum);;是do...while语句的一部分,不要遗忘5050运行结果: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的循环体至少被执行一次inti=20;while(i<10){Console.WriteLine(i);i++;}inti=20;do{Console.WriteLine(i);i++;}while(i<10);运行结果:20运行结果: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的循环体至少被执行一次inti=20;i4.3.4foreach循环foreach语句用于循环访问数组或集合以获取所需信息。当为数组或集合中的所有元素完成迭代后,控制传递给foreach块之后的下一个语句

foreach(类型名称变量名称in数组或集合名称){

循环体语句序列;}【例4.17】使用foreach显示整数数组的内容4.3.4foreach循环foreach语句用于循环访问当一个循环(称为“外循环”)的循环语句序列内包含另一个循环(称为“内循环”),称为循环的嵌套,这种语句结构称为多重循环结构。内循环中还以包含循环,形成多层循环(循环嵌套的层数理论上无限制)。

三种循环(while循环、do…while循环、for循环)可以互相嵌套。在多重循环中,需要注意的是循环语句所在循环的层数。4.3.5循环的嵌套当一个循环(称为“外循环”)的循环语句序列内包含另一个循循环的嵌套循环体内的语句也可以是任意循环语句inti;for(i=1;i<=100;i++){ j=0;while(j!=4)Console.WriteLine(j++);}内循环外循环循环的嵌套循环体内的语句也可以是任意循环语句inti;内【例子】编程实现九九乘法表。分析:本例中实现每一个一位数i显示从1乘到i,对于i的取值要从1取到9,所以可以使用两重循环实现,程序设计如图所示。九九乘法表【例子】编程实现九九乘法表。九九乘法表本例的界面设计如图,使用label1控件实现乘法表的显示。本例使用两重循环实现,其中外层循环实现乘法表中第二乘数i取值范围为1到9,内层循环在外层循环的基础上计算第一个乘数k的取值范围为1到i,其乘积以及表达式在label控件中显示。运行结果如图所示。【九九乘法表】按钮的Click(单击)事件代码为:本例的界面设计如图,使用label1控件实现乘法表的显示。本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循环的嵌套,求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;//循环结束后,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;//循环结束后,mul保存N!例:利用for循环的嵌套,求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);}避免内外循环的变量冲突避免内外循环的变量冲突计算i的阶乘到变量mstaticvoidMain(string[]args4.4跳转语句使用跳转语句执行分支,可以使程序执行跳转到程序中其它部分。C#中提供四种转移语句:

GotoBreakContinuereturn4.4跳转语句使用跳转语句执行分支,可以使程序执行跳转到程。

goto语句可以将程序控制直接转移给标签制定的语句。但由于goto语句改变了程序的正常流程,使得程序特别容易出错,所以尽量不要用。而且,用goto语句实现的循环完全可以用循环语句实现,因此,goto语句很少使用。4.4.1goto语句。4.4.1goto语句goto语句:无条件转移语句goto

标号.......标号:........功能:控制流程直接转到指定标号处标号可以在goto之前或之后。但必须在同一个方法内goto

标号.......标号:........控制流程直接转到指定标号处标号可以在goto之前或之后。但必须在同一个方法内goto

标号.......标号:........控制流程直接转到指定标号处goto语句:无条件转移语句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例:找到两个数,乘积为45,并且两个数都小于10,输出这两个数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);}退出多重循环,是C#保留goto语句的最大价值只能从循环内层往外层跳转,不能从外层往内层跳转退出多重循环,是C#保留goto语句的最大价值只能从循环内层往外层跳转,不能从外层往内层跳转例:找到两个数,乘积为45,并且两个数都小于10,输出这两个使用goto的注意事项:经验证明,使用goto语句实现循环,破环了程序的可读性。现代程序设计中,不提倡使用goto来完成循环。保留goto语句,应该仅仅用于跳出多重循环这个功能。使用goto的注意事项:经验证明,使用goto语句实现循环,用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;例:break跳出for语句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");12345Finished输出结果:4.4.2break语句用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;例:break跳出for语句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;输出结果:例:break跳出for语句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;12345Finished例:break跳出for语句inti;for(i=1;i<=100;i++){Console.WriteLine(i);if(i==5)break;}Console.WriteLine("Finished");用于switch语句和循环语句(while、do-while、for、foreach)语句中,用于跳出所在的switch或者循环语句break;用于switch语句和循环语句(while、do-whilebreak语句:强制退出一层循环只能够退出一层!!使用goto可以退出多层for(...;...;...){for(;;){........... break;.........} Console.WriteLine(n);}break语句:强制退出一层循环只能够退出一层!!使用go例:判断一个整数n是否为素数算法:输入n从2到n-1试验是否被n整除。如果任意一个能够整除,则不是素数如果全部试验都不能整除,则为素数素数:大于1的正整数,如果除了1和它本身,没有其它正因子算法:输入n从2到n-1试验是否被n整除。如果任意一个能够整除,则不是素数如果全部试验都不能整除,则为素数例:判断一个整数n是否为素数算法:素数:大于1的正整数,如果算法伪代码输入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除

isPrime=false;}//现在,isPrime变量表示n是否素数伪代码是人交流算法时使用的不完整的代码,没有固定的语法,但写出关键的语句对所有的i进行检测是多于的,因为只要有一个i被n整除,已经可以判定不是素数,不需要继续试验。在这里,可以使用break语句跳出循环输入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除

isPrime=false;}//现在,isPrime变量表示n是否素数输入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除

isPrime=false;}//现在,isPrime变量表示n是否素数输入n;isPrime=true;for(i=2;i<n;i++){if(n%i==0)//i被n整除

isPrime=false;}//现在,isPrime变量表示n是否素数算法伪代码输入n;伪代码是人交流算法时使用的不完整的代码,没staticvoidMain(string[]args){intn,k;boolIsPrime=true;//标志

Console.WriteLine("请输入要检测的整数(大于1):");n=int.Parse(Console.ReadLine());for(k=2;k<n;k++)if(n%k==0){IsPrime=false;//可以肯定不是素数

break;//余下的不必再试验了

}if(IsPrime)Console.WriteLine("{0}是素数",n);elseConsole.WriteLine("{0}不是素数",n);}注:在该例子中,没有break程序也能正确运行,但有多余计算staticvoidMain(string[]argscontinue语句用于循环语句中,类似于break语句,但仅从当前的循环迭代中退出,然后执行下一次迭代循环。用于循环语句中(while,do-while,for,foreach)continue结束本次循环,继续下一次循环continue;4.4.3continue语句用于循环语句中(while,do-while,for,foreach)continue结束本次循环,继续下一次循环continue;continue语句用于循环语句中,类似于break语句,但staticvoidMain(string[]args){for(inti=1;i<=10;i=i+1){if(i<5)continue;Console.WriteLine(i);}}了解continue语句的使用,求输出大于或等于5的数运行结果:5678910staticvoidMain(string[]args){for(inti=1;i<=10;i=i+1){if(i<5)continue;Console.WriteLine(i);}}运行结果:5678910staticvoidMain(string[]argsfor(intn=10;n<=20;n++){if(n%3==0) continue; Console.WriteLine(n);}例:打印出10到20之间不能被3整除的数字for(intn=10;n<=20;n++)例:打印出例:输出100以内所有能被5整除的数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以内所有能被5整除的数staticvoidfor最适合于已知循环次数的场合while最适合等待某个条件的场合for语句与while语句for最适合于已知循环次数的场合while最适合等待某个条件4.5异常处理usingSystem;classTest{publicstaticvoidMain(){intx;x=int.Parse(Console.ReadLine());Console.WriteLine(x*x);}}例4.5异常处理usingSystem;例运行10100程序正常运行,得到期望结果abc100程序出现异常运行10程序正常运行,得到期望结果abc100程序出现异常运行异常x=int.Parse("100");//执行正常x=int.Parse("abc100");//异常运行异常x=int.Parse("100");//执行正常常见的C#异常类

字符串格式错误System.FormatException内存分配失败(在new对象时)System.OutOfMemoryException数组下标越界System.IndexOutOfRangeException被0除System.DivideByZeroExceptionSystem.ArrayTypeMismatchExceiption算术运算异常System.ArithmeticException常见的C#异常类字符串格式错误System.FormatEtry-catch-finally语句的格式

try{//可能引发异常的语句}catch(异常类型异常变量){//在异常发生时执行的代码}finally{//最终必须执行的代码(即使发生异常),如释放资源等}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#中的异常用于处理系统级和应用程序级的错误状态,例如:零除异常、下标越界、I/O错误等通过使用try语句来定义代码块,实现尝试可能未成功的操作、处理失败,以及在事后清理资源等C#中的异常用于处理系统级和应用程序级的错误状态,例如:零除try语句有以下三种可能的形式try-catch语句:一个try块后接一个或多个catch块。try-finally语句:一个try块后接一个finally块。try-catch-finally语句:一个try块后接一个或多个catch块,后面再跟一个finally块。【例4.23】异常处理示例:打开并写入文件,如果文件为只读,则会产生异常UnauthorizedAccessExceptionstry语句有以下三种可能的形式try-catch语句:一个t实验和习题实验2-2~实验2-7(顺序、if、switch)实验3-1~实验3-8(循环、跳转、异常)实践题:四.25~四.33Ch04.程序流程和异常处理单选题填空题思考题实践题

四.1~四.24实验和习题实验2-2~实验2-7(顺序、if、switch演讲完毕,谢谢观看!演讲完毕,谢谢观看!第4章程序流程和异常处理(2)顺序结构选择结构:if语句、switch语句循环结构:for语句、while语句、do...while语句和foreach语句跳转语句:goto、break、continue、return、throwC#异常处理机制创建和引发异常第4章程序流程和异常处理(2)顺序结构现实生活中的循环银行的ATM需要不停地为不同的客户服务我们每天的生活和学习需要重复生活中充满了循环食堂宿舍教室ATM业务ATM业务ATM业务ATM业务ATM业务食堂食堂宿舍食堂宿舍食堂教室宿舍食堂现实生活中的循环银行的ATM需要不停地为不同的客户服务我们每

在编写程序过程中,往往出现相同类型操作需要重复出现,如实现1+2+…+100,则需要做99次加法,这类问题使用循环语句解决。即循环语句用于实现语句块的重复执行。C#中提供了四种不同的循环机制:for循环while循环do…while循环foreach循环foreach循环常用在遍历数组时用到。在编写程序过程中,往往出现相同类型操作需for循环语句

for循环常常用于已知循环次数的情况,使用该循环时,测试是否满足某个条件,如果满足条件,则进入下一次循环,否则,退出该循环。格式:for(表达式1;布尔表达式2;表达式3)

单语句或{循环语句序列}三元运算表达式4.3.1for循环for循环语句for(表达式1;布尔表达式2;表达式3)功能:truefalse语句布尔表达式21计算表达式1;2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;如果表达式2为false,则退出循环表达式1表达式31计算表达式1;2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;如果表达式2为false,则退出循环2计算布尔表达式2,如果结果为true,则执行语句,再计算表达式3,然后重复本过程;1计算表达式1;表达式1for(表达式1;布尔表达式2;表达式3)

语句表达式1功能:truefalse语句布尔表达式21计算表达式1;2

for循环语句的使用【例子】计算1+2+3+…100。使用for语句实现。分析1:定义sum,连续写sum=sum+n;分析2:该问题属于重复执行加法的问题,并且参与运算的两个操作数不断的按规律增加。该类问题可以通过循环进行解决。for循环语句的使用例:求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);循环条件:i<=100这两条语句需要循环执行sum=0;i=1;i:1i:2i:3i:100计算1+2+…+100的for循环流程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循环流程intsum=0在窗体设计图上,双击按钮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();}在窗体设计图上,双击按钮button1编写【计算】按程序的运行结果如图所示的左图,单击“计算”按钮,将在标签上显示运行结果。

程序运行结果程序的运行结果如图所示的左图,单击“计算【例子】计算n!,假设n=10。分析:该例实现阶乘的运算,可以使用改变乘数的值进行实现,使用循环可以方便的实现该类问题。程序的运行结果如图所示。计算n!n!=n*(n-1)*…*2*1【例子】计算n!,假设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的每个整数的平方staticvoidMain(string[]args){ints;for(inti=1;i<=10;i++){s=i*i;Console.Write("{0}\t",s);}}练习:使用for语句,编程输出1~10的每个整数的平方stfor语句的常见用法(1)inti;for(i=0;i<100;i++){

Console.WriteLine(i);}01234......9899运行结果:赋初值0123

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论