




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5循环结构设计计算机具有速度快、精度高的特点,特别适于进行重复性的工作,重复次数越多越能显示它的威力。所以,使用计算机时,应尽量把问题归纳为简单而有规则的重复运算和操作,以充分发挥计算机的特长。
采用循环程序可以解决一些按一定规则重复执行的问题。例如,统计一个班几十名学生,甚至全校几千名学生的学期成绩,如求平均分、不及格人数等
本章主要内容
第5章循环结构设计Do...LoopFor...Next退出循环出口语句(Exit)循环语句多重循环列表框与组合框程序举例
循环是指在指定的条件下多次重复执行一组语句被重复执行的一组语句称为循环体VB提供的循环语句有For...NextDo...LoopWhile...WendForEach...Next最常用的是For...Next和Do...Loop语句
假真循环体循环条件算法:通常采用重复运算来解决问题
累加、累乘等如用级数π/4=1-1/3+1/5-1/7+……来求π设置循环变量
使每次运算变量值有所不同控制循环
计数控制或条件控制
循环结构程序的实现求S=1+2+3+…+8s=0Fork=1To8s=s+kNextkPrint"s=";s
把长式子改为8次加
采用Print直接在窗体上输出结果,程序代码:
PrivateSubForm_Load()Showt=1Forc=1To8t=t*cNextcPrint"T=";tEndSub程序运行结果是:
T=40320
语句t=t*c也称乘法器。先将t置1(不能置0)。
在循环程序中,常用累加器和累乘器来完成各种计算任务例5.3求T=8!=1×2×3×…×8例5.3
采用Print直接在窗体上输出结果,程序代码如下:PrivateSubForm_Load()ShowDimpiAsSingle,cAsInteger,sAsIntegerpi=0s=1's表示加或减运算Forc=1To10000Step2pi=pi+s/cs=-s'交替改变加、减号NextcPrint"π=";pi*4EndSub
程序运行结果是:
π=3.141397
例5.4用π/4=1-1/3+1/5-1/7+……级数求π的近似值(取前5000项来进行计算)例5.4
Fort=1To3Ift<=1Thena=3Ift<=2Thena=2Ift<=3Thena=1Printa;NexttPrinttA.3333B.1234C.3214D.1114
下列程序的运行结果是?想一想思考题D
运行下面程序后,循环体执行了______次。
i=0:n=1DoWhilei<32i=(i+1)*(i+1)n=n+1LoopPrintnA.2B.3C.4D.5请回答问题想一想思考题C
采用DoWhile...Loop语句
采用Print直接在窗体上输出结果,程序代码:PrivateSubForm_Load()DimnAsInteger,sAsLongShown=1:s=0DoWhilen<=100s=s+n*nn=n+1LoopPrint"s=";sEndSub
程序运行结果:
S=338350例5.6求S=12+22+…+1002例5.6采用Print直接在窗体上输出结果,程序代码:PrivateSubForm_Load()ShowDimpiAsSingle,nAsLong,sAsIntegerpi=0:n=1:s=1DoWhilen<=100000'或1/n>=0.00001pi=pi+s/ns=-sn=n+2LoopPrint"π=";pi*4EndSub
程序运行结果:
π=3.141575例5.7
用π/4=1-1/3+1/5-1/7+……级数,求π的近似值。当最后一项的绝对值小于10-5时,停止计算例5.7
“辗转相除法”算法:求出m/n余数p,若p=0,n即为最大公约数;若p非0,则把原来的分母n作为新的分子m,把余数p作为新的分母n继续求解设计步骤如下:
(1)创建应用程序的用户界面和设置对象属性例5.8输入两个正整数,求它们的最大公约数例5.8
编写的“计算”按钮Click事件过程代码如下:PrivateSubCommand1_Click()DimmAsInteger,nAsInteger,pAsIntegerm=Val(Text1.Text):n=Val(Text2.Text)Ifm<=0Orn<=0ThenMsgBox("数据错误!")EndEndIfDop=mModnm=nn=pLoopWhilep<>0Text3.Text=mEndSub
若输入的m和n的值为85和68,则运行结果如上图
用于提前退出循环
格式:Exit{For|Do}
功能:直接从For循环或Do循环中退出
当程序运行时遇到Exit语句时,就不再执行循环体中的任何语句而直接退出,转到循环语句(Next、Loop)的下面继续执行5.1.4循环出口语句
把每次输入的数累加。当输入-1时结束程序的运行
(1)创建应用程序的用户界面和设置对象属性
(2)编写程序代码
PrivateSubForm_Load()ShowSum=0DoWhileTrue'条件为真,循环无终止进行下去x=Val(InputBox("请输入要加入的数(-1表示结束)","输入数据"))Ifx=-1ThenExitDoEndIfSum=Sum+xText1.Text=SumLoopMsgBox("累加运算结束")EndSub
以-1作为“终止循环标志”例5.9设计一个“加法器”程序例5.9
本例可采用两重循环来实现。外循环控制输出7行,内循环控制每行输出要求的字符数。在进入内循环之前,使用PrintTab()来对起始输出位置定位,退出内循环后,使用Print来控制换行。例5.11
编一程序,输出下列所示的图形例5.11
采用Print直接在窗体上输出结果,程序代码如下:
PrivateSubForm_Load()
ShowFori=1To7PrintTab(10-i);Forj=1To2*i-1PrintChr(i+48);NextjPrintNextiEndSub
PrintChr(i+48)与Printi有所不同
(3)编写程序代码
程序通过Print方法把处理结果输出在标签的下方
PrivateSubForm_Load()ShowCurrentX=0:CurrentY=1500'确定开始显示的坐标Print,"五元","二元","一元"n=0'记录解的组数Fora=0To10Forb=0To10c=10-b-aIfa+2*b+5*c=25Andc>=0Thenn=n+1Print"(";n;")",c,b,aEndIfNextb,aEndSub执行下列程序段后,变量t的值是______。t=0Forx=2To3n=1DoWhilen<=xt=t+nn=n+1LoopNextxA.8 B.9C.10 D.11
请回答问题想一想思考题B5.3列表框与组合框列表框和组合框都能为用户提供若干个选项,供用户从中任意选择5.3.1列表框(ListBox)
List属性:字符型数组,存放列表框的表项数组的下标从0开始例如,List1.List(0)的值为“教授”,List1.List(1)的值为“副教授”ListCount属性:表项数目Text属性:当前选定表项的文本内容ListIndex属性:返回已选定表项的顺序号(索引)。若未选定任何项,则ListIndex的值为-1Selected属性:逻辑型数组,表示列表框中对应表项是否被选中例5.12b
假设列表框List1中有四个表项,并已选定第2项,则有:List1.ListIndex为1List1.Text的值为”副教授”List1.Selected(1)为True
方法
(1)AddItem方法:用于把一个列表项加入列表框
格式:[对象.]AddItem列表项[,索引]
举例:List1.AddItem"海南省",28(2)Clear方法:用于清除列表框中的所有项目(3)RemoveItem方法:用于删除指定的列表项采用以下方法,可为列表框List1赋值:
(1)在属性窗口中设置
(2)利用AddItem赋值(3)利用List属性赋值
List1.AddItem“教授”List1.List(0)=“教授”List1.AddItem“副教授”List1.List(1)=“副教授”List1.AddItem“讲师”List1.List(2)=“讲师”List1.AddItem“助教”List1.List(3)=“助教”
(1)分析:判别条件为(nMod3=0)And(nMod8=0)
(2)创建应用程序的用户界面和设置对象属性
例5.13设计一个程序,找出100~800范围内所有能同时被3和8整除的自然数例5.13
(3)编写程序代码
编写的“显示”按钮Click事件过程代码:PrivateSubCommand1_Click()List1.ClearForn=100To800If(nMod3=0)And(nMod8=0)ThenList1.AddItemnEndIfNextnEndSub
(1)创建应用程序的用户界面和设置对象属性
用户先在左列表框(List1)选择一个或多个选修课,当单击“显示”按钮时,在右列表框(List2)中将显示出用户选中的所有课程。单击“清除”按钮时,将清除右列表框中的内容
(2)编写程序代码例5.14设计一个选课程序MultiSelect属性值为2例5.14PrivateSubForm_Load()List1.AddItem"电子商务"List1.AddItem"网页制作"List1.AddItem"Internet简明教程"List1.AddItem"计算机网络基础"List1.AddItem"多媒体技术“EndSubPrivateSubCommand1_Click()
'"显示"按钮单击事件List2.Clear'清除列表框的内容Fori=0ToList1.ListCount-1'逐项判断IfList1.Selected(i)Then'真时为选定
List2.AddItemList1.List(i)EndIfNextiEndSubPrivateSubCommand2_Click()
'"清除"按钮单击事件List2.ClearEndSub
允许从已有的选项中进行选择,还允许输入列表中不包括的内容
列表框和文本框的组合具有列表框和文本框的大部分属性和方法。独有的一些属性:
(1)Style属性:该属性取值为0,1或2,分别决定了组合框的三种不同类型
下拉组合框(DropdownCombo)
简单组合框(SimpleCombo)
下拉列表框(DropdownList)5.3.2组合框
(2)Text属性:该属性是用户所选定项目的文本或直接从文本框输入的文本
(1)创建应用程序的用户界面和设置对象属性
窗体上含有Combo1,Combo2,Combo3三个组合框,其Style属性从左至右分别为0、1和2,即除了“内存”容量大小只能从列表中选择外,其余内容既可以从列表中选择,也可以由用户输入。在属性窗口中输入相关数据
例5.15a在窗体上设置3个组合框,用于选择微机部分配置,
包括CPU/主频、硬盘及内存。
Style=0下拉组合框Style=1简单组合框Style=2下拉列表框图片框设计界面运行界面例5.15a(2)编写程序代码PrivateSubForm_Load()Combo1.Text=Combo1.List(0)Combo2.Text=Combo2.List(0)Combo3.Text=Combo3.List(0)EndSubPrivateSubCommand1_Click()
'“确定”按钮的事件过程Picture1.ClsPicture1.Print"微机的基本配置"Picture1.PrintString(20,"=")Picture1.Print"CPU:";Combo1.TextPicture1.Print"硬盘(GB):";Combo2.TextPicture1.Print"内存(MB):";Combo3.TextEndSub5.4程序举例
例5.16打印“九九乘法表”两重循环;采用Print直接在窗体上输出结果例5.16打印“九九乘法表”PrivateSubForm_Load()ShowFontSize=15'设置字号PrintTab(12);“九九乘法表“'输出标题FontSize=12Print'输出空行Fork=0To9PrintTab(k*4);k;'输出第一行数字NextkPrint'换行Forj=1To9'外循环Printj;Fork=1Toj'内循环PrintTab(k*4);j*k;'输出乘积NextkPrint'换行NextjEndSub
(1)创建应用程序的用户界面和设置对象属性
功能要求:用户在文本框Text1中输入要转换的十进制数,选择转换进制,单击“转换”按钮(Command1)后,则在文本框Text2中输出转换结果。例5.17输入一个十进制整数,将其转换成二进制
数、八进制数或十六进制数例5.17
(2)算法:模仿十进制整数转换成二进制数的方法(即“除2取余”),采用逐次“除n取余”法(n为2,8或16),即用n不断去除要转换的十进制数,直至商为0为止,将每次所得的余数逆序排列(以最后余数为最前位),即得到所转换的n进制数。示例:(6)10=(110)2(142)10=(8E)16
260
231
211
0反序1614214(E)
16880求余数=142Modn求商数=Int(142/n)
(3)把0~15转换为十六进制数”0”~”F”把数值0~9,10~15转换为字符“0”~”9”,”A”~”F”利用“换码表”(Ch变量)Ch=“0123456789ABCDEF”要把数值s(0~15)转换为十六进制数码”0”~”F”,可采用
c=Mid(Ch,s+1,1)即以s+1确定位置,从Ch中取出相应的一个字符。当s=5时,c=“5”当s=14时,c=“E”
(4)ItemData属性的作用
列表框的名称为List1,其List属性设置了三个表项:二进制、八进制和十六进制,ItemData属性设置了相应的值:2,8和16(5)编写程序代码属性ListIndex二进制八进制十六进制ItemData属性2816List属性PrivateSubCommand1_Click()
'“转换”按钮单击事件过程DimyAsString,xAsLong,sAsIntegerDimChAsString,nAsIntegerCh="0123456789ABCDEF"'换码表IfList1.ListIndex=-1Thenn=2'未选,则以二进制转换Elsen=List1.ItemData(List1.ListIndex)EndIfy="":x=Val(Text1.Text)Ifx=0ThenText2.Text=""ExitSubEndIfDoWhilex>0s=xModn'取余数x=Int(x/n)'求商y=Mid(Ch,s+1,1)+y'换码,反序加入LoopText2.Text=yEndSubPrivateSubCommand2_Click()'结束EndEndSub示例:(142)10=(8E)16
(1)创建应用程序的用户界面
(2)设置对象属性
组合框的Style属性为0,TabIndex(键序)为0
两个标签;四个命令按钮;一个文本框Text1,用来显示当前的选修课总课程数例5.15编制程序,把一批课程名放入组合框中,再对组合框进行项目显示、添加、删除、全部删除等操作例5.15
(3)编写程序代码
PrivateSubForm_Load()Combo1.AddItem"电子商务"Combo1.AddItem"网页制作"Combo1.AddItem"Internet简明教程"Combo1.AddItem"计算机网络基础"Combo1.AddItem"多媒体技术"Combo1.Text=""'置空值Text1.Text=Combo1.ListCount'表项个数
EndSubPrivateSubCommand1_Click()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 臂神经痛的临床护理
- 2025酒店管理委托合同
- 胃反应性淋巴增生的临床护理
- 2025企业委托代理经营合同范本
- 2025指定赠与合同范文
- 生理学期末测试卷及答案
- 上栗县六年级试卷及答案
- 山东英语八下期末试卷及答案
- MRPⅡ原理专题培训讲义
- 石油开采与能源安全战略考核试卷
- 2024年中国光大银行招聘考试真题
- 2025-2030中国油漆和涂料消光剂行业市场发展趋势与前景展望战略研究报告
- 2025年储能项目可行性分析报告
- 2025年山西焦煤集团国际发展股份有限公司招聘笔试参考题库附带答案详解
- 水泥装卸合同协议
- 金华兰溪市卫健系统普通高校招聘医学类笔试真题2024
- 2025年浙江省杭州市萧山区中考一模数学模拟试卷(含详解)
- 《食品生产经营企业落实食品安全主体责任监督管理规定》解读与培训
- 道路普通货运企业安全生产达标考评方法和考评实施细则
- DB15T 3516-2024野生动物救护站建设规范
- 火灾自动报警系统设计规范完整版2025年
评论
0/150
提交评论