第4章程序流程和异常处理(2)

上传人:小*** 文档编号:242757733 上传时间:2024-09-02 格式:PPT 页数:69 大小:1,008.50KB
返回 下载 相关 举报
第4章程序流程和异常处理(2)_第1页
第1页 / 共69页
第4章程序流程和异常处理(2)_第2页
第2页 / 共69页
第4章程序流程和异常处理(2)_第3页
第3页 / 共69页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,第,4,章 程序流程和异常处理,(2),顺序结构,选择结构:,if,语句、,switch,语句,循环结构:,for,语句、,while,语句、,do.while,语句和,foreach,语句,跳转语句,:,goto,、,break,、,continue,、,return,、,throw,C#,异常处理机制,创建和引发异常,现实生活中的循环,银行的,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.1 for,循环,功能:,true,false,语句,布尔,表达式,2,1,计算表达式,1,;,2,计算布尔表达式,2,,如果结果为,true,则执行语句,再计算表达式,3,,然后重复本过程;,如果表达式,2,为,false,,则退出循环,表达式,1,表达式,3,1,计算表达式,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,;,表达式,1,for(,表达式,1,;布尔表达式,2,;表达式,3),语句,表达式,1,for,循环语句的使用,【,例子,】,计算,1+2+3+100,。使用,for,语句实现。,分析,1,:,定义,sum,,连续写,sum=,sum+n,;,分析,2,:,该问题属于重复执行加法的问题,并且参与运算的两个操作数不断的按规律增加。该类问题可以通过循环进行解决。,例:求,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 = 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:1,i:2,i:3,i:100,i:101,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:1,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,);,sum = 0;,sum =,sum,+ 1;,sum =,sum,+ 2;,sum =,sum,+ 3;,.,sum =,sum,+ 100;,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:1,i:2,i:3,i:100,i:101,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,);,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,这两条语句需要循环执行,计算,1+2+100,的,for,循环流程,int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,运行流程分析,int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,在窗体设计图上,双击按钮,button1,编写,【,计算,】,按钮的,Click,(,单击)事件代码为:,private void button1_Click(object sender,System.EventArgs,e),int,sum, k;,sum=0;,for(k,=1;k=100;k=k+1),sum=,sum+k,;,label1.Text=,从,1,加到,100,值为,+,sum.ToString,();,程序的运行结果如图所示的左图,单击“计算”按钮,将在标签上显示运行结果。,程序运行结果,【,例子,】,计算,n!,,,假设,n=10,。,分析:该例实现阶乘的运算,可以使用改变乘数的值进行实现,使用循环可以方便的实现该类问题。程序的运行结果如图所示。,计算,n!,n!=n*(n-1)*2*1,private void button1_Click(object sender,System.EventArgs,e),int,sum,k;,sum=1;,for(k=1;k=10;k+),sum=sum*k;,textBox1.Text=,sum.ToString,();,编写,【,计算,】,按钮的,Click,(单击)事件代码为:,练习:,使用,for,语句,编程输出,1,10,的每个整数的平方,static void,Main(string,args,),int,s;,for (,int,i = 1; i = 10; i+),s = i * i;,Console.Write(0t, s);,for,语句的常见用法,(1),int,i;,for(i,=0; i100 ; i+),Console.WriteLine(i);,0,1,2,3,4,.,.,98,99,运行结果:,赋初值,0,1,2,3,4,.,.,98,99,循环体被运行,100,次,,循环变量依次为,0 99,改变循环变量,i:,循环变量,循环条件,for,语句的常见用法,(2),int,i;,for(i,=1; i=100; i+),Console.WriteLine(i);,1,2,3,4,5,.,.,99,100,运行结果:,循环体也被运行,100,次,,循环变量依次为,1 100,int,i;,for(i,=1; i=100; i+),Console.WriteLine(i);,1,2,3,4,5,.,.,99,100,int,i;,for(i,=1; i=100; i+),Console.WriteLine(i);,1,2,3,4,5,.,.,99,100,for,语句的简化:,for( i=1 ; i=100 ; i+),Console.WriteLine(i);,可以为空,可以为空,可以为空,认为是,true,int,i=0;,形成死循环,分号不能省略哦!,在,for,循环中定义变量,for(int,i=1; i=100; i+),sum =,sum,+ i;,在,for,中定义的变量只在该循环语句内有效,在循环语句外不能访问,可以在这里定义变量,for(int,i=1; i=100; i+),sum =,sum,+ i;,在,for,中定义的变量只在该循环语句内有效,在循环语句外不能访问,for(int,i=1; i=100; i+),sum =,sum,+ i;,可以用于,不知道循环次数,的情况;用于在循环时判断是否满足某个条件。,while,循环语句的格式为:,while (,布尔表达式,),单语句或者语句块,布尔条件表达式是每次循环开始前进行判断的条件,当条件表达式的值为真时,执行循环;否则,退出循环。该语句结构的流程图如图所示。,4.3.2 while,循环,while,语句,while(,布尔表达式,),语句,格式:,功能:,1,如果布尔表达式为,false,,直接跳出循环;,2,如果为,true,则执行语句,并继续第,1,步,布尔表达式,?,语句,false,true,while,循环语句的使用,【,例子,】,设有一张厚为,x,mm,,,面积足够大的纸,将它不断地对折。试问对折多少次后,其厚度可达珠穆朗玛峰的高度(,8844.43 m,)。,设对折后纸的厚度为,h mm,,,计数器为,n,。,在没有对折时,纸厚为,x,mm,,,每对折一次,其厚度是上一次的,2,倍,,,在未到达,8844.43 m,时,重复对折,。在程序中,纸的厚度就是对折后纸的厚度,所以用一个变量,h,。,建立应用程序用户界面与设置对象属性,如图所示。,用户界面及程序运行结果,private void button1_Click(object sender,System.EventArgs,e),int,n=0;,float h;,h=float.Parse(textBox1.Text);,while (,h8844430,),/,未到达,8844.43 m,时,重复对折,n = n + 1;,/,计数器为,n,对折次数,h = 2 * h,;/,每对折一次,其厚度是上一次的,2,倍,textBox2.Text =,n.ToString,();,求,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,运行结果:,5050,5050,5050,while,运行流程分析,i=1;,while(i,=100),sum =,sum,+ i;,i+;,1=100,100=100,101=100,true,true,false,.,1=100,true,100=100,1=100,false,100=100,1=100,101=100,100=100,1=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;,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;,死循环,while(true,),可以形成死循环,while( true ),Console.WriteLine,( Hello);,Hello,Hello,Hello,Hello,Hello,Hello,Hello,条件恒为,true,while( true ),Console.WriteLine,( Hello);,Hello,Hello,Hello,Hello,Hello,Hello,Hello,while( true ),Console.WriteLine,( Hello);,计算,1+2+100for,循环和,while,循环,int,sum = 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,);,int,sum = 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,),int,sum = 0, i;,for( i=1 ; i=100 ; i+),sum =,sum,+ i;,Console.WriteLine(sum),;,sum = 0; i=1;,while(i,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,,可以依次得到所有数字,dowhile,循环非常类似于,while,循环。,差别在于,while,循环的测试条件在每一次循环开始时执行,而,dowhile,循环的测试条件在每一次循环体结束时进行判断。同样的,,dowhile,可以解决一些循环问题,但使用的频率较少。,dowhile,语法的一般格式为:,do,语句,while (,布尔表达式,);,4.3.3 dowhile,循环,do . while,语句,do,语句,while(,布尔表达式,),;,功能:,true,false,语句,表达式,?,1,执行循环体语句;,2,计算表达式,如果为,true,并继续第,1,步;,如果为,false,,则退出循环,1,执行循环体语句;,2,计算表达式,如果为,true,并继续第,1,步;,如果为,false,,则退出循环,1,执行循环体语句;,2,计算表达式,如果为,true,并继续第,1,步;,do,语句,while(,布尔表达式,),;,如果为,false,,则退出循环,1,执行循环体语句;,2,计算表达式,如果为,true,并继续第,1,步;,dowhile,的使用,【,例子,】,使用,do,while,语句实现,1+2+3+,100,。,int,i=1, sum=0;,do,sum =,sum,+ i;,i = i + 1;,while(i,= 100);,Console.WriteLine(sum),;,;,是,do.while,语句的一部分,不要遗忘,5050,运行结果:,int,i=1, sum=0;,do,sum =,sum,+ i;,i = i + 1;,while(i,= 100);,Console.WriteLine(sum),;,5050,int,i=1, sum=0;,do,sum =,sum,+ i;,i = i + 1;,while(i,= 100);,Console.WriteLine(sum),;,do-while,的循环体至少被执行一次,int,i=20;,while(i,10),Console.WriteLine(i,);,i+;,int,i=20;,do,Console.WriteLine(i,);,i+;,while(i,10);,运行结果:,20,运行结果:,int,i=20;,while(i,10),Console.WriteLine(i,);,i+;,int,i=20;,do,Console.WriteLine(i,);,i+;,while(i,10);,int,i=20;,while(i,10),Console.WriteLine(i,);,i+;,20,int,i=20;,do,Console.WriteLine(i,);,i+;,while(i,10);,int,i=20;,while(i,10),Console.WriteLine(i,);,i+;,int,i=20;,while(i,10),Console.WriteLine(i,);,i+;,int,i=20;,do,Console.WriteLine(i,);,i+;,while(i,10);,int,i=20;,while(i,10),Console.WriteLine(i,);,i+;,4.3.4,foreach,循环,foreach,语句用于循环访问数组或集合以获取所需信息。,当为数组或集合中的所有元素完成迭代后,控制传递给,foreach,块之后的下一个语句,foreach,(,类型名称 变量名称,in,数组或集合名称,),循环体语句序列,;,【,例,4.17,】,使用,foreach,显示整数数组的内容,当一个循环(称为“外循环”)的循环语句序列内包含另一个循环(称为“内循环”),称为,循环的嵌套,,这种语句结构称为多重循环结构。,内循环中还以包含循环,形成多层循环(循环嵌套的层数理论上无限制)。,三种循环(,while,循环、,dowhile,循环、,for,循环)可以互相嵌套。,在多重循环中,需要注意的是循环语句所在循环的层数。,4.3.5,循环的嵌套,循环的嵌套,循环体内的语句也可以是任意循环语句,int,i;,for(i,=1; i=100; i+),j=0;,while(j,!=4),Console.WriteLine(j,+);,内循环,外循环,【,例子,】,编程实现九九乘法表。,分析:,本例中实现每一个一位数,i,显示从,1,乘到,i,,,对于,i,的取值要从,1,取到,9,,所以可以使用两重循环实现,程序设计如图所示。,九九乘法表,本例的界面设计如图,使用,label1,控件实现乘法表的显示。本例使用两重循环实现,其中外层循环实现乘法表中第二乘数,i,取值范围为,1,到,9,,内层循环在外层循环的基础上计算第一个乘数,k,的取值范围为,1,到,i,,,其乘积以及表达式在,label,控件中显示。运行结果如图所示。,【,九九乘法表,】,按钮的,Click,(,单击)事件代码为,:,private void button1_Click(object sender,System.EventArgs,e),label1.Text=;,string s=;,int,sum;,for(int,i=1;i10;i=i+1),s=;,for(int,k=1;k=i;k=k+1),sum=k*i;,s=,s+k.ToString()+i.ToString,()+=+,sum.ToString,()+;,label1.Text+=s+n; /,显示并换行,例,:,利用,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!,static void,Main(string,args,),long s = 0;,long m;,for (,int,i = 1; i = 10;i+),m = 1;,for (,int,j = 1; j = i; j+),m *= j;,s = s + m; /,累加到变量,s,Console.WriteLine(1!+2!+3!+.+10!=0, s);,避免内外循环的变量冲突,避免内外循环的变量冲突,计算,i,的阶乘到变量,m,4.4,跳转语句,使用跳转语句执行分支,,可以使程序执行跳转到程序中其它部分。,C#,中提供四种转移语句:,Goto,Break,Continue,return,。,goto,语句可以将程序控制直接转移给标签制定的语句。但由于,goto,语句改变了程序的正常流程,使得程序特别容易出错,所以尽量不要用。而且,用,goto,语句实现的循环完全可以用循环语句实现,因此,,goto,语句很少使用。,4.4 .1,goto,语句,goto,语句:无条件转移语句,goto,标号,.,标号,:,.,功能:,控制流程直接转到指定标号处,标号可以在,goto,之前或之后。但必须在同一个方法内,goto,标号,.,标号,:,.,控制流程直接转到指定标号处,标号可以在,goto,之前或之后。但必须在同一个方法内,goto,标号,.,标号,:,.,控制流程直接转到指定标号处,例:使用,if,和,goto,计算,1+2+.+100,using System;,class Program,static void,Main(string,args,),int,i = 1, sum = 0;,Loop:,sum += i;,i+;,if (i = 100),goto,Loop;,Console.WriteLine(1+2+3+.+100=0, sum);,Loop,是自定义的标号,(,属于标识符,),例:找到两个数,乘积为,45,,并且两个数都小于,10,,输出这两个数,static void,Main(string,args,),int,i=0, j=0;,for (i = 1; i 10; i+),for (j = 1; j 10; j+),if (i * j = 45),goto,end;,end:,Console.WriteLine(0*1=2, i, j, i*j);,退出多重循环,是,C#,保留,goto,语句的最大价值,只能从循环内层往外层跳转,不能从外层往内层跳转,退出多重循环,是,C#,保留,goto,语句的最大价值,只能从循环内层往外层跳转,不能从外层往内层跳转,使用,goto,的注意事项:,经验证明,使用,goto,语句实现循环,破环了程序的可读性。,现代程序设计中,不提倡使用,goto,来完成循环。保留,goto,语句,应该仅仅用于跳出多重循环这个功能。,用于,switch,语句和循环语句,(while,、,do-while,、,for,、,foreach,),语句中,用于跳出所在的,switch,或者循环语句,break;,例:,break,跳出,for,语句,int,i;,for(i,=1; i=100; i+),Console.WriteLine(i,);,if(i,= 5) break;,Console.WriteLine(Finished,);,1,2,3,4,5,Finished,输出结果:,4.4 .2 break,语句,用于,switch,语句和循环语句,(while,、,do-while,、,for,、,foreach,),语句中,用于跳出所在的,switch,或者循环语句,break;,例:,break,跳出,for,语句,int,i;,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,语句,int,i;,for(i,=1; i=100; i+),Console.WriteLine(i,);,if(i,= 5) break;,Console.WriteLine(Finished,);,用于,switch,语句和循环语句,(while,、,do-while,、,for,、,foreach,),语句中,用于跳出所在的,switch,或者循环语句,break;,1,2,3,4,5,Finished,例:,break,跳出,for,语句,int,i;,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,语句,:,强制退出一层循环,只能够退出一层,!,使用,goto,可以退出多层,for(.; .; .),for(; ;),.,break;,.,Console.WriteLine(n,);,例:判断一个整数,n,是否为素数,算法:,输入,n,从,2,到,n-1,试验是否被,n,整除。如果任意一个能够整除,则不是素数,如果全部试验都不能整除,则为素数,素数:,大于,1,的正整数,如果除了,1,和它本身,没有其它正因子,算法:,输入,n,从,2,到,n-1,试验是否被,n,整除。如果任意一个能够整除,则不是素数,如果全部试验都不能整除,则为素数,算法伪代码,输入,n;,isPrime,= true;,for(i,=2; in; i+),if( n% i=0) / i,被,n,整除,isPrime,= false;,/,现在,isPrime,变量表示,n,是否素数,伪代码是人交流算法时使用的不完整的代码,没有固定的语法,但写出关键的语句,对所有的,i,进行检测是多于的,因为只要有一个,i,被,n,整除,已经可以判定不是素数,不需要继续试验。在这里,可以使用,break,语句跳出循环,输入,n;,isPrime,= true;,for(i,=2; in; i+),if( n% i=0) / i,被,n,整除,isPrime,= false;,/,现在,isPrime,变量表示,n,是否素数,输入,n;,isPrime,= true;,for(i,=2; in; i+),if( n% i=0) / i,被,n,整除,isPrime,= false;,/,现在,isPrime,变量表示,n,是否素数,输入,n;,isPrime,= true;,for(i,=2; in; i+),if( n% i=0) / i,被,n,整除,isPrime,= false;,/,现在,isPrime,变量表示,n,是否素数,static void,Main(string,args,),int,n, k;,bool,IsPrime,= 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);,else Console.WriteLine(0,不是素数, n);,注:在该例子中,没有,break,程序也能正确运行,但有多余计算,continue,语句用于循环语句中,类似于,break,语句,,但仅从当前的循环迭代中退出,然后执行下一次迭代循环。,用于循环语句中(,while, do-while, for,foreach,),continue,结束本次循环,继续下一次循环,continue;,4.4 .3 continue,语句,用于循环语句中(,while, do-while, for,foreach,),continue,结束本次循环,继续下一次循环,continue;,static void Main(string,args,),for(int,i=1;i=10;i=i+1),if(i,5),continue;,Console.WriteLine(i,);,了解,continue,语句的使用,求输出大于或等于,5,的数,运行结果,:,5,6,7,8,9,10,static void Main(string,args,),for(int,i=1;i=10;i=i+1),if(i,5),continue;,Console.WriteLine(i,);,运行结果,:,5,6,7,8,9,10,for(int,n=10; n=20; n+),if(n%3 = 0),continue;,Console.WriteLine(n,);,例:打印出,10,到,20,之间不能被,3,整除的数字,例:输出,100,以内所有能被,5,整除的数,static void,Main(string,args,),for (,int,i = 1; i = 100; i+),if (i % 5 != 0),continue;,Console.Write(0t, i);,static void,Main(string,args,),for (,int,i = 1; i = 100; i+),if (i % 5 = 0),Console.Write(0t, i);,使用,Continue:,不用,Continue:,这两个程序功能相同,static void,Main(string,args,),for (,int,i = 1; i = 100; i+),if (i % 5 != 0),continue;,Console.Write(0t, i);,static void,Main(string,args,),for (,int,i = 1; i = 100; i+),if (i % 5 = 0),Console.Write(0t, i);,for,最适合于已知循环次数的场合,while,最适合等待某个条件的场合,for,语句与,while,语句,4.5,异常处理,using System;,class Test,public static void Main(),int,x;,x =,int.Parse(Console.ReadLine,();,Console.WriteLine(x,* x);,例,运行,10,100,程序正常运行,得到期望结果,abc100,程序出现异常,运行异常,x=int.Parse(100); /,执行正常,x=int.Parse(abc100); /,异常,常见的,C#,异常类,字符串格式错误,System.FormatException,内存分配失败(在,new,对象时),System.OutOfMemoryException,数组下标越界,System.IndexOutOfRangeException,被,0,除,System.DivideByZeroException,System.ArrayTypeMismatchExceiption,算术运算异常,System.ArithmeticException,try-catch-finally,语句的格式,try,/,可能引发异常的语句,catch (,异常类型 异常变量,),/,在异常发生时执行的代码,finally,/,最终必须执行的代码(即使发生异常),如释放资源等,using System;,class Test,public static void Main(),int,x;,try,x =,int.Parse(Console.ReadLine,();,Console.WriteLine(x,* x);,catch (,FormatException,),Console.WriteLine,(,输入格式不对,);,using System;,class Test,public static void Main(),try,int,x = 5;,int,y = 0;,int,z;,z = x / y;,Console.WriteLine(z,);,catch (,DivideByZeroException,),Console.WriteLine,(,被,0,除,);,finally,Console.WriteLine,(,谢谢使用,再见,);,C#,中的异常用于处理系统级和应用程序级的错误状态,,例如:零除异常、下标越界、,I/O,错误等,通过使用,try,语句来定义代码块,实现尝试可能未成功的操作、处理失败,以及在事后清理资源等,try,语句有以下三种可能的形式,try-catch,语句:,一个,try,块后接一个或多个,catch,块。,try-finally,语句:,一个,try,块后接一个,finally,块。,try-catch-finally,语句,:一个,try,块后接一个或多个,catch,块,后面再跟一个,finally,块。,【,例,4.23,】,异常处理示例:,打开并写入文件,如果文件为只读,则会产生异常,UnauthorizedAccessExceptions,实验和习题,实验,2-2,实验,2-7,(顺序、,if,、,switch,),实验,3-1,实验,3-8,(循环、跳转、异常),实践题:四,.25,四,.33,Ch04.,程序流程和异常处理,单选题,填空题,思考题,实践,题,四,.1,四,.24,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 临时分类 > 职业技能


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!