C#第5章控制结构与算法12H.ppt

上传人:za****8 文档编号:13189217 上传时间:2020-06-06 格式:PPT 页数:46 大小:451KB
返回 下载 相关 举报
C#第5章控制结构与算法12H.ppt_第1页
第1页 / 共46页
C#第5章控制结构与算法12H.ppt_第2页
第2页 / 共46页
C#第5章控制结构与算法12H.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
高级编程技术VisualC#.NETProgramming,聊城大学理工学院曹银杰caoyinjie,第五章:控制结构与算法1,5.1算法基础5.2顺序结构5.3选择结构程序设计5.4循环结构,5.1算法基础,5.1.1算法定义及特征5.1.2ANSI流程图算法5.1.3结构化程序设计方法,5.1.1算法定义及特征,什么是算法:是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。算法举例:辗转相除法写出求两个自然数的最大公约数Step1:输入两个自然数m,nStep2:rmmodnStep3:mn;nrStep4:若r0则重复Step2、Step3步(循环)否则Step5Step5:输出m,m即为m和n的最大公约数算法的特征:确定性、可行性、有穷性、输入性、输出性算法的描述方法很多:自然语言(如英语、汉语等)、图形或符号等描述。,开始、结束点,数据输入、输出,处理,判断,流线,连接点,5.1.2ANSI流程图描述算法,ANSI规定的常用流程图符号,具有直观,易懂特点。,例1:辗转相除法写出求两个自然数的最大公约数,例2:Ax2+Bx+C=0的实根解,Ax2+Bx+C=0的实根解分析:如何求解求解步骤,Ax2+Bx+C=0的实根解,开始输入A、B、C的值B2-4*A*C0?否是求方程根输出结果结束,例3:求sum=n!,分析:如何求解求解步骤,求sum=n!,可以看出,流程图可很清楚的表示出解决问题的步骤,编程人员按照流程图的思路编写代码就可以了。编程之前,先用流程图表示算法!,5.1.3结构化程序设计方法,结构化的基本思路是将问题进行有效分解,使大问题转化为小问题(模块),自上而下、逐步细化,从而使问题简化、便于解决。结构化程序的每个模块内部必须由若干个基本的程序结构组成,使程序的结构更加清晰,易读易改。,结构化程序设计方法,1966年Bohra和Jacopin提出了结构化算法的3种基本结构单元:顺序结构选择结构循环结构由以上三种基本结构构成的程序,称为结构化程序。结构化程序以及三种基本结构都具有以下特点:只有一个入口只有一个出口无死语句-每个框内语句均有可能执行无死循环由三种基本结构组成的算法结构,可以解决任何复杂问题。,顺序结构,顺序结构是一种最简单、最基本的结构,在顺序结构内,各块是按照它们出现的先后顺序依次执行。,选择结构,选择结构中包含一个判断框,根据给定的条件p是否成立而选择执行A框或B框(单分支无B)。,循环结构,在一定条件下反复执行一个程序块的结构。根据先、后执行循环体的方式分为两种循环。,while循环:先执行条件,p成立时执行循环体,否则退出循环。,dowhile循环:先执行循环体,再执行条件,p不成立时执行循环,否则退出循环。,5.1.4用N-S流程图表示算法,N-S结构化流程图:全部算法写在一个矩形框内,去掉了带箭头的流程线。,当条件p满足时,执行循环中指令,5.2顺序结构,顺序结构是程序设计中最简单的结构,也是最基本的结构,它就是按照程序书写的顺序逐句执行程序中的指令。如赋值语句、输入/输出等:给变量赋值语法:变量名表达式设置对象的属性语法:对象名.属性=表达式获取对象的属性语法:变量名对象名.属性,privatevoidbutton1_Click(objectsender,EventArgse)intr=5;/圆的半径doublearea=3.14*r*r;/计算圆的周长/显示圆的周长MessageBox.Show(area.ToString();,5.3选择结构程序设计,人们面临选择的时候精神会变得脆弱,这就是为什么我们总是轻信偷看来的答案。因此,选择对于人类来说是一件复杂的事情,而对于计算机来说,则非常简单。它头脑简单,因而永远不会象人一样遇到棘手事情时犹豫不决。选择结构解决的是程序流向问题,即在某种条件满足时,程序分别执行那些语句。包括多种格式的IF语句和switch语句,可方便地实现各种程序分支。5.3.1单分支的IF语句5.3.2二分支的if语句5.3.3多分支的if语句5.3.4多分支switch语句5.3.5分支嵌套举例,5.3.1单分支的if语句,条件表达式“()”不能省略,结果必须是一个逻辑值,为true时执行语句块A,为false时直接执行该结构下面的语句。语句块A只有一句时“”可省略。,if(条件表达式),5.3.2二分支的if语句,条件表达式值为true时执行语句块A,否则执行语句块B,然后继续执行该结构下面的语句。,if(条件表达式)else,若语句块只有一句,大括号可省略。,三元运算符等价二分支语句,例:s=x!=0.0?Math.Sin(x)/x:1.0;等价于privatevoidbutton1_Click(objectsender,EventArgse)doublex=0.1,s=0;if(x!=0.0)s=Math.Sin(x)/x;elses=1.0;MessageBox.Show(s.ToString(),标题);,二分支举例:MessageBox应用,消息框语法:,MessageBoxIcon.Information共9种消息提示图,caption消息框的标题,MessageBoxButtons.YesNo,text显示的消息,MessageBox.Show(text,caption,MessageBoxButtons,MessageBoxIcon);,共有8种按钮Abort、Cancel、Ignore、No、None、Ok、Retry、Yes的6种组合形式。,MessageBox.Show()方法返回一个MessageBoxResult值,该值指定用户单击了消息框上的哪个按钮。DialogResult有8个属性值对应的各个按钮,与Show方法返回值配合使用即可。,二分支的if语句举例:,privatevoidbutton1_Click(objectsender,EventArgse)if(MessageBox.Show(保存文件,保存,MessageBoxButtons.YesNo,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1)=DialogResult.Yes)/保存文件所用的代码MessageBox.Show(你按了Yes按钮!);else/不保存文件所用的代码MessageBox.Show(你按了No按钮!);,5.3.3多分支的if语句,即可做出多次判断,又保证计算机至少执行一些代码。,if(条件表达式1);elseif(条件表达式2);elseif(条件表达式n);else;,最后一个else子句没有if。,多分支的if语句举例,privatevoidbutton1_Click(objectsender,EventArgse)intscore=Convert.ToInt32(textBox1.Text);if(score100|score90)label3.Text=A;elseif(score80)label3.Text=B;elseif(score70)label3.Text=C;elseif(score60)label3.Text=D;elselabel3.Text=E;,成绩分级:,5.3.4多分支switch语句,switch流程图:,switch语法,switch(表达式)case:;break;case:;break;.default:;break;,表达式值可以是整型或字符串。常量表达式值可以是直接常量,也可是一个符号常量。case子句必须用break语句中断语句组的执行。空case子句可不加break。Default块是可以省略。,switch举例1:,stringgrade=良;switch(grade)/空的case子句间不加break:case优:case良:case中:textBox1.Text=通过;break;case差:textBox1.Text=不通过;break;default:textBox1.Text=未知;break;,switch举例2:,在switch语句中,可使用gotocase的方式控制case子句的执行。,switch(grade)case优:gotocase通过;case良:gotocase通过;case中:gotocase“通过”;case差:textBox1.Text=不通过.;break;case通过:textBox1.Text=通过.;break;default:textBox1.Text=未知.;break;,5.3.5选择嵌套,求一元二次方程的根一元二次方程的根有下列三种情况:(1)当a=0、b=0时,方程无解;(2)当a=0、b0时,方程只有一个实根;(3)当a0时,方程有两个根(两个实根或两个虚根)在窗体上添加5个文本框分别为a、b、c的输入,x1、x2的输出,再添加5个标签注释每个框,添加一个命令按钮,在其Click事件过程中编写代码。,求一元二次方程的根,privatevoidbutton1_Click(objectsender,EventArgse)inta=Int16.Parse(textBox1.Text);intb=Int16.Parse(textBox2.Text);intc=Int16.Parse(textBox3.Text);Singlesing1=b*b-4*a*c;doublesing2=Math.Sqrt(Math.Abs(sing1)/(2*a);if(a=0)if(b=0)textBox4.Text=方程无解;textBox5.Text=方程无解;elseSinglex1=-c/b;textBox4.Text=x1.ToString();textBox5.Text=只有一个解;,elseSinglesing0=-b/(2*a);if(sing10)textBox4.Text=sing0.ToString()+sing2.ToString()+i;textBox5.Text=sing0.ToString()+-+sing2.ToString()+i;elsetextBox4.Text=(sing0+sing2).ToString();textBox5.Text=(sing0-sing2).ToString();,5.4循环结构,循环就是重复执行一些语句,C#提供了4种不同的循环机制:5.4.1while循环5.4.2do循环5.4.3for循环5.4.4foreach循环5.4.5循环的中断与无限循环,5.4.1while循环,while循环:当循环条件成立时才执行的循环。先执行条件,p成立时执行循环体,否则退出循环。,while();,while循环示例,/计算1到100的累加,结果保存在变量sum中。privatevoidbutton1_Click(objectsender,EventArgse)intiteratorCount=0;longsum=0;while(iteratorCount100)iteratorCount+;sum+=iteratorCount;textBox1.Text=1到100的累加和:+sum.ToString();,5.4.2do循环,dowhile循环:与while略有不同,先执行循环体,再执行条件,p不成立时执行循环,否则退出循环。,do;while();,do循环示例,/计算1到100的累加,结果保存在变量sum中。privatevoidbutton1_Click(objectsender,EventArgse)intiteratorCount=0;longsum=0;doiteratorCount+;sum+=iteratorCount;while(iteratorCount100);textBox1.Text=1到100的累加和为:+sum.ToString();/从结果可以看出与while循环有同样的结果。,5.4.3for循环,for语句用于重复执行特定次数的循环:for(;);小括号必有;可在初始化计数器的同时定义计数器变量,如inti=1;循环条件,如i10;计数器增量,如i+。,for循环举例:打印九九乘法表,privatevoidbutton1_Click(objectsender,EventArgse)/inti,j;/可在初始化计数器的同时定义计数器变量:for(inti=1;i10;i+)for(intj=1;j=i;j+)textBox1.Text+=j.ToString()+*+i.ToString()+=+(i*j).ToString()+;textBox1.Text+=r+n;/回车换行符,5.4.4foreach循环,foreach循环为数组或对象集合中的每个元素重复一个循环体。对象集合如System.Collection命名空间中的集合类、以及用户定义的集合类。语法:foreach(in)/循环体数据类型与数组或对象集合的元素对象一致;循环次数就是数组或对象集合的元素个数;循环体含有变量,就是数组或对象集合的每个元素;foreach块的任何点使用break、goto、return或throw语句退出循环,用continue直接进入循环的下一轮迭代。,foreach循环举例,privatevoidbutton1_Click(objectsender,EventArgse)stringstrs=newstringAB,CD,EF,GH;foreach(stringiinstrs)textBox1.Text=textBox1.Text+i+;,5.4.5循环的中断与无限循环,当需要更为精细的控制循环的执行时,可使用如下语句对循环进行控制:break:终止循环。Continue:终止当前的循环(继续执行下一次循环)。goto:可以跳出循环,到己标记好的位置上。return:跳出循环及其包含的函数。,1、循环的中断break,break语句立即跳出当前循环,转去执行循环体后的一条语句。privatevoidbutton1_Click(objectsender,EventArgse)inti=1;while(i=10)if(i=6)break;textBox1.Text=textBox1.Text+i.ToString()+;i+;textBox1.Text=textBox1.Text+i=+i.ToString();,2、循环的中断continue,使用continue语句用来立即终止本轮循环,开始下一轮循环的执行。privatevoidbutton1_Click(objectsender,EventArgse)inti=0;while(i+y,返回x的值elsereturny;/返回y的值,5、无限循环,while和for循环无法确定循环在什么时候结束,在这种情况下可使用无限循环。,while(true)/dosomething.if(someCondition)break;,for(;)/dosomething.if(someCondition)break;,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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