您好,欢迎访问三七文档
循环语句循环控制循环的本质:在一定的条件下,不断地重复某种动作。在许多问题中需要用到循环控制。例如,求若干个数之和:1×1+2×2+3×3=?1+2+3+4+……=?对计算机程序而言,循环必须具备两个重要因素:1.在一定的条件下,重复执行一组指令。2.必然出现不满足条件的情况,使循环终止。例:求1~100的和。根据已有的知识,可以用“1+2+……+100”来求解,但显然很繁琐。现在换个思路来考虑:1、首先设置一个累加器sum,其初值为0;2、利用sum=sum+n来计算(n依次取1、2、…、100),只要解决以下3个问题即可:(1)将n的初值置为1;(2)每执行1次sum=sum+n后,n增加1n=n+1;(3)当n增到101时,停止计算。此时,sum的值就是1~100的累计和。根据已有的知识,单独实现每一步都不难。由于需要经常使用这种重复计算结构(循环结构),VB语言提供了2类循环语句来实现,以简化、并规范循环结构程序设计。循环控制循环语句程序的另一种结构是循环结构循环结构作用是重复执行一段程序循环是有条件的、次数是有限的VB的循环语句:For…Next、DoWhile…Loop、ForEach…Next、While…Wend应用最多的:For…Next与DoWhile…Loop循环语句-For…Next循环For…Next循环一般应用于循环次数已知的场合For循环变量=初值To终值[Step步长]语句块(循环体)Next[循环变量]工作原理循环变量=初值循环变量超出范围?循环体循环变量增加一个步长NoYesStep缺省为1For…Next使用说明:(1)循环变量必须是数值型变量。(2)初值、终值、步长值可以是表达式,一般情况下,它们都应该是整数。(3)步长值可以是正数(初值应当小于终值)或负数(初值应当大于终值),但不能为0。如果步长为1,“step1”可以不写。(4)Next后面的循环变量与For语句中德循环变量必须一致。只想该语句是循环变量的值增加一个步长值。(5)For循环语句中的语句块又称为循环体。例如:ForI=1To10Step1TextBox1.Text=TextBox1.Text&I&NextI该程序段执行10次循环,在文本框内输出结果为:12345678910例:求1~100的累计和Fori=1To100sum=sum+iNexti计算机执行For语句的过程:1)将初值赋予循环变量。2)判断循环变量的值是否小于等于循环终值(步长值为正),如果条件满足,则执行循环体内的语句,循环变量增加步长值;否则循环结束,执行Next语句的后继语句。循环语句-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?循环语句-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控制人数循环语句-Do…Loop循环1.当型循环DoWhile条件表达式循环体LoopDo循环体LoopWhile条件表达式条件表达式成立?循环体NoYes条件表达式成立?循环体NoYes先判断后执行先执行后判断特点:条件表达式成立执行循环体内容DoWhile……Loop语句语句功能:若条件成立,则重复执行循环。语句格式:DoWhile条件语句块Loop说明:(1)语句中的条件与Do……LoopWhile语句的条件相同。(2)计算机执行DoWhile……Loop语句的过程:•首先判断DoWhile语句后的条件,若值是True,则执行Do和Loop之间的语句;若值是False,则循环结束,执行DoWhile……Loop语句的后继语句。例:PW=InputBox(输入密码)DoWhilePWABCDPW=InputBox(输入密码)Loop该程序段首先判断变量PW的值是否为“ABCD”,若不是“ABCD”则执行循环,直到输入“ABCD”后循环结束。循环语句-Do…Loop循环循环语句-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循环语句-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.15]在窗体上显示一个几何图形PrivateSubForm_Click()DimI,JAsInteger'I、J为循环变量ForI=1To8'I控制行数(8行)PrintTab(10-I);'定每行*的起始位ForJ=1ToI'J控制每行输出I个*Print*;NextJPrint'换行NextIEndSub注意:两重循环不能形成交叉循环语句-两重循环[例3.16]输出乘法口诀表PrivateSubForm_Click()DimIAsInteger,JAsInteger,MAsIntegerForI=1To9ForJ=1ToIM=I*JPrintJ&*&I&=&M&;NextJPrint'打印换行NextIEndSub循环语句-两重循环[例3.17]计算PrivateSubForm_Click()DimIAsInteger,JAsIntegerDimFAsLong'阶乘值用长整型保存DimeAsDoubleForI=0To10F=1'每个阶乘值先置1以便累乘ForJ=1ToIF=F*JNextJe=e+1/FNextIPrinte=;eEndSub!101...!31!21!111e本循环计算F=I!循环语句-多重循环多重循环:循环次数在两重以上的循环结构[例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&种,,兑换零钱EndSub1角钱以下的硬币有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总分=;SumEndSubGoto语句不符合结构化程序设计的要求,所以不提倡使用。程序调试-程序的错误类型语法错误运行错误中文逗号n未赋过值逻辑错误:算法不正确。显然系统不会报告这类出错信息。程序调试-简单调试方法:在程序中适当插入Print语句跟踪变量值的变化应该是6与24程序调试-使用调试工具1.断点调试断点:程序执行到该此自动暂停单击“继续”按钮,程序可继续执行。设置断点:在代码窗口中单击该语句左侧的阴影边框。暂停时,将鼠标指针移动到程序中的各个变量上略作停留,系统将以浮动标签的方式显示该变量的值。程序调试-使用调试工具2.逐语句执行启动逐语句执行:“调试→逐语句”或按F8终止逐语句执行:“调试→跳出”3.使用立即窗口程序运行处于暂停状态时,在立即窗口中输入:Print变量名或?变量名4.逐过程启动逐过程执行:“调试→逐过程”或按Shift+F8终止逐过程执行:“调试→跳出”
本文标题:循环语句
链接地址:https://www.777doc.com/doc-3784134 .html