VB循环结构程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3.3循环语句程序的另一种结构是循环结构循环结构作用是重复执行一段程序循环是有条件的、次数是有限的VB的循环语句:For…Next、DoWhile…LoopForEach…Next、While…Wend应用最多的:For…Next与DoWhile…Loop返回目录3.4循环语句-For…Next循环For…Next循环一般应用于循环次数已知的场合For循环变量=初值To终值[Step步长]语句块(循环体)Next[循环变量]工作原理返回目录循环变量=初值循环变量超出范围?循环体循环变量增加一个步长NoYesStep缺省为13.4循环语句-For…Next循环[例3.9]求1+3+5+7+…+99PrivateSubForm_Click()DimSumAsInteger,IAsIntegerSum=0'保存累加和,先清零ForI=1To99Step2Sum=Sum+INextIMsgBox1+3+5+…+99=&Sum,,求和EndSub返回目录本例的特点是数据项之间相差2,即Step的值为2思考:例中当输出对话框出现时,I的值是多少?如果省略Step2,程序的结果如何?For语句能不能改写成ForI=99To1Step-2?3.4循环语句-For…Next循环[例3.10]求平均成绩ConstN=10'学生人数PrivateSubForm_Click()DimSumAsInteger,IAsIntegerDimDataAsInteger,AverageAsSingleSum=0'存放累加值的变量清零ForI=1ToN'循环40次,步长值为1省略Data=InputBox(输入第&I&位同学的成绩,求平均分)Sum=Sum+DataNextIAverage=Sum/NMsgBox全班&N&名学生的平均分为&Average,,求平均分EndSub返回目录确定本例的循环变量I控制人数3.5循环语句-Do…Loop循环1.当型循环返回目录DoWhile条件表达式循环体LoopDo循环体LoopWhile条件表达式条件表达式成立?循环体NoYes条件表达式成立?循环体NoYes先判断后执行先执行后判断特点:条件表达式成立执行循环体内容3.5循环语句-Do…Loop循环[例3.12]计算平均分PrivateSubForm_Click()DimDataAsInteger,SumAsInteger,NAsIntegerDimAverageAsSingleSum=0:N=0Data=InputBox(输入第&N+1&个同学的成绩,求平均分)DoWhileData-1'-1表示结束输入Sum=Sum+DataN=N+1Data=InputBox(输入第&N+1&个同学的成绩,求平均分)LoopAverage=Sum/NMsgBoxN&位同学的平均分为&Average,,求平均分EndSub返回目录3.5循环语句-Do…Loop循环[例3.13]Sum=1+2+3+…+N求Sum不超过10000的最大整数值和数据项数NPrivateSubForm_Click()DimSum,NAsIntegerN=0'开始时项数为0Sum=0'保存累加值的变量Sum清零DoWhileSum=10000N=N+1Sum=Sum+NLoopSum=Sum-NN=N-1PrintSum=;Sum,N=;NEndSub返回目录当Sum的值超出10000时循环才终止。因此Sum值要减去多加的一个N;而在循环过程中,N也被多加了一个1,需要减去。3.5循环语句-Do…Loop循环2.直到型循环返回目录DoUntil条件表达式循环体LoopDo循环体LoopUntil条件表达式特点:条件表达式不成立执行循环体内容先判断后执行条件表达式成立?循环体NoYes先执行后判断条件表达式成立?循环体NoYes3.5循环语句-Do…Loop循环[例3.14]计算平均分(要求同例4.12)PrivateSubForm_Click()DimDataAsInteger,SumAsInteger,NAsIntegerSum=0:N=0Data=InputBox(输入成绩,计算总分)DoUntilData=-1Sum=Sum+DataN=N+1Data=InputBox(“输入成绩,计算总分)LoopPrint全班平均分为:;Sum/NEndSub返回目录DoWhileData-1Sum=Sum+DataN=N+1Data=InputBox(“输入成绩,计算总分)Loop3.6循环语句-两重循环两重循环:在一个循环的循环体中还包含另一个循环[例3.15]在窗体上显示一个几何图形PrivateSubForm_Click()DimI,JAsInteger'I、J为循环变量ForI=1To8'I控制行数(8行)PrintTab(10-I);'定每行*的起始位ForJ=1ToI'J控制每行输出I个*Print*;NextJPrint'换行NextIEndSub返回目录注意:两重循环不能形成交叉3.6循环语句-两重循环[例3.16]输出乘法口诀表PrivateSubForm_Click()DimIAsInteger,JAsInteger,MAsIntegerForI=1To9ForJ=1ToIM=I*JPrintJ&*&I&=&M&;NextJPrint'打印换行NextIEndSub返回目录3.6循环语句-两重循环[例3.17]计算PrivateSubForm_Click()DimIAsInteger,JAsIntegerDimFAsLong'阶乘值用长整型保存DimeAsDoubleForI=0To10F=1'每个阶乘值先置1以便累乘ForJ=1ToIF=F*JNextJe=e+1/FNextIPrinte=;eEndSub返回目录!101...!31!21!111e本循环计算F=I!3.6循环语句-多重循环多重循环:循环次数在两重以上的循环结构[例3.19]计算将1角钱兑换成零钱有多少种方案PrivateSubForm_Click()DimI,J,K,SAsIntegerS=0'统计兑换1角钱的方案数ForI=0To10'1分钱个数ForJ=0To10Step2'2分钱个数ForK=0To10Step5'5分钱个数IfI+J+K=10ThenS=S+1NextKNextJNextIMsgBox1角钱兑换成零钱的方案有&S&种,,兑换零钱EndSub返回目录1角钱以下的硬币有1分、2分和5分种1角钱全换成1分需10个1角钱全换成2分需5个1角钱全换成5分需2个3.7其他语句-Exit与End1.Exit语句ExitDo:跳出Do…Loop循环ExitFor:跳出For…Next循环[例4.20]判断一个正整数是否为素数(质数)N=InputBox(请输入一个正整数,验证素数)ForI=2ToN-1IfNModI=0ThenExitForEndIfNextIIfI=NThenMsgBoxN&是素数,,验证素数ElseMsgBoxN&不是素数,,验证素数EndIf返回目录素数:一个正整数N除了能被1和自身所整除外,不能被其它任何数所整除。3.7其他语句-Exit与End2.End语句End:终止程序的运行EndSub:终止一个过程;EndFunction:终止函数过程EndIf:终止条件语句EndType:终止类型声明EndSelect:终止情况语句EndProperty:终止属性过程EndWith:终止With语句返回目录例如:PrivateSubCommand1_Click()EndEndSub3.7其他语句-Goto功能:无条件转向格式:Gotolabellabel称为语句标号(数字或标识符)[例3.22]求若干个同学的成绩总分PrivateSubForm_Click()DimData,SumAsIntegerSum=0loop1:Data=InputBox(输入成绩)IfData=-1ThenGoToloop2ElseSum=Sum+DataGoToloop1EndIfloop2:Print总分=;SumEndSub返回目录Goto语句不符合结构化程序设计的要求,所以不提倡使用。程序调试-程序的错误类型语法错误运行错误返回目录中文逗号n未赋过值逻辑错误:算法不正确。显然系统不会报告这类出错信息。程序调试-简单调试方法:在程序中适当插入Print语句跟踪变量值的变化返回目录应该是6与24程序调试-使用调试工具1.断点调试断点:程序执行到该此自动暂停单击“继续”按钮,程序可继续执行。返回目录设置断点:在代码窗口中单击该语句左侧的阴影边框。暂停时,将鼠标指针移动到程序中的各个变量上略作停留,系统将以浮动标签的方式显示该变量的值。程序调试-使用调试工具2.逐语句执行启动逐语句执行:“调试→逐语句”或按F8终止逐语句执行:“调试→跳出”3.使用立即窗口程序运行处于暂停状态时,在立即窗口中输入:Print变量名或?变量名4.逐过程启动逐过程执行:“调试→逐过程”或按Shift+F8终止逐过程执行:“调试→跳出”返回目录

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功