ImageVerifierCode 换一换
格式:PPT , 页数:71 ,大小:770.50KB ,
资源ID:3835068      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-3835068.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VisualBasic程序设计PPT课件.ppt)为本站会员(Facebook)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

VisualBasic程序设计PPT课件.ppt

1、2018/11/20,1,Visual Basic程序设计,第十讲第四章 程序流程(二),2018/11/20,2,4.4 循环结构,For Next 循环,DoLoop 循环,2018/11/20,3,4.4 循环结构,循环结构是算法语言中一种重要的结构,它的应用非常广泛,把要重复执行的语句放在循环结构中,就可避免多次重复输入。在使用循环结构时,有些循环的次数事先可以确定,这种循环称为确定性循环。有些循环的循环次数是不能事先确定,需要根据条件来决定是否继续循环,我们称这种循环为不确定循环。,2018/11/20,4,在VB程序设计语句中有二种形式的循环结构。其中For循环结构用来设计循环次数

2、可以事先确定的循环结构。即循环次数已知循环结构。而DoLoop循环结构一般用来设计循环次数无法事先确定的循环结构。,2018/11/20,5,4.4.1 For循环结构,For 循环结构的一般形式:For 循环控制变量= 初值 To 终值Step 步长语句组1 Exit For 循环体语句组2Next 循环控制变量,2018/11/20,6,For 循环结构 -格式,说明:For循环以For语句开始,以Next语句结束。循环变量用来控制循环次数;初值代表循环变量的初始被赋的值;终值代表循环变量最终能继续进行循环的值;步长代表每循环一次循环变量增长的值。,2018/11/20,7,循环的次数可以

3、从循环初值、终值、和步长计算出来:R=INT(终值-初值+步长)/步长)例如: For I=1 To 10 Step 2循环次数 R=INT(10-1+2)/2)=INT(5 .5)=5For I=5.0 To 25. Step 0.5R=INT(25.-5.0+0.5)/0.5)=INT(41.0)=41,For循环结构 -循环次数的计算,2018/11/20,8,For循环结构 -循环结构的一些规定,1、循环变量初值 、终值和步长分别可以是常数、变量和表达式。如果是变量,则它应是预先被赋值。如果是表达式,则应先计算表达式的值。 2、初值 、终值和步长的值可以为正或负,初值 、 终值可以为零

4、。但步长不能为零。 例如: For I= -1 To 3 Step -1的循环次数为: R=INT(-3-(-1)+(-1)/-1)=3。,2018/11/20,9,即当I的值为-1,-2,-3时,执行正常循环,当I的值变成-4时不再执行循环时。 3、脱离循环的条件是:循环变量沿变化的方向超过终值。如果步长的值为正,则“超过”意味着“大于”,如果步长为负,则“超过”意味着“小于”。,For 循环结构 -循环结构的一些规定,2018/11/20,10,4、如果计算出循环次数R0,按R=0处理,即一次也不执行循环体。 5、如果循环变量的初值 、终值和步长类型和循环变量的类型不一致,则按赋值的规则处

5、理,即先将其类型化成循环变量的类型,然后进行处理,即先将初值 、终值和步长的类型化成循环变量的类型,然后进行处理。,For 循环结构 -循环结构的一些规定,2018/11/20,11,1、执行For循环语句时先将初值赋给循环控制变量。 2、再利用公式计算循环次数。 计算循环次数的公式:R=Int(终值-初值+步长)/步长),For循环结构 -循环结构的执行过程,2018/11/20,12,3、检查循环次数,若R=0(或R0,则执行循环体。 4、执行Next语句时,循环变量增值步长。循环次数R-1。 5、返回前面步骤3,重复执行步骤3,4。,For循环结构 -循环结构的执行过程,2018/11/

6、20,13,6、其中Exit For为在满足一定条件下退出For循环结构。 若For循环的语句为: For 循环变量=e1 To e2 Step e3循环体 Next 循环变量则其执行过程可用下页的流程图表示:,For循环结构 -循环结构的执行过程,2018/11/20,14,图4-15 For循环执行过程流程图.,当R=0时则循环变量的值就超过终值,若步长为负值时,超过终值则表示小于终值。,2018/11/20,15,【例4-7】输入一个正整数,利用For循环来判断是否为素数。 分析:所谓素数是指除了1和它本身之外,不能被其他的数整除的数。判断一个自然数n(3)是否为素数的方法是:依次用2

7、各数作除数去除,如果余数都不为0,则为素数。 工程设计步骤如下: (1)启动VB,选“新建工程”中“标准EXE”工程。在出现的窗体上添加1个文本框、两个标签和两个命令按钮。如图4-16左图所示。,2018/11/20,16,(2)设置窗体和控件的属性如图4-16右图所示。其中标签Label2的Caption属性开始设置为“输出判断结果:”在工程运行后应输出具体的判断结果。,图4-16判断素数工程设计界面和属性设置,2018/11/20,17,在文本框中输入一个自然数n,j = , i = 2,当 i =,求 n / i 的余数r,余数r = 0,退出循环,i j,Y,N,输出n为素数,输出n为

8、非素数,i = i+1,图4-17 判断自然数n是否为素数的程序流程,Y,N,2018/11/20,18,(3)编写代码 编写单击Command1命令按钮“判断”所执行的代码 Private Sub Command1_Click()Dim i As Long, j As Long, n As Longn = Val(Text1.Text)j = Clng(Sqr(n)Debug.Print j,2018/11/20,19,For i = 2 To jIf n Mod i = 0 Then Exit ForNext iDebug.Print iIf i j ThenLabel2.Caption

9、= Text1.Text & “为素数“ElseLabel2.Caption = Text1.Text & “为非素数“End If End Sub,2018/11/20,20,编写单击Command2命令按钮“退出”所执行的代码 Private Sub Command2_Click()Unload Me End Sub 编写Form_Activate()事件发生时所执行的代码 Private Sub Form_Activate()Text1.SetFocus End Sub,2018/11/20,21,(4)运行结果。按F5键运行工程,当出现运行画面时在提示的文本框中输入1个自然数例如137

10、,然后单击“判断”按钮,就会在标签2中显示“137为非素数”的信息。如图4-16所示。,图4-16 判断素数工程运行结果,2018/11/20,22,4.4.2 多重循环,通常把循环体内不含有循环语句的循环称为单层循环,而把循环体内含有循环语句的循环称为多重环。例如在一个循环体内含有一个循环语句的称为二重循环。多重循环又称为多层循环和循环的嵌套。下面通过例题来讲解多重循环的应用。,2018/11/20,23,【例4-8】我国古代数学家张丘建在“算经”里提出一个世界数学史上有名的百鸡问题:鸡翁一、值钱五、鸡母一、值钱三,鸡雏三、值钱一,百钱买百鸡,问鸡翁、母、雏各几何?分析:若公鸡x只,母鸡y只

11、,小鸡z只,依题意可以列出以下方程组:,2018/11/20,24,在上面的两个方程中,有3个未知数,属于不定方程,无法直接求解。下面我们用“穷举法”求解。穷举法是将各种可能的组合全部一一测试,将符合条件的组合输出。这里使用二层循环结构。即将公鸡数从1变化到100,母鸡数也从1变化到100,对于每一组公鸡和母鸡数,从100中减去公鸡和母鸡数就得到小鸡的个数,然后再计算买三种鸡的总钱数是否为100元。若是就得到一组解,然后再继续。,2018/11/20,25,再仔细分析一下,若100元钱全部都买公鸡最多买20只,如果全部买母鸡最多买33只,所以穷举法外循环中公鸡数可从1 变到19,内循环中母鸡数

12、可从1 变化到33,小鸡个数应100中减去公鸡数和母鸡数得到。 工程设计步骤如下: (1)新建“标准EXE”工程,在出现的窗体上添加四个标签、一个列表框、一个框架和两个命令按钮。其中标签1是放在框架内。,2018/11/20,26,(2)标签1的Caption属性设为“公鸡五元、母鸡三元、小鸡一元钱三只。100元钱买100只鸡。问公鸡、母鸡、小鸡各多少只?”标签2-标签4的Caption属性分别设置为“公鸡”、“母鸡”、“小鸡”。如下图所示。,2018/11/20,27,(3)代码编写如下: 编写单击命令按钮“计算”所执行的代码如下。 Private Sub Command1_Click()

13、List1.Clear For x = 1 To 19 外循环求公鸡数For y = 1 To 33 内循环求母鸡数z = 100 - x y 小鸡数If 5 * x + y * 3 + z / 3 = 100 Thenp = Format(x, “) & Format(y,_ “)& Format(z, “),Format 是格式化一个表达式。,2018/11/20,28,Rem 把满足条件的一种情况添加到列表框中。List1.AddItem pEnd IfNext yNext x End Sub 编写单击命令按钮“退出”所执行的代码如下。 Private Sub Command2_Clic

14、k()End End Sub,在列表框中使用AddItem方法添加项目,2018/11/20,29,(4)运行结果。按F5键运行工程出现运行界面后按“计算”按钮后,得到结果如下图所示。,图4-17 百钱买百鸡问题的运行结果,2018/11/20,30,例4-10在窗体上输出下列图案,2018/11/20,31,问题分析:该图案共有十行,每行有十个星号。要想输出该图案应使用 For 循环结构,可以先用变量a存放这十个星号。使用语句:a=“*”由于要输出的是一个平行四边形,每一行的起始位置比上一行位置多2列。因此要使用Tab函数来确定每一行输出的起始位置。语句Print Tab(2* i) ;表示

15、从第2* i 列开始输出内容。编写代码如下:,2018/11/20,32,Option Explicit Private Sub Command1_Click() Dim a As String, i As Integer, j As Integer a = “*“ Form1.FontSize = 14For i = 1 To 10Print Tab(2 * i);Print aNext i End Sub,表示从每一行的第2* i 列开始输出变量a的值。,2018/11/20,33,例4-11在窗体上输出下列图案,2018/11/20,34,问题分析:该图案共有十行,每行有不同的星号。第一

16、行有一个“*”,第二行有三个“*”,第三行有五个“*”,要想输出该图案应使用双层 For 循环结构,外层循环决定输出的行数,内层循环决定每行输出的星号数。可以先用变量a存放一个星号。使用语句: a=“*”由于要输出的是一个等腰三角形,每一行的起始位置比上一行位置少一列。因此要使用Tab函数来确定每一行的起始位置。语句Print Tab(18- i) ;表示从第18-i 列开始输出内容。编写代码如下:,2018/11/20,35,编写代码如下: Option Explicit Private Sub Form_Click()Dim a As StringDim i As Integer, j A

17、s Integera = “*“Form1.FontSize = 14,2018/11/20,36,For i = 1 To 10Print Tab(18 - i);For j = 1 To 2 * i - 1Print a;Next jPrintNext i End Sub,外循环决定共输出几行,内循环决定每行共有几个“*”第一行是1个“*”,第二行是3个“*”,第n是2*n-1个“*”。,输出的位置,2018/11/20,37,例4-12在窗体上输出乘法九九表,2018/11/20,38,Option Explicit Private Sub Form_Click()Dim i As In

18、teger, j As Integer, k As IntegerDim m As IntegerFontSize = 12Print Tab(25); “乘法九九表“Print: PrintPrint “* “;For i = 1 To 9Print Tab(i * 6); i;Next iPrint,输出表头,2018/11/20,39,For j = 1 To 9Print j; “ “;For k = 1 To jPrint Tab(k * 6); j * k; “ “;Next kPrintNext jEnd Sub,内循环决定输出乘积及个数,外循环决定共输出几行,2018/11/2

19、0,40,例4-13打印下列图案,分析:上面的图案可分成两个等腰三角形。上面的三角形有5行第1行为一个“*”,第2行为三个“*”,第3行为五个第5行有2*5-1个“*”。代码编写如下页所示。,2018/11/20,41,Option Explicit Private Sub Form_Click()Dim i As Integer, j As IntegerDim a As StringFor i = 1 To 5Print Tab(20 - i);For j = 1 To 2 * i - 1Print “*“;Next jPrintNext i,输出上三角形,2018/11/20,42,Fo

20、r i = 4 To 1 Step -1Print Tab(20 - i);For j = 1 To 2 * i - 1Print “*“;Next jPrintNext i End Sub,输出下三角形,2018/11/20,43,4.4.3 Do Loop循环结构,Do Loop循环结构也是常用的循环结构。对于一些无法事先确定循环次数的程序,可用Do Loop型循环结构。 它的格式有两种: 格式1:先测型 Do While| Until Exit Do Loop,2018/11/20,44,格式2:后测型Do Exit Do Loop While | Until ,2018/11/20,4

21、5,2. 说明: (1)格式1中“Do While Loop语句”,是先测型当型循环。即先判断While后面的条件是否为“真”,如果为“真”则执行循环体里面的各语句,如果为“假”,则退出循环,循环直到条件为“假”终止。,2018/11/20,46,(2)格式2中“Do Loop While 语句”是后测型当型循环。与前者的区别在于,它不管条件的真假,都会先执行“Do”后面的语句,也就是循环体,当执行到Loop While 语句时,再判断的真假,如果为“真”则返回执行循环体里面的各语句,如果为“假”,则退出循环,循环直到条件为“假”终止。也就是说,它至少执行循环体一次。,2018/11/20,4

22、7,在两种格式中While语句都可以用Until语句代替,它是直到条件为真时则终止循环。注意While 语句后面的条件和 Until语句的条件正好互补。例如:求5!如果使用当型循环则While 后的条件是(N5)。为了避免混淆,所以我们建议只用Do While循环即可。,2018/11/20,48,(3)格式中 Exit Do 为可选项,在上面两种Do 循环结构中,可以有一个或多个Exit Do语句,以便在满足一定的条件下,随时退出循环体。下页中分别给出前测型Do WhileLoop 和Do Until Loop循环结构的逻辑框图。同学们可自己画出后测型的两种逻辑框图。,2018/11/20,

23、49,开始,计算“条件”值,结束,Y,N,开始,计算“条件”值,结束,N,Y,Do WhileLoop循环逻辑框图,Do UntilLoop循环逻辑框图,2018/11/20,50,【例4-14】任意输入一个自然数,编程输出其各个因子。工程设计步骤如下: (1)新建“标准EXE”工程,在出现的界面上添加三个标签、一个文本框、和两个命令按钮如图4-18所示。,DoLoop循环举例,2018/11/20,51,(2)设置窗体及控件的属性。标签1的Caption属性为“请输入一个自然数”;标签2的Caption属性为“N的因子是:”;标签3的Caption属性为空,在运行时赋值。另外标签3的Auto

24、size属性为True,以便在运行时赋值能根据实际内容自动适应。其他属性如下页图4-18所示。,2018/11/20,52,图4-18求自然数因子的工程界面及属性设置,2018/11/20,53,输入一个数y,图4- 19 输出某个自然数y的所有因子流程图,i=2,y Mod i=0,While y 1,输出 i,y =y i,i = i +1,Y,N,2018/11/20,54,(3)编写代码如下: 编写单击命令按钮“计算”所执行的代码 Private Sub Command1_Click()Dim x As String, y As Singley = Val(Text1.Text)i =

25、 2x = “,2018/11/20,55,Do While y 1If y Mod i = 0 Thenx = x & “* “ & Str(i) & Chr(13)y = y iElsei = i + 1End If LoopLabel3.Caption = xLabel2.Caption = Text1.Text & “的因子是:“ End Sub,为找下一个因子做准备。,2018/11/20,56,(4)运行结果。按F5执行工程,当出现运行界面时,从文本中输入一个自然数,然后单击命令按钮“计算”就会得到如图4-20所示的结果。即在标签3中输出了自然数的各个因子相乘的结果;另外,标签2的

26、内容也根据输入的数自动改变如图4-20所示。,2018/11/20,57,图4-20 求自然数因子的运行结果,2018/11/20,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。由于,2018/11/20,59,(4)通过x2 求出f( x2 )。 (5)再通过f( x

27、2 )作f (x )的切线,交x 轴于 x3 。 (6)再通过x3 求出f( x3 )。再通过f( x3 )作f (x )的切线,交x 轴于 x4 。一直求下去,直到接近真正的根。当两次求出的根之差 | xn+1-xn |就认为xn+1足够接近于真实的根。,故,2018/11/20,60,牛顿迭代公式是:,f(x),x1,x2,x3,x4,f(x1),f(x2),f(x3),f(x4),y,x,图4-21牛顿迭代法几何原理图,2018/11/20,61,工程设计步骤如下: (1)新建“标准EXE”工程,在出现的界面上添加两个标签、一个文本框、一个图片框和两个命令按钮。如图4-22左图所示。 (

28、2)设置窗体及控件的属性如图4-22左图所示。,4-22牛顿迭代法求方程根工程界面设计及运行结果,2018/11/20,62,(3)编写代码如下 编写单击Command1命令按钮“求根”所执行的代码Private Sub Command1_Click()Dim f As Double, f1 As DoubleConst eps = 0.0001Dim x0 As Double, x1 As Doublex1 = Val(Text1.Text),2018/11/20,63,Dox0 = x1f = Exp(-x0) - x0f1 = -Exp(-x0) - 1x1 = x0 - f / f1L

29、oop While (x1 - x0) epsPicture1.ClsPicture1.Print x1 End Sub,根从图片框上输出,牛顿迭代法求根,2018/11/20,64,编写单击Command2命令按钮“退出”所执行的代码 Private Sub Command2_Click()End End Sub 编写单击窗体所执行的代码 Private Sub Form_Click()Text1.Text = “ “Picture1.Cls End Sub,2018/11/20,65,编写文本框变化时所执行的代码 Private Sub Text1_Change()Const Tile =

30、 “牛顿迭代法求方程根程序“If Text1.Text “ “ And_Not IsNumeric(Text1.Text) ThenMsgBox “输入的不是数字!“, vbOKOnly, TileText1.Text = “ “Text1.SetFocusEnd If End Sub,2018/11/20,66,(4)运行工程。按F5键运行工程。当出现运行画面时在文本框中输入方程的初始根,然后单击“计算”命令按钮,就可在下面的图片框中输出方程的根如下页图4-23所示。 注意:在程序中,对于文本框中输入的不是数字的其他情况给出了必要的提示。,2018/11/20,67,图4-23 牛顿迭代法求

31、方程根程序运行结果,2018/11/20,68,4.4.3 For Next循环和 Do Loop循环的关系,前面已经提出,对于已知循环次数的循环使用For Next循环结构来设计比较方便,而对于循环次未知的情况最好使用Do Loop循环,其实在很多情况下,同一个问题可以使用两种循环结构的任意一种形式来设计。例如例4-7判断1个数是否为素数的程序中,编写单击命令按钮“判断”所执行的代码原来是For Next循环结构来设计的,也可用Do Loop循环结构来设计。,2018/11/20,69,改写如下: Private Sub Command1_Click()Dim i, j, n As Long

32、n = Val(Text1.Text) j = Clng(Sqr(n)i=2Do while(i0)i=i+1loop,2018/11/20,70,Debug.Print i If i j ThenLabel2.Caption = Text1.Text & “为素数“ ElseLabel2.Caption = Text1.Text & “为非素数“ End If End Sub 程序运行结果完全正确。 同样使用Do Loop循环结构设计的程序也可以改为For Next循环结构来设计。,2018/11/20,71,但从上面的例题中可以看出对于需满足多个条件才能循环的程序使用Do Loop循环结构更方便一些。而对于只需满足一个条件,且循环次数已知的循环,最好使用For Next循环结构来设计。因为在For Next循环结构中,循环控制变量可以自动增值,不需在程序中再考虑。而在Do Loop循环结构中,既要考虑满足什么条件才能进入循环,同时还要考虑如何退出循环,也就是说循环体中要有能使条件不满足退出循环的语句。这些因素都是在设计循环结构时应考虑的问题。,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报