《vb循环结构》PPT课件.ppt

上传人:za****8 文档编号:16088110 上传时间:2020-09-18 格式:PPT 页数:65 大小:524.02KB
返回 下载 相关 举报
《vb循环结构》PPT课件.ppt_第1页
第1页 / 共65页
《vb循环结构》PPT课件.ppt_第2页
第2页 / 共65页
《vb循环结构》PPT课件.ppt_第3页
第3页 / 共65页
点击查看更多>>
资源描述
第4章:循环结构,主要内容: 1:循环结构 2:DoLoop语句 3:ForNext语句 4:循环嵌套 5:列表框、组合框,小测验,任意输入一个整数,判断其奇偶性,程序代码:Private Sub Command1_Click() Dim x As Integer x = Val(Text1.Text) If x Mod 2 = 0 Then Text2.Text = 偶数 Else Text2.Text = 奇数 End IfEnd Sub,例4.1,在窗体上打印出120以内的所有偶数 分析与思考从1开始判断1是否为偶数,若是则打印1判断2是否为偶数,若是则打印2判断3判断20是否为偶数,若是则打印20结束,例4.1,直接写代码If 1 Mod 2 = 0 Then Print 1If 2 Mod 2 = 0 Then Print 2If 20 Mod 2 = 0 Then Print 20 分析与思考“判断一个数是否为偶数若是则打印”这样的处理被重复了20次!,例4.1,高效率的处理 1)赋予变量x初值为1 2)如果x20则跳至第5步 3)赋予x值为下一个要判断的数 4)跳至第2步 5)结束,例4.1,程序代码Private Sub Command1_Click() Dim x As Integer x = 1 Do While x = 20 If x Mod 2 = 0 Then Print x x = x + 1 LoopEnd Sub 代码的这种结构称为“循环结构” Do WhileLoop是典型的循环语句,语句序列,循环结构,循环:指在满足指定条件下重复多次执行相同语句序列的程序结构 循环体:被重复执行的语句序列 执行时,先测试条件,若满足,则执行一遍语句序列,然后跳回到条件处,再次测试条件;若不满足,则跳出循环 VB提供的循环语句有 For.Next Do.Loop While.Wend For Each.Next 其中最常用的是For.Next和Do.Loop语句,前测型Do.Loop语句,格式:Do While|Until 条件 循环体Loop Do While.Loop语句的功能:当条件为真时,执行循环体;当条件为假时,退出循环。此循环称为“当型循环”。先测试条件再决定是否执行循环体! Do Until.Loop语句的功能:当条件为假时,执行循环体,直到条件为真时,退出循环。此循环称为“直到型循环”。先测试条件再决定是否执行循环体!,Do While x=100.Loop,Do Until x100.Loop,等价于,小测验,程序运行后,单击命令按钮,在两个文本框中显示的值分别为( )和( )Private Sub Command1_Click() Dim x As Integer, n As Integer x = 0 Do While x 50 x = (x + 2) * (x + 3) n = n + 1 Loop Text1.Text = Str(n) Text2.Text = Str(x)End Sub,2,72,例4.2,题目:求S = 1 + 2 + + 100之和 分析与思考累加问题:求一组有规律的数的和可用循环结构解题,但关键是找出其中“重复执行”的部分,观察下面代码: s=s+1s=s+2s=s+100 “重复执行”部分:将s和一个数相加重新赋予s其中变化的是那个数,设该数为n,显然n的初值为1,然后不断加1,直到100,例4.2,程序代码如下:Private Sub Command1_Click() Dim n As Integer,s As Integer n=1 s=0 Do While n=100 s=s+n n=n+1 Loop Print s=;sEnd Sub,1)变量s称为累加器变量,用来保存求和结果2)赋值语句s0称累加器清零3)s = s + n实现累加,例4.2,程序代码如下:Private Sub Command1_Click() Dim n As Integer,s As Integer n = 1 s = 0 Do Until s = s+n n = n+1 Loop Print s=;sEnd Sub,n 100,例4.3,题目:利用公式/41 - 1/3 + 1/5 - 1/7 + 求的近似值。要求:当加数项的绝对值小于10-5时,停止计算 分析与思考 这是累加问题的变型 公式中的每项的分母是规律的奇数列。且奇数项为加法运算,偶数项为减法运算 循环条件为:累加项的绝对值小于10-5可写为 Until 1/n0.00001,例4.3,程序代码Private Sub Command1_Click() Dim pi As Single, n As Long Dim c As Integer pi = 0: n = 1 c = 1 Do Until 1/n0.00001 pi = pi + c / n n = n + 2 c = -c Loop pi = pi * 4 Print =; piEnd Sub,说明:1)变量c的作用:实现加减法的交替2)n的取值规律 3)的编辑:通过输入法的特殊字符输入,后测型Do.Loop语句,格式:Do 循环体Loop While|Until 条件 功能:先执行一次循环体,然后判断条件,根据结果决定是否再执行循环体 注意:后测型Do语句最少执行1次循环体前测型Do语句最少执行0次循环体(即一次都不执行循环),例4.2的改写,程序代码 Private Sub Command1_Click() Dim n As Integer,s As Integer n=1 s=0 Do s=s+n n=n+1 Loop While n=100 Print s=;sEnd Sub,或写为:Loop Until n100,例4.4,题目:输入两个正整数,求它们的最大公约数。运行界面如下:,例4.4,分析与思考“辗转相除法”算法:设m、n为两个正整数。先求出m/n余数p,若p0,则n即为最大公约数;若p非0,则把原来的分母n作为新的分子m,把余数p作为新的分母n继续求解,直到p=0。 分析与思考1)输入m和n的值2)根据“辗转相除法”求解3)输出n,例如,32,20,12,20,12,8,12,8,4,8,4,0,例4.4,程序代码Private Sub Command1_Click() Dim m As Integer, n As Integer, p As Integer m = Val(Text1.Text) n = Val(Text2.Text) p=m Mod n Do While p0 m = n n = p p = m Mod n Loop Label4.Caption = n End Sub,思考:输入时,是否要保证mn?为什么?,While.Wend语句,格式While 条件 循环体Wend 功能:先测试条件,若条件成立,则执行循环体,然后再次测试条件;若条件不成立,则跳出循环 本语句与Do While.Loop语句功能相同,格式稍有差异,For.Next语句,使用Do.Loop 语句实现的循环,其特点是循环条件明确,但是循环次数不确定。其实,在明确循环次数的情况下,多使用For.Next语句 累加问题。求s=1+2+100的和 Private Sub Command1_Click() Dim s As Integer, n As Integer s = 0 For n = 1 To 100 Step 1 s = s + n Next n Print s=; sEnd Sub,n:循环变量1:循环变量初值100:循环变量终值Step 1:循环变量步长值s=s+n:循环体,For.Next语句,格式:For 循环变量初值 To 终值 Step 步长值 循环体Next 循环变量 说明1)For部分的循环变量和Next语句部分的循环变量应该是同一个变量2)步长值表示循环变量取值的变化规律,即从初值开始,每循环一次增加一个步长值,直到超过终值。步长值可以是正数,称为递增循环,也可以是负数,称为递减循环。若步长值为1,则Step 1可以省略步长值不能为0,若为0,则循环语句不能在执行有限次循环体后自动跳出循环。我们把这种循环称为“死循环”。3)初值、终值和步长值可以是常量、变量、函数或表达式,常见的是常量4)功能: For .Next语句指定循环变量取一系列数值,并且对循环变量的每一个取值均把循环体执行一次,For.Next语句,执行步骤 1)确定循环初值、终值和步长值 2)将循环初值赋予循环变量 3)判断循环变量当前值是否超过终值。若没有超过终值,则执行循环体;反之,若超过终值,则跳出循环,执行Next之后的语句 4)执行Next语句,即给循环变量加上步长值再重新赋予 5)跳转到第3步,“超过”的含义:步长值为正时,指大于终值;步长值为负时,指小于终值。,小测验,阅读程序:Private Sub Form_Click() Dim a As Integer, j As Integer a = 0 For j = 1 To 15 a = a + j Mod 3 Next j Print aEnd Sub程序运行后,单击窗体,输出结果是( ),15,小测验,有如下程序:Private Sub Command1_Click() Dim c As Integer, c1 As String c = 1234 c1 = Trim(Str(c) For i = 1 To 4 Print Next iEnd Sub程序运行后,单击命令按钮,要求在窗体上显示如下内容:1121231234则在横线上应填入的内容为:( )A)Right(c1, i) B)Left(c1, i) C)Mid(c1, i, 1) D)Mid(c1, i, i),B,例4.5,题目:求10! = 12310 分析与思考 阶乘问题,也是累乘问题 重复的操作是:t=t*1t=t*2t=t*10,例4.5,Private Sub Command1_Click() Dim t As Long Dim k As Integer t = 1 For k = 1 To 10 t = t * k Next k Print t=; t End Sub 程序运行结果: t3268800 变量t称为累乘器变量,用来保存最终结果,其初值必须赋为1t = t * k 称为累乘器,例4.6,题目:输出斐波拉西Fibonacci数列前10项。(1,1,2,3,5,8,13,)。 分析与思考该数列的特点是:F1=1F2=1Fn=Fn-2+Fn-1,重复操作,例4.6,Private Sub Command1_Click() Dim f1 As Integer,f2 As Integer Dim f As Integer,i As Integer f1 = 1:f2=1 Print f1: Print f2 For i = 3 To 10 f=f1+f2 Print f f1=f2 f2=f Next i Print End Sub,1)当i=3时,求得的f表示f3 当i=4时,求得的f表示f4 2)f1的值在不断变化,表示fn-2 f2的值在不断变化,表示fn-1 3)递推问题,实验四,4-1:随机产生一个三位数(要求,其个位数字不为0),然后求出它的逆序数 4-2:随机产生10个整数(19区间),分别统计其中偶数的个数,奇数的和。 4-3:打印出100999之间的所有水仙花数。一个三位数,其各位数字立方和等于该数本身,这个数就称为水仙花数,如15313+53+33 4-4:在文本框中随意输入一些ASCII字符,统计其中的字母(区分大小写)、数字及其他字符的个数。试编程实现之。 4-5:猴子吃桃问题。一只猴子摘了一堆桃子。它每天吃剩下桃子的一半加1个。这样吃了9天后,发现只剩下一个桃子了。问:最初这猴子摘了多少个桃子?请编程解决。,循环出口语句,格式Exit For|Do 功能:立即从For循环或Do循环中跳出 说明当程序运行时遇到Exit For(或Exit Do)语句时,就不再执行循环体中后续的任何语句而立即退出For循环(或Do循环),转到Next语句(或Loop)的后面执行,例4.4的改写,Private Sub Command1_Click() Dim m As Integer, n As Integer, p As Integer m = Val(Text1.Text):n = Val(Text2.Text) Do p = m Mod n If p=0 Then Exit Do End If m = n n = p Loop Text3.Text = n End Sub,1)此处的DoLoop循环没有条件,可称为无条件循环2)显然,无条件循环时,循环体内必然要有退出循环的语句,否则就会出现“死循环”,循环嵌套,循环嵌套是指在循环体内包含有其他循环语句的结构,即循环套循环。如For i=1 To 5 For j=1 To 4 Next j Next i 上述循环嵌套又称为双重循环,还有三重循环 通常,我们大量会用到双重循环,极少用到三重循环。嵌套层次更多的循环基本不用 常见循环嵌套形式如下页所示,循环嵌套,For i=1 To 5 Do While Loop Next i Do While Do While Loop Loop,Do While For i=1 To 5 Next i Loop For i=1 To 5 For j=1 To 4 For k=1 To 6 Next k Next j Next i,循环嵌套,写出下列程序段运行结果。 For i=1 To 3 For j=5 To 7 Print i,j Next j Next i 写法:内、外循环层次要分清,不能交叉 特点:内循环的循环体受内、外两重循环共同控制,外循环,内循环,也是外循环的循环体,内循环循环体,循环嵌套,运行结果1 51 61 72 52 62 73 53 63 7,第1次外循环内循环三次,第2次外循环内循环三次,第3次外循环内循环三次,循环体共执行9次,小测验,程序运行后,变量x和y的值分别是( )和( )Private Sub Command1_Click() Dim x As Integer, y As Integer Dim i As Integer, j As Integer x = 0 y = 0 For i = 1 To 4 x = x + 1 For j = 1 To 5 y = y + 1 Next j Next i Print x, yEnd Sub,4,20,例4.7,题目:取一元、二元、五元的硬币共十枚,使得总金额为25元,问有多少种不同的取法? 分析与思考分析:设一元硬币为a枚,二元硬币为b枚,五元硬币为c枚,由题目可列出方程组: a+b+c=10 a+2b+5c=25 从数学角度看,上述方程是三元一次方程组,但只有两个方程,故无解!事实上,这里的无解实际上不是没有解,而是有多组解。只要给定a一个值,就可以求出b、c的值 “穷举法”试列举出题目所有的解空间,再从中找出具体符合题目要求的解,例4.7,程序代码Private Sub Command1_Click() Print , 一元, 二元, 五元 n = 0 n用来记录解的组数,计数器 For a = 0 To 10 表示一元硬币的枚数 For b = 0 To 10 表示二元硬币的枚数 c = 10 - b - a 表示五元硬币的枚数 If a + 2 * b + 5 * c = 25 And c = 0 Then n = n + 1 解组数加1 Print (; n; ), a, b, c End If Next b Next a End Sub,小测验,下面程序运行后,输出的结果是( ) Private Sub Command1_Click() Dim i As Integer, j As Integer Dim x As Integer x = 0 For i = 1 To 3 For j = 1 To 4 x = x + 1 Next j Next i Print x=; xEnd Sub,12,小测验,下面程序运行后,输出的结果是( ) Private Sub Command1_Click() Dim i As Integer, j As Integer Dim x As Integer x = 0 For i = 1 To 3 For j = 1 To i x = x + 1 Next j Next i Print x=; xEnd Sub,6,小测验,下面程序运行后,输出的结果是( ) Private Sub Command1_Click() Dim i As Integer, j As Integer Dim k As Integer,x As Integer x = 0 For i = 1 To 3 For j = i To 4 For k=1 To j x = x + 1 Next k Next j Next i Print x=; xEnd Sub,26,例4.8,题目:编写程序,输出如下所示的图形,分析与思考该图形具有的特点:,i,2*i1,10i,例4.8,分析与思考因此可以用双重循环实现。重复部分:输出一个“*”外循环:控制输出行数内循环:控制每行输出“*”的个数循环体:控制输出的内容,即一个“*”,例4.8,程序代码Private Sub Command1_Click() Dim i As Integer, j As Integer For i = 1 To 7 Print Tab(10 - i); For j = 1 To 2 * i - 1 Print *; Next j Print Next i End Sub,外循环控制输出行数,Tab函数:定位。将输出位置定在哪一列,内循环控制每行输出个数,循环体控制每行输出内容,空Print:一行输出完毕换行,例4.8的几个变化与思考,编程实现输出以下图形。,图1,Private Sub Command1_Click() Dim i As Integer, j As Integer For i = 1 To 7 Print Tab(10 - i); For j = 1 To 8 Print *; Next j Print Next i End Sub,图2,Private Sub Command1_Click() Dim i As Integer, j As Integer For i = 1 To 7 Print Tab(10); For j = 1 To 2 * i - 1 Print *; Next j Print Next i End Sub,图3,Private Sub Command1_Click() Dim i As Integer, j As Integer For i = 1 To 7 Print Tab(15 (2 * i 1); For j = 1 To 2 * i - 1 Print *; Next j Print Next i End Sub,图4,Private Sub Command1_Click() Dim i As Integer, j As Integer For i = 1 To 7 Print Tab(10 - i); For j = 1 To 2 * i - 1 If i Mod 2 = 1 Then Print *; Else Print #; End If Next j Print Next i End Sub,图5,Private Sub Command1_Click() Dim i As Integer, j As Integer For i = 7 To 1 Step -1 Print Tab(10 - i); For j = 1 To 2 * i - 1 Print *; Next j Print Next i End Sub,实验题,4-6:编写程序,输出下列所示的图形,思考题,不做要求,列表框(ListBox),列表框能为用户提供若干个选项,形成列表,供用户从中任意选择 常用属性1)List:表示列表框包含的各个项。如左图所示:该列表框共有4个项目,即List1.List(0)的值为教授 List1.List(1)的值为副教授 List1.List(2)的值为讲师 List1.List(3)的值为助教 各项通过序号来区分!序号固定从0开始,依次类推。构成一个字符型数组 静态添加项目:方式一:输入一个选项后按回车键方式二:输入一个选项后按Ctrl回车键 动态添加项目:List1.List(4)= 工程师,列表框,常用属性2)ListCount:返回列表框当前包含项目的个数。只读注意:List属性的序号范围为0ListCount属性值-13)Text:返回列表框当前被选定的项目内容。只读,默认值为空。4)ListIndex:返回列表框当前选定的项目的下标。默认值为-1,表示没有选中任何项目;若为其他值,则表示选中具体某项注意:List1.List(List1.ListIndex)等价于List1.Text 常用事件1)Click:单击列表框中一个项目时发生2)DblClick:双击列表框中一个项目时发生,列表框,常用方法1)AddItem:添加项目格式:对象.AddItem 列表项,下标如:List1. AddItem “工程师” ,4 把“工程师”添加到列表框,且下标为4。说明:若省略下标,则表示把新项目添加为列表框最后一项。注意:下标不能超过当前下标最大值 2)RemoveItem:删除指定的项目格式: 对象.RemoveItem 下标如: List1. RemoveItem 4 删除列表框的第5项(下标为4) 3)Clear:删除列表框所有的项目格式:对象.Clear,组合框(ComboBox),组合框是列表框和文本框的组合,即允许用户从已有的选项中进行选择,也允许输入列表中不包括的内容。所以组合框具有列表框和文本框的大部分属性和方法。 常用属性1)List:同ListBox2)ListCount:同ListBox 3)ListIndex:同ListBox 4)Text:同TextBox,组合框,5)Style:决定了组合框的三种不同类型,只读默认值为0,表示类型为Dropdown Combo(下拉组合框);若为1,则表示Simple Combo(简单组合框);若为2,则表示Dropdown List(下拉列表框)参见例子ComboBoxStyle.vbp,组合框,常用事件1)Click:单击组合框中一个项目时发生2)DblClick:双击组合框中一个项目时发生(只对简单组合框有效)3)Change:组合框的文本框部分内容发生改变时发生参见例子ComboBoxEvents.vbp 常用方法1)AddItem:同ListBox2)RemoveItem:同ListBox3)Clear:同ListBox,例4.9,题目:建立一个调查信息程序,如下所示。要求:1)通过选择组合框的项目,实现以不同的字体显示列表框2)可以将文本框中所示姓名添加至列表框中3)可以将选定的人员姓名从列表框中删除,设计模式,运行模式,例4.9,Private Sub Form_Load() List1.AddItem 沈晓咏 List1.AddItem 石兆峰 List1.AddItem 宋红霞 List1.AddItem 疏达明 Combo1.Text = 宋体 Combo1.AddItem 宋体 Combo1.AddItem 黑体 Combo1.AddItem 仿宋_GB2312 Combo1.AddItem 楷体_GB2312 Text1.Text = End Sub,例4.9,Private Sub Combo1_Click() List1.FontName = Combo1.TextEnd Sub Private Sub Command1_Click() “添加人员”按钮 If Text1.Text Then List1.AddItem Text1.Text End IfEnd Sub Private Sub Command2_Click() “删除人员”按钮 If List1.ListIndex -1 Then List1.RemoveItem List1.ListIndex End IfEnd Sub,实验四,4-6:找出200以内所有7的倍数,并把它们添加到一个列表框中。如果单击列表框中一个项目,则在文本框中显示出来;如果双击一个项目,则将其从列表框中删除,实验题,“选课系统”程序设计,如下图所示。其中,课程类别包括体育课(武术、篮球、足球、乒乓球、健美操)、专业课(VB.Net程序开发、VC+程序设计、JAVA编程思想、网络管理与安全、软件测试),设计模式,运行模式,参考答案,Private Sub Form_Load() Combo1.Text = 体育课 Combo1.AddItem 体育课 Combo1.AddItem 专业课 List1.AddItem 武术 List1.AddItem 篮球 List1.AddItem 足球 List1.AddItem 乒乓球 List1.AddItem 健美操End Sub Private Sub List1_DblClick() List2.AddItem List1.Text List1.RemoveItem List1.ListIndexEnd Sub Private Sub List2_DblClick() List1.AddItem List2.Text List2.RemoveItem List2.ListIndexEnd Sub,Private Sub Combo1_Click() List1.Clear If Combo1.Text = 体育课 Then List1.AddItem 武术 List1.AddItem 篮球 List1.AddItem 足球 List1.AddItem 乒乓球 List1.AddItem 健美操 ElseIf Combo1.Text = 专业课 Then List1.AddItem VB.Net程序开发 List1.AddItem VC+程序设计 List1.AddItem JAVA编程思想 List1.AddItem 网络管理与安全 List1.AddItem 软件测试 End IfEnd Sub,参考答案,Private Sub Command1_Click() Dim i As Integer Dim strUnSelectItem() As String ReDimstrUnSelectItem(List1.ListCount - 1) For i = 0 To List1.ListCount 1 If List1.Selected(i) Then List2.AddItem List1.List(i) Else strUnSelectItem(i) = List1.List(i) End If Next i List1.Clear For Each x In strUnSelectItem If x Then List1.AddItem x End If NextEnd Sub,Private Sub Command2_Click() Dim i As Integer Dim strUnSelectItem() As String ReDimstrUnSelectItem(List2.ListCount - 1) For i = 0 To List2.ListCount 1 If List2.Selected(i) Then List1.AddItem List2.List(i) Else strUnSelectItem(i) = List2.List(i) End If Next i List2.Clear For Each x In strUnSelectItem If x Then List2.AddItem x End If NextEnd Sub,
展开阅读全文
相关资源
相关搜索

最新文档


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


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

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


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