




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第,4,章,结构化程序设计,内容提要:,结构化程序的三种基本结构,算法、流程图、,if,语句、,分支语句,循环语句、跳转语句,异常处理的概念,try/catch,语句、,throw,语句和,finally,语句,目的要求:,理解算法的概念,掌握,if,语句、,switch,分支语句、循环语句和异常处理语,句的含义,重点难点:,if,语句、循环语句和异常处理语句,4.1,结构化程序设计的概念,4.1.1,结构化程序设计的概念及算法的概念,结构化程序设计方法,是比较广泛使用的程序设计方,法。,用这种方法编制的程序具有结构清晰,可读性强,易,查错等特点。,结构化程序设计有三种基本结构,即:,顺序结构
2、、选择,结构、循环结构,。每种基本结构可以包含若干条语句。,程序设计的主要步骤:,(1),分析问题。,(2),确定算法。,(3),画出程序流程图。,(4),编写程序。,(5),调试程序。,(6),建立健全的文档资料。,最关键的是第,2,个步骤,即“算法设计”。,所谓“算法”,粗略地讲,是为解决一个特定问题而采取的确定的有,限,的步骤。,4.1.2,流程图,流程图,(Flowchart),,亦称框图,它是用一些几何框,图、流向线和文字说明表示各种类型的操作。,计算机算法可以用流程图来表示。,4.2,顺序结构,4.2.1,顺序结构的概念:,有些简单的程序是按程序语句的编写顺序依次执行,的,这种结构
3、称为顺序结构。,4.2.2,顺序结构的实例,例:编写程序计算圆的周长和面积。,using System;,class Circle,static void Main( ),const double PI= 3.141;,double R, L, S;,Console.Write(,请输入圆的半径值:,),;,R=double.Parse(Console.ReadLine( );,L=2*PI*R;,S=PI*R*R;,Console.WriteLine(,圆的周长为:,0,,,L),;,Console.WriteLine(,圆的面积为:,0,,,S),;,Parse( ),方法,:,主要用于将
4、,数字的字符串,表示形式转换为它的,等效,的其他基本数字类型。,例:,string s=“18”;,int a=int.Parse(s)-10; /a=8,int b=a+int.Parse(Console.ReadLine();,练习:,1.,下列程序运行后,输出的结果是(,double x=17.9;,int y=3;,)。,y=(int)x%5;,Console.WriteLine(y);,2.,若,x=10, y=20, z=0,则表达式,“,(m=(xy)?x:y)z)?m:z”,的值为,( ),。,4.3,选择结构,4.3.1,选择结构的概念,选择结构,是一种常用的主要基本结构,是
5、计算机,根据所给定选择,条件为真与否,,而决定从各实际可能的,不同操作分支中执行某一分支的相应操作。,4.3.2,条件语句,1,if,语句,语法形式:,if,(,表达式,),语句;,说明:如果表达式的值为,true,,则执行后面,if,语句所控制的,语句;如果表达式的值为,false,,则不执行,if,语句控制的语句,,而直接跳转执行后面的语句。,注意:如果,if,语句块中只有,一条,语句,则大括号,“,”,可以,省略。,编程:计算下面公式中的,b,的值。,2a+1 (a 100),b=,a (a,100),using System;,class value, static void Main
6、( ),Console.Write(,请输入,a,的值:,);,int a=int.Parse(Console.ReadLine();,int b=a;,if(a=100),b=2*a+1;,Console.WriteLine(b=0,b);,编程,:,输入三个数,将它们从大到小排序,int a, b, c, t=0;,Console.Write(,“,请输入第一个数,:,”,);,a= int.Parse(Console.ReadLine();,Console.Write(,“,请输入第二个数,:,”,);,b= int.Parse(Console.ReadLine();,Console.W
7、rite(,“,请输入第三个数,:,”,);,c= int.Parse(Console.ReadLine();,if,(a b),/,本条件语句实现,a=b, t = a; a = b; b = t; ,if,(a c),/,本条件语句实现,a=c, t = a; a = c; c = t; ,if,(b c),/,本条件语句实现,b=c, t = b; b = c; c = t; ,Console.WriteLine(,“,排序结果为,”,a,b,c);,2,if,else,语句,语法:,if,(,表达式,),语句块,1,;,else,语句块,2,;,说明:如果表达式的值为,true,,则执
8、行,if,语句,所控制的,语句块,1,;如果表达式的值为,false,,则执行,else,语句,所控制,的,语句块,2,。,例:输入一个数,对该数进行四舍五入。,using,System;,class,Value,static,void,Main(,),Console.WriteLine(,“,请输入,a,的值:”,);,double,a=double.Parse(Console.ReadLine(,);,int,b;,if(a-(int)a=0.5),b=(int)a+1;,else,b=(int)a;,Console.WriteLine(0,进行四舍五入后的值为:,1,,,a,,,b),;
9、,在,if,else,语句中可以,嵌套,使用多层,if,else,语句,如:,if,(,表达式,1),if(,表达式,2),if(,表达式,3),语句,1,;,else,语句,2,;,else,语句,3,;,else,语句,4,;,在使用这种结构时,要,注意,else,和,if,的配对关系,,其原则是:,从第,1,个,else,开始,一个,else,总和它上面离它最近的可配对的,if,配对。,例:,int,a=int.Parse(Console.ReadLine(,);,if,(a0),if,(a20),a=2*a;,if,(a100),a=a-50;,else,a=a+10;,/,这个,el
10、se,与,if,(a100),相配,else,a=-a;,/,这个,else,与,if,(a0),相配,Console.,WriteLine(“a=”,a),;,练习:,1.,若,int m, n, r;,则以下正确的是(,),A,if (mn) r-; B,if (m= =n) r-;,C,if (!m) r-; D,if (m=n) r-;,2.,程序改错。,if(x=1),y+=5;,else,;,y+=10;,思考与练习,1.,为铁路编写计算运费的程序。假设铁路托运行李,规定每张,客票托运费的计算方法是:,行李重量不超过,50 kg,时,每千克,0.25,元;超过,50 kg,而不超,
11、过,100 kg,时,其超过部分每千克,0.35,元;超过,100 kg,时,其超过,部分每千克,0.45,元。,(编写完整的程序,上机实现),分析:托运费的分段函数是什么?,答:设行李重量为,w,公斤,应付托运费为,x,元,则托运费的分段函数,是:,(,1,),w=50,时,,x=0.25*w,(,2,),50w=100,时,,x=0.25*50+0.35*(w-50),(,3,),w100,时,,x=0.25*50+0.35*50+0.45*(w-100),double w,x=0;,Console.Write(,“,请输入重量”,);,w = double.Parse(Console.R
12、eadLine(),if,(w = 50),x = 0.25 * w,if,(,w50 ,if (w100),x = 0.25 * 50 + 0.35 * 50 + 0.45 * (w -,100),Console.WriteLine(,“,运费为,0,”,x);,3,else,if,语句,else,if,语句是,if,语句和,if,else,语句的组合,其一般形式如下:,if,(,表达式,1),语句,1,;,else,if,(,表达式,2),语句,2,;,else,if,(,表达式,n-1),语句,n-1,;,else,语句,n;,例:编写一个实现如下函数值的程序,-1,x0,f(x)=,0
13、,x=0,1,x0,using System;,class Test, static void Main( ), Console.Write(“,请输入,x,的值,: ),;,double x=double.Parse(Console.ReadLine( );,int y;,if (x0),y=1,;,else if (x=0),y=0,;,else,y=-1;,Console.WrteLine(“Y=0“,y),;,4.3.3,分支语句,格式:,switch(,表达式),case,常量表达式,1:,语句,1;,break;,case,常量表达式,2:,语句,2;,break;,default
14、:,语句,n;,break; ,注意:,C#,要求每个,case,后使用,break,语句或跳转语句,goto,。所,有常量表达式的值不能相同。,编程,:,查询学生姓名,输入一个字符,如输入“,k”,时,显示,Kate,;输入“,m”,时,显示,Mary,;输入“,r”,时,显示,Rose,;输入“,T”,时,显示,Tom,;输入其,他字符时,显示,Other,Students,。,Console.Write(“Enter a character:);,char Name=(char)Console.Read();,switch(Name),case k:,Console.WriteLine(
15、Kate.);,break;,case m:,Console. WriteLine(Mary.);,break;,case r:,Console. WriteLine(Rose.);,break;,case T:,Console. WriteLine(Tom.);,break;,default:,Console.WriteLine(Other students. );,break;,注意:在,C#,中,两个或更多的,case,语句可以共用同一程序代码,:,例:,using System;,class Demo,public static void Main(),Console.Write(en
16、ter i=);,int i=int.Parse(Console.ReadLine();,switch(i),case 1:,case 2:,case 3:,Console.WriteLine(“i is 1,2 or 3.);,break;,case 4:,Console.WriteLine( i is 4. );,break;,思考与练习,1.,以下程序运行时,输出结果是什么?,int y = 1,x;,if (y!=0),x = 5;,x=3,else if y 0,x = 4;,else,x = 3;,Console.WriteLine(x=0,“, x);,4.4,循环结构,循环,是
17、指在指定的条件下多次,重复执行,一组语句。被重复,执行的一组语句称为,循环体,。,采用循环结构可以解决一些按一定规则重复执行的问题。,例如,统计一个班几十名学生,甚至全校几千名学生的学期成,绩,如求平均分、不及格人数等。,4.4.1,循环结构的概念,循环结构按其循环体是否嵌套从属的子循环结构,可分为,单循环结构,和,多重循环结构,。,4.4.2,while,语句和,do,while,语句,1,while,语句,语法格式:,while,(,条件表达式,),循环体,例,:,写出下列程序的运行结果。,using,System;,class,Sumw,static,void,Main(,),int,n
18、=1;,while,(n6),Console.,WriteLine(“n=,0,”,n);,结果,:,n+;,例,:,使用,while,语句,编程计算,1+2+,+1000,。,using System;,class Sumw,static void Main( ),int i=1, sum=0;,while (i=1000),sum+=i;,i+;,Console.WriteLine(“1+2+1000=0”,sum);,思考与练习,(,1,)如果要实现,sum=1+2+3+,+10,,,怎样修改程序,?,while(i=,10),(,2,)如果要实现,sum=30+31+32+,+50,,
19、,怎样修改程序,?,int i =,30;,While(i=,50),例,:,使用,while,语句,编程计算,10,的阶乘值。,using,System;,class,Value,static,void,Main(,),int,i=10;,long,x=1;,while,(i0),x*=i;,i-;,Console.WriteLine(,“,10!=0,”,x);,练习,:,1.,下列程序所计算的数学式是,(,int,a=0,i=2;,while(i100),a+=i;,i+=2;,A.,B.,C.,D.,a=1+2+4+,+98,a=1+2+4+,+100,a=2+4+6+,+98,a=2
20、+4+6+,+100,),循环语句允许,嵌套,,即,while,语句里面还可以再套,while,语句。,例:写出下列程序的运行结果。,using,System;,class,example,static,void,Main(,),int,i=1,j,s=0;,while(i=3),j=1;,while(j=2),s+;,j+;,i+;,Console.WriteLine(,“s,=0,”,s);,练习,:,1.,以下程序段的循环次数为(,int i=0, j=0;,),while(i3), while(j2),j+;,i+;,2,do-while,语句,语法格式:,do,循环体;,while,
21、(条件表达式);,循环语句,true,条件表达式,false,false,条件表达式,true,循环语句,dowhile,执行过程,while,执行过程,例:写出下列程序的运行结果。,using,System;,class,TestDoWhile,static,void,Main(,),int,x,y=0;,do,x=y+;,Console.WriteLine(x);,while(y5);,结果:,例:编程利用,do-while,语句实现,100,以内的能被,5,整除的数累加。,using,System;,class,EvenSum,static,void,Main(,),int,i=5,es
22、um=0;,do,esum+=5;,i+=5;,while(i=100);,Console.WriteLine(esum=0,esum);,例,:,使用,do-while,语句,编程计算,1!+2!+10!,。,using,System;,class,Sum,static,void,Main(,),int,i=1,j;,long,m,sum=0;,do,m=1;,j=1;,do,m*=j;,j+;,while(j=i);,sum+=m;,i+;,while,(i=10);,Console.WriteLine(,“,1!+2!+,+10!=0,”,sum);,练习:,1.while,语句循环结构
23、和,do.while,语句循环结构的区别在于(,A,while,语句的执行效率较高,B,do.while,语句编写程序较复杂,C,无论条件是否成立,,while,语句都要执行一次循环体,),D,do.while,循环是先执行循环体,后判断条件表达式是否成,立,而,while,语句是先判断条件表达式,再决定是否执行循环,体,4.4.3 for,语句和,foreach,语句,1,for,语句,语法格式:,for,(表达式,1,;表达式,2,;表达式,3,),循环体;,例:使用,for,循环语句,编程输出,120,的每个奇数的平方。,using System;,class square,static
24、 void Main( ),int s;,for (int i=1;i20;i+=2),s=i*i;,Console.Write(0t , s);,结果:,for,语句的几点说明:,(,1,),如果对循环变量在,for,语句前已赋初值,则在,for,语句中可省,略表达式,1,,但要,保留其后的分号,。,.,int,i=1;,for(,;i=20;i+),.,(,2,),for,语句可以省略表达式,2,,即不判断表达式条件是否成立,,循环将一直进行下去,但,应保留表达式,2,后面的分号,。此时,需,要在循环体中,添加跳出循环的控制语句,。,例:,for(int,i=1;,;i+),s=i*i;,
25、Console.WriteLine(0t,s);,if,(i=10),break;,(,3,),for,中可以省略表达式,3,。此时应在循环体中添加改,变循环变量值的语句,以结束循环。,例:,for(,int,i=1;,i=10;,),s=i*i;,Console.WriteLine(0t,s);,i+;,(,3,),for,语句中的,3,个表达式,可同时省略,。,int,i=1;,for(,;,;,),s=i*i;,Console.WriteLine(0t,s);,i+;,if,(i=10),break;,编程:用,for,语句输出,10,!的值,:,using System;,class
26、Test, static void Main( ), int i=1;,long m=1;,for(i=1;i=10;i+),m*=i;,Console.WriteLine(0!=1,i-1,m);,结果:,for,循环语句也可以嵌套。,例:利用,for,循环嵌套语句,求,1!+2!+3!+.+10!,的和。,using System;,class MultiSum, static void Main( ),long s=0, m=1;,for (int i=1; i=10; i+), m=1;,for (int j=1;j=i; j+),m*=j;,s=s+m;,Console.WriteL
27、ine(1!+2!+3!+.+10!=0 , s);,结果:,2,foreach,语句,foreach,语句用于,列举,集合中的每一个元素,并且通,过执行循环体对每一个元素进行操作。,foreach,语句只能,对集合中的元素进行循环操作。,foreach,语句的一般语法格式如下:,foreach,(,数据类型,标识符,in,表达式,),循环体,例,:,写出下列程序段的结果:,using System;,class Test, static void Main( ), double Array=16,12,31,8,21;,int intArray=1,2,3;,foreach(int i in
28、 intArray),Console.WriteLine(Arrayi );,结果:,练习:,1,以下程序段的循环次数为(,),int a=new int 1,2,3 ,4,5;,foreach(int i in a),Console.WriteLine(t);,A,0 B,4,C,5 D,6,2.,以下程序运行后,变量,a,的值为,( ),int a=100;,for(int j=10;j0;j-=2),a-=j*3;,A,100 B,16,C,13 D,10,4.4.4,跳转语句,在,C#,中还可以用跳转语句来改变程序的执行顺序。,1,break,语句,在,switch,语句中,,brea
29、k,用来使程序流程跳出,switch,语,句,,,继,续执行,switch,后面的,语句;在,循环语句,中,,,break,用来从当前所在的循环内跳出。,语法格式:,break;,编程,:,任意给定一个整数,n,,判定其是否为素数(即只能被,1,和自,身整除)。,using System;,class Prime, static void Main(), Console.Write(,输入,n,的值:,);,int i=1,n;,n=int.Parse(Console.ReadLine();,while(+in),if(n%i=0),Console.WriteLine(0,不是素数,,,n);
30、,break;,if(i=n),Console.WriteLine(0,是素数,,,n);,2.,continue,语句,continue,语句用于循环语句中。,continue,语句并不,是跳出当前的循环,它只是终止一次循环,接着进行下,一次循环是否执行的判定。,语法格式:,continue;,写出下列程序段的运行结果:,1. int x=0,y=0; 2. for(int i=1;i10;i+),do Console.Write(i+ “ ”);, if (i%2=0),x=x+1; continue;,if (x%2!=0) Console.WriteLine( );,continue;
31、 ,结果,:,y=y+1;,while(x=10);,Console.WriteLine(“y=0”,y);,结果,:,用,continue,语句编程,:,输出,100,以内所有能被,7,整除的数。,using System;,class Output, public static void Main(), for(int j=1;j=100;j+),if(j%7!=0),continue;,Console.Write(“0,t”,j);,3,goto,语句,C#,中,,goto,语句是无条件跳转语句。当程序流程遇到,goto,语句时,就跳到它指定的位置。,操作时,,goto,需要一个标签,标
32、签是后跟冒号(,:,)的合法,的,C#,标识符,标签放在,goto,语句要跳转到的那一条语句的前面。,例如:,end:,a=i+8,语法格式:,goto,标签;,例:,goto,end;,标签必须和,goto,用在同一个方法中。,例:,using System;,class Test,static void Main(),goto H;,W:Console.WriteLine(“world”);,goto X;,H: Console.Write(“world”);,goto W;,X:Console.WriteLine(“Good bye!”);,注意:,goto,语句这种无条件跳转程序执行流
33、程的功,能,破坏了程序的可读行,在现在的程序设,计中,已不提倡使用,goto,语句。,4.5,异常处理,4.5.1,异常处理的概念,异常,:就是程序运行时发生的错误或某种意想不到的,状态。如溢出、被零除、数组下标超出界限以及内存不够,等。,通过使用,C#,异常处理系统就可以处理这些错误。,C#,为常见的程序错误定义了许多标准的异常,如除,0,错,误,(divide-by-zero),、访问越界(,index-out-of-range),等。,例如:当企图除以,0,(即除数是,0,)时,就会产生一个,DivideByZeroException,异常。,C#,通常在两种情况下产生异常:,(,1,)
34、在,C#,语句和表达式的处理过程中激发了某个异常的,条件,使得操作无法正常结束,引发异常。,(,2,),throw,语句抛出异常,。,例如:当企图除以,0,(即除数是,0,)时,就会产生一个,DivideByZeroException,异常。,using System;,class NotHandled,static void Main(),int a=0, b=5;,Console.WriteLine(Before exception is generated. );,/,产生除,0,异常,b=b/a;,当程序有异常发生时,,C#,运行系统会捕获到它,这时,C#,运,行系统报告错误,并结束程
35、序。,例如:,using System;,class NotHandled,public static void Main(),int nums=new int4;,Console.WriteLine(“Before exception is generated.”);,/,产生数组越界访问异常,nums 7=10;,当发生数组越界错误时,程序停止执行,并显示如下错误信息:,4.5.2,异常的处理,捕获异常并处理的好处是不用把那些令人讨厌的系统默认,的异常消息提示给用户,而且能使产生异常的应用程序能够继,续执行。,在,C#,中用四个关键字:,try,、,catch,、,throw,、,finally,来管理,C#,异常处理。,1.,使用,try,和,catch,语句来捕获异常,异常处理的核心是,try,和,catch,。但这两个关键字得,配合使用,,不可以单独用,catch,。,当,try,中的一个异常被抛出时,它被相应的,catch,语,句,捕获,,该语句然后处理异常。,使用不带参数的,catch,语句可以捕获所有的异常。,例如:,using System;,class ExcDemo1, public st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学2025年寒假工作计划
- 国家健康教育特色学校计划
- 放化疗护理常规
- 编译打包部署培训
- 左侧腹股沟肿物鉴别诊断
- 小脑肿瘤的临床诊疗策略
- 肾脏内科业务查房
- 公交安全生产月
- 【酒泉】2025年甘肃酒泉市瓜州县事业单位招聘21人笔试历年典型考题及考点剖析附带答案详解
- 幼儿教学多媒体课件
- 2025年小学教师班主任能力提升计划
- 盐碱项目可行性研究报告
- 哈尔滨体彩考试题及答案
- 探索基于数字孪生技术的三峡升船机智能平台的构建与应用
- 2025年湖北省中考道德与法治真题含答案
- 2025年全国统一高考英语试卷(全国一卷)含答案
- 福建省厦门市2024年高一下学期期末考试英语试题含解析
- 注塑模具课程设计说明书罩盖
- 2022年杭州市中小学教师职称考试卷
- 广东佛山生育保险待遇申请表
- 机械原理课程设计说明书精压机
评论
0/150
提交评论