Visual Basic语言程序设计及实验教程课件第5章 循环结构程序设计_第1页
Visual Basic语言程序设计及实验教程课件第5章 循环结构程序设计_第2页
Visual Basic语言程序设计及实验教程课件第5章 循环结构程序设计_第3页
Visual Basic语言程序设计及实验教程课件第5章 循环结构程序设计_第4页
Visual Basic语言程序设计及实验教程课件第5章 循环结构程序设计_第5页
已阅读5页,还剩64页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章循环结构程序设计5.1循环概念5.2循环结构及循环程序语句5.3循环程序设计举例5.4列表框与组合框5.1循环概念

在实际的数据处理中,常需要进行一些大量重复的运算和操作,如计算:1+2+3+……+100或1!+2!+3!+……+10!

使用循环可以避免代码的重复编写,简化程序,节约内存,提高程序运行效率。5.2循环结构及程序5.2.1设计循环结构的基本原理例:计算1+2+3+……+100。开始i<=100输出sum的值结束真假i=i+1Sum=0i=1sum=sum+i循环设计三要素:2、循环条件3、循环体1、初始化(1)用“计数”(2)用“条件”递推、迭代、穷举对变量赋初值开始i<=n输出sum的值结束真假i=i+1Sum=0输入ni=1sum=sum+i例:计算1+2+3+……+100。开始i<=100输出sum的值结束真假i=i+1Sum=0i=1sum=sum+i用计数方式设置条件例2:我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。

分析:解此问题两种方法,可根据公式:直接利用标准函数对数可求得,但求得的年数不为整数;利用循环实现,算法流程图如图:开始p<26输出p,y结束真假y=y+1p=13y=0p=p*1.08开始p<26输出p,y

结束真假y=y+1p=13y=0p=p*1.08算法流程图:5.2.2循环语句

VisualBasic中实现循环结构语句有:

While…Wend

Do…Loop

For…NextForEach…Next(1)While…Wend循环语句

其语法格式为:

While条件循环体

Wend条件循环体真假执行后续语句例:计算1+2+3+……+100。开始i<=100输出sum的值结束真假i=i+1Sum=0i=1sum=sum+i(2)Do…Loop循环语句1)当型前测试型2)当型后测试型DoWhile条件循环体LoopDo

循环体LoopWhile条件3)直到型前测试4)直到型后测试DoUntil条件循环体LoopDo

循环体LoopUntil条件1)当型循环前测试型语法格式:

DoWhile条件循环体

Loop条件循环体真假例1:计算1+2+3+……+100。开始i<=100输出sum的值结束真假i=i+1Sum=0i=1sum=sum+i开始p<26

输出p,y

结束真假y=y+1p=13y=0p=p*1.08例2程序实现:4)直到型循环后测试型语法格式:

Do

循环体

LoopUntil条件条件循环体真假例:下面程序运行结果是()PrivateSubForm_Click()i=4a=5Doi=i+1a=a+2LoopUntili>=7Print"i=";i;Print"a=";aEndSubA.i=4a=5B.i=7a=13C.i=8a=7D.i=7a=11(3)For…Next循环语句格式:

ForV=e1Toe2[Stepe3]

循环体

Next[v]V不超过e2V←e1V←v+e3计算e1,e2,e3循环体执行next后的语句For-Next语句执行过程真假引例:计算1+2+3+……+n。开始i<=n输出sum的值结束真假i=i+1Sum=0输入ni=1Sum=sum+i5.3循环程序举例例:以下程序代码所计算的数学式是

。PrivateSubCommand1_Click()s=1:n=2DoWhilen<1000s=s+nn=n+2LoopPrint"s=";sEndSubA.s=1+2+4+6+…+998B.s=1+2+4+6+…+1000C.s=2+4+6+…+998D.s=2+4+6+…+1000例:求n!。fact=1:i=1开始i<=n输出fact的值结束真假fact=fact*ii=i+1

例:输入两个正整数,求它的最大公约数。

分析:求最大公约数可以用“辗转相除法”。如果两个正整数分别为m和n,其具体操作为:⑴求出m/n的余数r;⑵若r≠0,则把原来的除数n作为新的被除数m,把余数r作为新的除数n;⑶重复⑴、⑵的操作,直到r=0为止。最后的除数n便是最大公约数。例:设计一个窗体,输入一个十进制整数,将其转换成二进制数后输出。(上机操作)

例:编写程序,计算1×2×3…×n,找出能使计算结果大于106的n的值开始f>106

输出i-1

结束假i=i+1f=1i=1f=f*i算法流程图:真例:求素数。输入一个正整数,判断该数是否是素数。

分析:所谓的“素数”是指一个自然数除了1和该数本身,不能被任何其它整数整除。判断一个自然数n(n>=3)是否为素数,只要依次用2~Sqr(n)整数作为除数去除n,若n不能被其中任何一个数整除,则n为素数,否则便不是素数。n不是素数输入n开始i<=sqr(n)n是素数结束真假i=i+1nmodi<>0i=2假i>sqr(n)真真假例:编写程序,实现单击窗体后,在窗体上输出的图形如图所示。5.3多重循环

多重循环的执行过程是:外层循环每执行一次,内层循环就要从头开始执行一轮。例:编写程序,计算级数1+1/3!+1/5!+1/(2N+1)!的值,直到最后一个级数项的值小于10-6为止。例:编写程序,实现单击窗体后,在窗体上输出的图形如图所示。例:计算1!+2!+3!+…+n!(上机操作)例:编写程序,实现单击窗体后,在窗体上输出的图形如图所示。(上机操作)例:计算1!+2!+3!+…+n!(上机操作)

例:求下述数列前n项之和。算法:数列的第1项为2,根据所给出的5项,可以得到求该数列各项的递推公式。设为数列的第n项,则数列的第n+1项为:例:穷举法解不定方程。在“算经”里有一百鸡问题:鸡翁一值钱五,鸡母一值钱三,三鸡雏值钱一,百钱买百鸡。问鸡翁、鸡母、鸡雏各几何?分析:设公鸡x只,母鸡y只,小鸡z只,依题义可以列出方程组:5.4列表框与组合框5.4.1列表框列表框1.常用属性

(1)List属性:

(2)ListIndex属性:

(3)ListCount属性:

(4)Selected属性:

(5)Text属性:

(6)Style属性:2.事件列表框可接收Click,DblClick等事件。注意,在程序运行中执行语句向属性ListIndex赋值的语句,也将触发列表框的Click事件。3.方法

⑴AddItem方法:object.AddItemitem[,index]⑵RemoveItem方法:object.RemoveItemindex⑶Clear方法:object.Clear例:设计一个程序,找出100~1000范围内所有能同时被3和7整除的自然数,在列表框中显示出来。例5-14

选择和移动数据,用户界面如图5-29所示。窗体上有2个标签、2个列表框和2个命令按钮。左边列表框(List1)列出10-99之间的整数,右边列表框(List2)列出被选中的数。程序运行时,按“选项右移”或“选项左移”可将已选择项移动到右边或左边列表框。5.4.2组合框组合框

这三种样式和属性Style设置值为:

下拉式组合框0vbComboDropDown

简单组合框1vbComboSimple

下拉式列表框2vbComboDropDownList例:设计程序,把一批课程名放入组合框,再对组合框进行项目显示、添加、删除、全部删除等操作。习题5一.单选题1.下列循环语句所确定的循环次数是

。Fork=200#To100Step-2*10n=n+1Next

A.6B.5C.4D.32.写出下列事件过程的运行结果。PrivateSubCommand1_Click()s=0Fork=10To50Step15s=s+kNextPrintsEndSubA.20B.130C.75D.553.分析下列程序,回答以下问题:⑴语句s=s+n被执行的次数为

。⑵程序的运行结果为

。PrivateSubCommand1_Click()n=1:s=1DoWhilen<6s=s+nIfn<3Thenn=n+1Elsen=n+2LoopPrintsEndSub⑴A.2B.3C.4D.5⑵A.13B.12C.11D.104.写出下列程序运行的结果。PrivateSubCommand1_Click()s="0123456789":c=""Fork=2ToLen(s)Step3a=Left(s,k)b=Right(a,k)c=Mid(b,k,1)+cNextPrintcEndSubA.7410B.741C.735D.415.执行下列程序后,变量s的值是

。PrivateSubCommand1_Click()s=0Form=1To3n=1DoWhilen<=ms=s+nn=n+1LoopNextPrintsEndSubA.4B.7C.10D.156.以下程序代码所计算的数学式是

。PrivateSubCommand1_Click()s=1:n=2DoWhilen<1000s=s+nn=n+2LoopPrint"s=";sEndSubA.s=1+2+4+6+…+998B.s=1+2+4+6+…+1000C.s=2+4+6+…+998D.s=2+4+6+…+10007.数列0,1,1,2,3,5,8,…称为波契纳数列,它的前两个数是0和1,以后每一个数都是前两个数之各和。输出这个数列的前20个数。将下列程序代码补充完整。PrivateSubCommand1_Click()a=0:b=1Printa;b;Fork=3To20

⑴Printc;

⑵

⑶

NextEndSub⑴A.c=aB.c=a+bC.c=bD.a=c+b⑵A.b=aB.a=cC.a=bD.c=b⑶A.b=aB.b=cC.a=bD.c=a

8.将数据项“计算机”添加到列表框List1中作为第8项的内容,应使用

。

A.List1.AddItem“计算机”,8B.List1.AddItem“计算机”,7C.List1.AddItem8,“计算机”

D.List1.AddItem7,“计算机”9.读取列表框中的第3个表项值,把值赋给变量x,不可以采用

。

A.x=List1.List(2)B.x=List1.Text(2)C.List1.Selected(2)=TrueD.x=List1.Text10.在组合框Combo1中选定某一表项后,单击命令按钮(名称为Command1)即可删除该表项,Command1的单击事件过程是:PrivateSubCommand1_Click()IfCombo1.ListIndex<>-1ThenCombo1.RemoveItem

EndIfEndSubA.Combl1.ListCountB.Combo1.ListIndexC.Combo1.TextD.Combo1.MultiSelect二.填空题1.设n和s均为整型变量,分别具有初值1和10。试指出下列循环语句的循环体各执行多少次,以及结束循环后n值各为多少?⑴n=1:s=10⑵n=1:s=10DoWhilen<=s

DoUntiln*s>40

n=n+3

n=n*2

Loop

Loop

⑶n=1:s=10⑷n=1:s=10Do

Do

n=n*3

n=s\nLoopUntiln>s

n=n+2

LoopWhilen<s

⑸n=1:s=10Whilen<sn=n+3Wend2.以下程序段从文本框Text1中输入一个串,把该字符串按相反的次序显示在文本框Text2中。如输入“ABCDE”,输出“EDCBA”。PrivateSubCommand1_Click()DimsAsString,tAsString,cAsStrings=Trim(Text1.Text):t=""Fork=1To⑴c=⑵t=⑶Next

⑷=tEndSub3.设m和n都是正整数,输入m,求当2n大于等于m时,n的最小值是多少?将下列程序补充完整。PrivateSubCommand1_Click()DimmAsLong,tAsLong,nAsIntegerm=Val(InputBox("输入大于1的正整数m:","输入数据"))n=⑴t=0DoWhileTruen=⑵t=⑶Ift>=mThenPrint"2的";n;"次方≥";mExitDoEndIfLoopEndSub4.如果只允许在列表框中每次只能选择一个列表项,则必须将其MultiSelect属性设置为

。5.用户可以通过

属性来输入或取得组合框中的数据。6.在3种组合框中,仅供选择其中表项数据,但不允许添加数据的组合框是

。7.在下拉组合框中添加表项,可以使用

方法;为组合框删除表项,可以使用

方法。8.在窗体上已经建立了一个列表框List1和一个标签Label1,然后编写如下3个事件过程:PrivateSubForm_Load()List1.AddItem"ItemA"List1.AddItem"ItemB"List1.RemoveItem1List1.AddItem"ItemC"List1.AddItem"ItemD",1List1.RemoveItem2EndSubPrivateSubForm_Click()Label1.Caption=List1.List(List1.ListCount-1)EndSubPrivateSubList1_DblClick()Label1.Caption=List1.TextEndSub运行程序后,开始时在列表框中显示的表项内容是

及

。单击窗体,则在标签中显示

。当双击列框中的列表项“ItemA”时,则在标签中显示

。9.从字符串中查找子字符串“123”,将该子字符串删除,但“1234”子字符串保留,如将“AB123C1234DE123F”处理成“ABC1234EF”。完成下列程序代码。PrivateSubForm_Load()x=InputBox("输入字符串")p=InStr(x,"123")DoWhilep>0IfMid(x,p+3,1)<>"4"Thenx=Left(x,p-1)+

Elsep=p+

EndIfp=InStr(

,x,"123")LoopMsgBox("处理结果:"+x)UnloadMeEndSub上机编程练习51.求级数S=1/(1+4)+1/(1+2×4)+1/(1+3×4)+…+1/(1+n×4)+…的前100项之和。2.如果一个三位整数等于它的各位数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论