【课件教程】第4.3章 循环结构程序设计 Visual Basic 计算机二级VB考试学习资料

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

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

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

资源描述

4.3循环结构程序设计学习重点和难点循环的概念(重点)循环的基本语句结构和流程(难点)循环在常用算法中的应用(重点)和顺序结构、选择结构一样,循环结构是结构化程序中的三种基本程序结构之一。在程序中,凡是需要重复相同或相似的操作步骤,都可以用循环结构来实现。循环结构由两部分组成:•循环体,即要重复执行的语句序列;•循环控制部分,即用于规定循环的重复条件或重复次数,同时确定循环范围的语句。要使计算机能够正常执行某循环,由循环控制部分所规定的循环次数必须是有限的,即循环体可以重复0次到若干次。引例单击窗体,要求在窗体上显示6行星号分析:要求显示的信息是每行是由16个星号所构成的字符串,所以可以通过连续6次调用窗体的Print方法实现图形的显示PrivateSubForm_Click()Print****************Print****************Print****************Print****************Print****************Print****************EndSub若要求显示10行或更多行这样的信息若打印信息的行数要求是由用户决定专门用于进行重复操作的语句结构循环结构Do-Loop循环结构当型循环(While)直到型循环(Until)While型循环结构For-Next循环结构Do…Loop循环结构有几种演变形式,但每一种都是通过判断某条件以决定循环是否继续执行。所不同的是,是先判断条件后执行循环体,还是先执行循环体后判断条件;是条件成立时执行循环(当型循环),还是条件不成立时执行循环(直到型循环)。1.Do…Loop循环语句Do循环前测试型后测试型当型(DOWHILE……LOOP)直到型(DOUNTIL……LOOP)当型(DO……LOOPWHILE)直到型(DO……LOOPUNTIL)格式一:前测式当型循环DoWhile条件循环体[ExitDo]Loop格式二:前测式直到型循环DoUntil条件循环体[ExitDo]Loop格式三:后测式当型循环Do循环体[ExitDo]LoopWhile条件格式四:后测式直到型循环Do循环体[ExitDo]LoopUntil条件Do…Loop循环结构的四种格式当型循环(While)格式1DoWhile循环条件循环体Loop格式2Do循环体LoopWhile循环条件True循环条件循环体False循环条件循环体TrueFalse直到型循环(Until)格式1DoUntil循环条件循环体Loop格式2Do循环体LoopUntil循环条件False循环条件循环体True循环条件循环体FalseTrue四种格式的区别在于条件的书写位置不同,可以写在Do语句之后,也可以写在Loop语句之后,另外,条件之前的关键字可以是While,也可以是Until。•使用While条件时,当指定的条件为True时,执行循环体中的语句组,而当条件为False时则退出循环,执行循环终止语句Loop之后的语句。•使用Until条件时,当指定的条件为False时,执行循环体中的语句组,而当条件为True时则退出循环,执行循环终止语句Loop之后的语句。使用While和使用Until的区别是:•While条件表示当条件成立时执行循环体,•Until条件则是在条件不成立时执行循环体。也可以在Do语句和Loop语句之后都没有条件判断,这时循环将无条件地重复,因此在这种情况下,在循环体内必须有强行退出循环的语句,如ExitDo语句,以保证循环在执行有限次数后退出。ExitDo语句用于退出循环体,执行Loop语句之后的语句。该语句一般放在某条件结构中,用于表示当某种条件成立时,强行退出循环例:X=9DOPRINT“**”X=X-1IFX0THENEXITDOLOOP用循环实现引例单击窗体,要求在窗体上显示6行星号分析:要求重复6次输出一行由16个星号所构成的字符串,因此,循环条件就是输出的行数6,重复执行的循环体就是Print****************PrivateSubForm_Click()DimiAsInteger'定义计数器变量i来记录目前已输出的行数i=0DoWhilei6'当输出行数未达到6行,反复执行下面语句Print****************i=i+1'每输出一行信息,计数器i累加1Loop'返回到DoWhile行EndSub练习:用其他几种DO…LOOP语句改写程序用循环实现引例单击窗体,要求在窗体上显示n行星号分析:要求输出的16个星号的行数由用户决定——InputBoxPrivateSubForm_Click()…n=Val(InputBox(请输入行数:))'接收用户输入的行数i=0DoWhilein'当输出行数没有达到n行,就反复输出Print****************i=i+1'每输出一行信息,计数器i累加1Loop'返回到DoWhile行EndSub例4-10求1+2+3+…+n3000的最小n值。2、While型循环控制语句格式While循环条件循环体Wend这种结构使用完全类似于Do-Loop的当型循环(格式1),表示当循环条件为True时,反复执行循环体,直到循环条件为False为止一般,现在常用Do-Loop结构化与适应性更强的当型循环格式替换这种格式3、For-Next循环结构语句格式For循环控制变量=初值To终值[Step步长]循环体Next[循环控制变量]循环控制变量也称为“循环变量”、“控制变量”或“循环计数器”,它必须为数值型变量。初值、终值和步长也必须是数值表达式。其中步长是指每次循环变量的增量,一般当初值终值时,步长应取正数,而当初值终值,则步长应取负值。仅当步长为1时,Step步长可以省略在已知循环要执行多少次时,最好使用For…Next循环。在For…Next循环中使用一个起计数器作用的循环变量,每重复一次循环之后,循环变量的值就会按一定的步长增加或者减少,直到超过某规定的终值时退出循环。For语句和Next语句之间的循环体,可以由多条语句构成Next表示循环控制变量取下一个值,即首先完成循环变量的递增操作,即循环变量=循环变量+步长,然后类似于Do-Loop循环中的Loop,再返回至For语句行循环次数的一般计算公式:Int((终值-初值)/步长)+1事先已知循环次数,则可使用For-Next循环结构语句——计数循环For-Next循环结构语句的执行流程图计算初值、终值和步长表达式的值循环变量=初值表达式的值循环体循环变量=循环变量+步长循环变量超过终值?TrueFalseForI=2to18step3c=c+1printI,cNextIprintI,c上述For的循环次数第几次循环I12253841151461720c=18ForI=2tocstep3c=c+1NextI上述代码段中虽然变量c在循环体内改变,但根据For循环执行流程,循环控制变量I的终值依旧为18,并未改变,因此循环次数=6第几次循环cI1225384115146172019202122232424当循环变量在循环体内被重新赋值,则会影响和改变循环次数c=18ForI=2to18step3c=c+1I=I+2NextI上面循环体中,循环控制变量I被改变,所以此时会影响循环次数,循环次数=4第几次循环cI1224394141919202122227121722用For循环实现引例For循环实现:单击窗体,要求在窗体上显示6行星号PrivateSubForm_Click()DimIAsInteger'定义一个循环变量I来控制输出的行数'当输出行数没有超过6行,就反复执行下面的语句ForI=1To6'步长为1,可省略Step1Print****************NextI'完成I根据步长完成递增,即I=I+1,并返回到For行EndSub例题求1+2+3…+n的值分析:求多项数据之和,首先得设置一个累加器sum,存放累加结果。根据一般人们求和的步骤,多个数据累加的过程如下:sum0=0sum1=sum0+1sum2=sum1+2sum3=sum2+3………………sumn=sumn-1+n归纳:求多项数据之和,整个累加过程一直在重复执行sum=sum+i,一共重复n次,其中累加项i的变化规律为:i=i+1,i的初值为1,终值为n,即当i的值超过n结束累加操作求1+2+3…+n程序代码设计:循环体是sum=sum+i,而累加项i的变化恰好与累加次数一致,所以可以利用累加项i来控制循环次数,即将i兼用做循环变量,初值为1,终值为n,步长为1PrivateSubForm_Click()DimsumAsInteger,iAsIntegern=Val(InputBox(请输入累加的终值n:))sum=0'累加器清零Fori=1Tonsum=sum+i'累加NextiPrint1+...+;n;=;sumEndSub求1~n之间所有的偶数之和例题求1!+2!+3!…+10!的值。(书80页例4-13)分析:S存放累加结果,t存放每项值1!=1S=1!2!=1!*2S=S+2!3!=2!*3S=S+3!4!=3!*4S=S+4!…………t=t*nS=S+t4、循环嵌套无论是Do-Loop循环,还是For-Next循环,都可以在大循环中套小循环,进行嵌套使用,而且允许不同类型的循环进行嵌套使用嵌套的层数没有具体限制,但必须注意:每一个循环必须有一个唯一的循环控制变量(不能同名);内层的小循环一定要完整地被包含在外层的大循环之内,而不得相互交叉,即内层循环的Next语句必须放在外层循环的Next语句之前Fori=1To9Forj=1To9Printi;*;j;=;i*j;NextjPrintNexti例题4-14打印乘法“九九表”分析:9*9的二维表,用双重循环。PrivateSubForm_Click()FontSize=12PrintTab(25);“九九表”Print*;Fori=1To9PrintTab(i*6);i;NextIPrintForj=1To9Printj;Fork=1Tojm=j*kPrintTab(k*6);m;NextkPrintNextjEndSub思考题:素数问题素数就是大家在数学中熟知的质数,即一个大于1且只能被1和它本身整除的整数输入一个正整数,判断该正整数是否为素数分析:从素数的定义出发:既然素数除了1和它本身之外,不能被任何数整除,那么就把待判断的数X依次与除了1和它本身之外的其他所有的数进行除,看是否有整除的情况;若有,表示X不是素数,否则就是素数。除数的范围i从2开始到X-1(因为一个数不可能能整除比它自身大的数),由于要对这个范围内的每一个数都进行相同的重复除操作,所以使用循环输入一个正整数,判断该正整数是否为素数Fori=2Tox-1'如果能被某个数据整除,x就不是素数,直接提前结束循环IfxModi=0ThenExitForNextiIfi=x-1Then'若i=x-1循环非正常结束,说明x不是素数MsgBoxCStr(x)&不是素数Else'如果x不能被[2,x-1]数整除,则循环正常结束,ix-1,即说明x是素数MsgBoxCStr(x)&是素数EndIf利用循环实现数字金字塔输出分析:一共要输出指定塔高n行信息。每行信息都是有规律的:先重复输出若干个空格,然后重复输出若干个对应行号的数字字符,其中输出空格的数量和数字字符的数量都是有规律的:第1行,1个数字“1”,n-1个空格;第2行,3个数字“2”,n-2个空格;依次类推,可以找到规律:第i行,先输出n-i个空格,然后输出2i-1个数字字符“i”程序代码设计设置循环变量I控制输出信息的行数(1~n),循环体就是有规律的输出一行

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

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

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

×
保存成功