




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/11/24,1,VisualBasic程序设计,第十讲第四章程序流程(二),2019/11/24,2,4.4循环结构,ForNext循环,DoLoop循环,2019/11/24,3,4.4循环结构,循环结构是算法语言中一种重要的结构,它的应用非常广泛,把要重复执行的语句放在循环结构中,就可避免多次重复输入。在使用循环结构时,有些循环的次数事先可以确定,这种循环称为确定性循环。有些循环的循环次数是不能事先确定,需要根据条件来决定是否继续循环,我们称这种循环为不确定循环。,2019/11/24,4,在VB程序设计语句中有二种形式的循环结构。其中For循环结构用来设计循环次数可以事先确定的循环结构。即循环次数已知循环结构。而DoLoop循环结构一般用来设计循环次数无法事先确定的循环结构。,2019/11/24,5,4.4.1For循环结构,For循环结构的一般形式:For循环控制变量=初值To终值Step步长语句组1ExitFor循环体语句组2Next循环控制变量,2019/11/24,6,For循环结构-格式,说明:For循环以For语句开始,以Next语句结束。循环变量用来控制循环次数;初值代表循环变量的初始被赋的值;终值代表循环变量最终能继续进行循环的值;步长代表每循环一次循环变量增长的值。,2019/11/24,7,循环的次数可以从循环初值、终值、和步长计算出来:R=INT(终值-初值+步长)/步长)例如:ForI=1To10Step2循环次数R=INT(10-1+2)/2)=INT(5.5)=5ForI=5.0To25.Step0.5R=INT(25.-5.0+0.5)/0.5)=INT(41.0)=41,For循环结构-循环次数的计算,2019/11/24,8,For循环结构-循环结构的一些规定,1、循环变量初值、终值和步长分别可以是常数、变量和表达式。如果是变量,则它应是预先被赋值。如果是表达式,则应先计算表达式的值。2、初值、终值和步长的值可以为正或负,初值、终值可以为零。但步长不能为零。例如:ForI=-1To3Step-1的循环次数为:R=INT(-3-(-1)+(-1)/-1)=3。,2019/11/24,9,即当I的值为-1,-2,-3时,执行正常循环,当I的值变成-4时不再执行循环时。3、脱离循环的条件是:循环变量沿变化的方向超过终值。如果步长的值为正,则“超过”意味着“大于”,如果步长为负,则“超过”意味着“小于”。,For循环结构-循环结构的一些规定,2019/11/24,10,4、如果计算出循环次数R0,按R=0处理,即一次也不执行循环体。5、如果循环变量的初值、终值和步长类型和循环变量的类型不一致,则按赋值的规则处理,即先将其类型化成循环变量的类型,然后进行处理,即先将初值、终值和步长的类型化成循环变量的类型,然后进行处理。,For循环结构-循环结构的一些规定,2019/11/24,11,1、执行For循环语句时先将初值赋给循环控制变量。2、再利用公式计算循环次数。计算循环次数的公式:R=Int(终值-初值+步长)/步长),For循环结构-循环结构的执行过程,2019/11/24,12,3、检查循环次数,若R=0(或R0,则执行循环体。4、执行Next语句时,循环变量增值步长。循环次数R-1。5、返回前面步骤3,重复执行步骤3,4。,For循环结构-循环结构的执行过程,2019/11/24,13,6、其中ExitFor为在满足一定条件下退出For循环结构。若For循环的语句为:For循环变量=e1Toe2Stepe3循环体Next循环变量则其执行过程可用下页的流程图表示:,For循环结构-循环结构的执行过程,2019/11/24,14,图4-15For循环执行过程流程图.,当RjThenLabel2.Caption=Text1.Text表示从第2*i列开始输出内容。编写代码如下:,2019/11/24,32,OptionExplicitPrivateSubCommand1_Click()DimaAsString,iAsInteger,jAsIntegera=*Form1.FontSize=14Fori=1To10PrintTab(2*i);PrintaNextiEndSub,表示从每一行的第2*i列开始输出变量a的值。,2019/11/24,33,例4-11在窗体上输出下列图案,2019/11/24,34,问题分析:该图案共有十行,每行有不同的星号。第一行有一个“*”,第二行有三个“*”,第三行有五个“*”,要想输出该图案应使用双层For循环结构,外层循环决定输出的行数,内层循环决定每行输出的星号数。可以先用变量a存放一个星号。使用语句:a=“*”由于要输出的是一个等腰三角形,每一行的起始位置比上一行位置少一列。因此要使用Tab函数来确定每一行的起始位置。语句PrintTab(18-i);表示从第18-i列开始输出内容。编写代码如下:,2019/11/24,35,编写代码如下:OptionExplicitPrivateSubForm_Click()DimaAsStringDimiAsInteger,jAsIntegera=*Form1.FontSize=14,2019/11/24,36,Fori=1To10PrintTab(18-i);Forj=1To2*i-1Printa;NextjPrintNextiEndSub,外循环决定共输出几行,内循环决定每行共有几个“*”第一行是1个“*”,第二行是3个“*”,第n是2*n-1个“*”。,输出的位置,2019/11/24,37,例4-12在窗体上输出乘法九九表,2019/11/24,38,OptionExplicitPrivateSubForm_Click()DimiAsInteger,jAsInteger,kAsIntegerDimmAsIntegerFontSize=12PrintTab(25);乘法九九表Print:PrintPrint*;Fori=1To9PrintTab(i*6);i;NextiPrint,输出表头,2019/11/24,39,Forj=1To9Printj;Fork=1TojPrintTab(k*6);j*k;NextkPrintNextjEndSub,内循环决定输出乘积及个数,外循环决定共输出几行,2019/11/24,40,例4-13打印下列图案,分析:上面的图案可分成两个等腰三角形。上面的三角形有5行第1行为一个“*”,第2行为三个“*”,第3行为五个第5行有2*5-1个“*”。代码编写如下页所示。,2019/11/24,41,OptionExplicitPrivateSubForm_Click()DimiAsInteger,jAsIntegerDimaAsStringFori=1To5PrintTab(20-i);Forj=1To2*i-1Print*;NextjPrintNexti,输出上三角形,2019/11/24,42,Fori=4To1Step-1PrintTab(20-i);Forj=1To2*i-1Print*;NextjPrintNextiEndSub,输出下三角形,2019/11/24,43,4.4.3DoLoop循环结构,DoLoop循环结构也是常用的循环结构。对于一些无法事先确定循环次数的程序,可用DoLoop型循环结构。它的格式有两种:格式1:先测型DoWhile|UntilExitDoLoop,2019/11/24,44,格式2:后测型DoExitDoLoopWhile|Until,2019/11/24,45,2.说明:(1)格式1中“DoWhileLoop语句”,是先测型当型循环。即先判断While后面的条件是否为“真”,如果为“真”则执行循环体里面的各语句,如果为“假”,则退出循环,循环直到条件为“假”终止。,2019/11/24,46,(2)格式2中“DoLoopWhile语句”是后测型当型循环。与前者的区别在于,它不管条件的真假,都会先执行“Do”后面的语句,也就是循环体,当执行到LoopWhile语句时,再判断的真假,如果为“真”则返回执行循环体里面的各语句,如果为“假”,则退出循环,循环直到条件为“假”终止。也就是说,它至少执行循环体一次。,2019/11/24,47,在两种格式中While语句都可以用Until语句代替,它是直到条件为真时则终止循环。注意While语句后面的条件和Until语句的条件正好互补。例如:求5!如果使用当型循环则While后的条件是(N5)。为了避免混淆,所以我们建议只用DoWhile循环即可。,2019/11/24,48,(3)格式中ExitDo为可选项,在上面两种Do循环结构中,可以有一个或多个ExitDo语句,以便在满足一定的条件下,随时退出循环体。下页中分别给出前测型DoWhileLoop和DoUntilLoop循环结构的逻辑框图。同学们可自己画出后测型的两种逻辑框图。,2019/11/24,49,开始,计算“条件”值,结束,Y,N,开始,计算“条件”值,结束,N,Y,DoWhileLoop循环逻辑框图,DoUntilLoop循环逻辑框图,2019/11/24,50,【例4-14】任意输入一个自然数,编程输出其各个因子。工程设计步骤如下:(1)新建“标准EXE”工程,在出现的界面上添加三个标签、一个文本框、和两个命令按钮如图4-18所示。,DoLoop循环举例,2019/11/24,51,(2)设置窗体及控件的属性。标签1的Caption属性为“请输入一个自然数”;标签2的Caption属性为“N的因子是:”;标签3的Caption属性为空,在运行时赋值。另外标签3的Autosize属性为True,以便在运行时赋值能根据实际内容自动适应。其他属性如下页图4-18所示。,2019/11/24,52,图4-18求自然数因子的工程界面及属性设置,2019/11/24,53,输入一个数y,图4-19输出某个自然数y的所有因子流程图,i=2,yModi=0,Whiley1,输出i,y=yi,i=i+1,Y,N,2019/11/24,54,(3)编写代码如下:编写单击命令按钮“计算”所执行的代码PrivateSubCommand1_Click()DimxAsString,yAsSingley=Val(Text1.Text)i=2x=,2019/11/24,55,DoWhiley1IfyModi=0Thenx=x&*&Str(i)&Chr(13)y=yiElsei=i+1EndIfLoopLabel3.Caption=xLabel2.Caption=Text1.Text&的因子是:EndSub,为找下一个因子做准备。,2019/11/24,56,(4)运行结果。按F5执行工程,当出现运行界面时,从文本中输入一个自然数,然后单击命令按钮“计算”就会得到如图4-20所示的结果。即在标签3中输出了自然数的各个因子相乘的结果;另外,标签2的内容也根据输入的数自动改变如图4-20所示。,2019/11/24,57,图4-20求自然数因子的运行结果,2019/11/24,58,【例4-15】用牛顿迭代法求方程的根。所求的方程为:分析:用牛顿迭代法求方程f(x)=0在x0附近的实根的方法如下。(1)选一个接近x的真实根x1;(2)通过x1求出f(x1)。在几何中就是作x=x1,交f(x)于f(x1)见图4-21所示。(3)过f(x1)作f(x)的切线,交x轴于x2,可以用公式求出x2。由于,2019/11/24,59,(4)通过x2求出f(x2)。(5)再通过f(x2)作f(x)的切线,交x轴于x3。(6)再通过x3求出f(x3)。再通过f(x3)作f(x)的切线,交x轴于x4。一直求下去,直到接近真正的根。当两次求出的根之差|xn+1-xn|就认为xn+1足够接近于真实的根。,故,2019/11/24,60,牛顿迭代公式是:,f(x),x1,x2,x3,x4,f(x1),f(x2),f(x3),f(x4),y,x,图4-21牛顿迭代法几何原理图,2019/11/24,61,工程设计步骤如下:(1)新建“标准EXE”工程,在出现的界面上添加两个标签、一个文本框、一个图片框和两个命令按钮。如图4-22左图所示。(2)设置窗体及控件的属性如图4-22左图所示。,4-22牛顿迭代法求方程根工程界面设计及运行结果,2019/11/24,62,(3)编写代码如下编写单击Command1命令按钮“求根”所执行的代码PrivateSubCommand1_Click()DimfAsDouble,f1AsDoubleConsteps=0.0001Dimx0AsDouble,x1AsDoublex1=Val(Text1.Text),2019/11/24,63,Dox0=x1f=Exp(-x0)-x0f1=-Exp(-x0)-1x1=x0-f/f1LoopWhile(x1-x0)epsPicture1.ClsPicture1.Printx1EndSub,根从图片框上输出,牛顿迭代法求根,2019/11/24,64,编写单击Command2命令按钮“退出”所执行的代码PrivateSubCommand2_Click()EndEndSub编写单击窗体所执行的代码PrivateSubForm_Click()Text1.Text=Picture1.ClsEndSub,2019/11/24,65,编写文本框变化时所执行的代码PrivateSubText1_Change()ConstTile=牛顿迭代法求方程根程序IfText1.TextAnd_NotIsNumeric(Text1.Text)ThenMsgBox输入的不是数字!,vbOKOnly,TileText1.Text=Text1.SetFocusEndIfEndSub,2019/11/24,66,(4)运行工程。按F5键运行工程。当出现运行画面时在文本框中输入方程的初始根,然后单击“计算”命令按钮,就可在下面的图片框中输出方程的根如下页图4-23所示。注意:在程序中,对于文本框中输入的不是数字的其他情况给出了必要的提示。,2019/11/24,67,图4-23牛顿迭代法求方程根程序运行结果,2019/11/24,68,4.4.3ForNext循环和DoLoop循环的关系,前面已经提出,对于已知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小儿留置针穿刺课件
- 农副品委托销售合同范本
- 三伏天养生课件
- 丝织物商铺转让合同范本
- 上海大型仓库租赁协议书
- 油画定制合同范本模板模板
- 工厂物流仓库出租合同范本
- 农场小规模养殖合同范本
- 2025年私人住宅租赁信托协议
- 期货从业资格之《期货法律法规》练习题库及答案详解【基础+提升】
- 2025年医院电子病历系统在医疗信息化中的应用优化与患者满意度报告
- 中国电子艾灸仪行业投资分析及发展战略咨询报告
- 安全监理试题及试题答案
- 粮食机收减损培训课件
- 中华诗词大赛1-3年级题库(含答案)
- 2025年山东高考化学试卷真题及答案详解解读(精校打印)
- 2025餐饮劳动合同书 电子版
- (2025)职业教育法知识竞赛题库带含答案
- CJ/T 449-2014切断型膜式燃气表
- 滨州海上风电项目可行性研究报告
- 人工智能赋能中小学教育:个性化学习路径优化研究
评论
0/150
提交评论