《第4章循环结构.ppt》由会员分享,可在线阅读,更多相关《第4章循环结构.ppt(28页珍藏版)》请在课桌文档上搜索。
1、,第5章 基本控制结构循环结构,本章主要内容,5.1 Do WhileLoop循环结构5.2 ForNext循环5.3 循环嵌套5.4 算法举例5.5 DO循环的其它结构,涉及教材P83-P92内容,5.1 Do WhileLoop循环结构,引例:1.编程计算1+2+3+4+5+6+7+8+9+10的值。2.编程计算1+2+3+100的值。,Dim s As Integers=1+2+3+4+5+6+7+8+9+10Print s,很显然,用上道题的方法来求解这道题,编写程序将会非常的麻烦。,5.1 Do WhileLoop循环结构,1、结构格式Do While Loop 这种循环结构称为前测
2、试当型循环其中:(1)条件为循环测试条件,可以是关系表达式、布尔表达式或数值表达式,如果以数值表达式作为条件,则非0为真,0为假;(2)当条件成立时执行循环,条件不成立时退出循环,然后执行Loop之后的语句,5.1 Do WhileLoop循环结构,2、结构流程图,5.1 Do WhileLoop循环结构,例5-1:用循环结构编程计算1+2+3+4+5+6+7+8+9+10的值。例5-2:计算100-99+98-97+2-1的值课堂练习:计算1+3+5+99的值例5-3:用循环结构在窗体上输出如下图形,5.1 Do WhileLoop循环结构,3、使用循环结构的注意问题:(1)Loop语句用来
3、改变程序的执行方向(2)在循环体中必须有一条语句改变循环控制变量的值,使得在某一时刻循环变量不满足条件而退出循环,否则会出现死循环。(3)若循环体中加入“Exit Do”语句,程序只要运行到这条语句,循环会立即终止,去执行它所在循环的Loop语句之后的语句。“Exit Do”语句叫强行终止Do循环语句。,5.1 Do WhileLoop循环结构,例5-4:计算1*2*3*100的值课堂练习:计算1!+2!+3!+4!+5!的值例5-5:设我国现有人口为13亿,如果每年以1.5%的平均速度增长,问多少年后我国人口达到或超过18亿。课堂练习:求自然对数e的近似值,当任意项的值小于10-4时结束计算
4、,近似公式为:,5.2 ForNext循环结构,对于已知循环次数的循环VB还专门提供了一种控制结构,那就是ForNext循环。1、结构格式:For 循环变量=初值 To 终值 Step 步长Next 循环变量,强调:Next语句有两个功能:(1)改变程序执行方向(2)给循环变量加步长,即 循环变量=循环变量+步长,5.2 ForNext循环结构,说明:(1)循环变量必须是数值型,且最好为整型变量。(2)当步长为正时,初值必须小于终值;当步长为负时,初值必须大于终值,循环才能进行。当步长为1时,“Step 1”可以省略。(3)正常情况下,ForNext循环的循环次数可以用公式算出来:(4)若一个
5、ForNext循环没有执行,那它的作用只相当于对循环变量赋了一次初值。(5)在ForNext结构中,若有“Exit For”语句,程序执行到此语句会跳出循环,执行Next语句之后的语句。,5.2 ForNext循环结构,例5-6:用循环结构编程计算1+2+3+4+5+6+7+8+9+10的值。例5-7:计算100-99+98-97+2-1的值课堂练习:计算1+3+5+99的值例5-8:计算1*2*3*100的值课堂练习:计算1!+2!+3!+4!+5!的值思考 能否用ForNext循环结构编程计算例6-5 设我国现有人口为13亿,如果每年以1.5%的平均速度增长,问多少年后我国人口达到或超过1
6、8亿。,5.2 ForNext循环结构,例5-9:将可打印的ASCII码制成表格输出,使每个字符与它的编码值对应起来,每行打印7个字符。,5.2 ForNext循环结构,例5-10 已知一个数列第一项为1,从第2项开始,每项等于前一项加3,求数列中前20项的值课堂练习:已知一个数列的前两项均为1,从第三项开始,每一项为其前两项之和,求这个数列的前20项。例5-11 从键盘上输入若干个数,求其平均值,当输入的数为-9999时表示输数结束。,5.3 循环嵌套,引例1:在窗体上一行打印10个“*”引例2:在窗体上打印10行“*”,每行打印10个。1、概念 当选择结构中满足或不满足条件的语句组又是一个
7、选择结构时,这种结构叫做选择嵌套。当循环中循环体又是一个循环结构,这种形式叫做循环嵌套。2、注意事项(1)内外嵌套不能交叉,外层要完全包含内层。(2)在循环嵌套中,内外循环的循环变量不能同名。(3)采用缩进格式书写代码可以有效地防止嵌套混乱。,5.3 循环嵌套,3、例题6-14:用循环嵌套结构在窗体上输出一个由“*”组成的三角形。,方法1:单循环结合串函数实现,Private Sub Form_Click()For i=1 To 10 Print String(i,*)Next iEnd Sub,方法2:双重循环实现,Private Sub Form_Click()For i=1 To 10
8、For j=1 To i Print*;Next j PrintNext iEnd Sub,5.3 循环嵌套,例5-15 打印九九乘法口诀表,6.3 循环嵌套,例5-12 设计一个猜数字游戏,计算机随机产生一个0100之间的数,给8次机会,每猜一次通过键盘输入,计算机可以给出“大了点!”、“小了点!”、“猜中了”三种提示,当出现“猜对了”时,程序结束,如果8次都猜不中,用消息框给出正确结果。相传古代印度国王要奖励其聪明能干的 丞相,问他需要什么,丞相回答:“国王只要在国际象棋的第一个格子上放1粒麦子,第二格子上放2粒麦子,第三格子上放4粒麦子,.依次放到64格,我就满足了。”,国王想这有何难,
9、让人按次方法给,结果全印度小麦全部用完都还不够。为什么?,应用举例1:,相传古代印度国王要奖励其聪明能干的丞相,问他需要什么,丞相回答:“国王只要在国际象棋的第一个格子上放1粒麦子,第二格子上放2粒麦子,第三格子上放4粒麦子,.依次放到64格,我就满足了。”,国王想这有何难,让人按次方法给,结果全印度小麦全部用完都还不够。为什么?注意:1米3=1.42X108棵 体积1.31011 米3相当于全国土地铺满1.3厘米厚的小麦,相当我国几百年产量。,应用举例2:百元买百鸡,古代算经题:鸡翁1,值钱5;母鸡1,值钱3;鸡雉3,值钱1。百鸡买百鸡,问鸡翁、母鸡、鸡雉各几何?,应用举例3:,古典数学计算
10、:假设有1对兔子,从出生后3个月开始,每个月都生1对小兔子。问,1年可以有多少兔子?,5.4 简单应用,一、求素数例5-13 从键盘输入一个数m,判断是否为素数。课堂练习:从键盘输入一个数m,判断是否为素数,用Do While loop结构实现。例5-14 求1-100之间的素数,每行输出5个,分多行输出。例5-15 求最初的100个素数,每行输出10个,分多行输出。,5.4 简单应用,二、求最大值、最小值例5-16 用随机函数产生10个10,99之间的随机整数,找出其中最大值。三、求最大公约数与最小公倍数 例5-17 从键盘上输入两个整数M,N,求最大公约数和最小公倍数。求最大公约数最常用的
11、是辗转相除法。思路是:(1)将m除以n得余数r;(2)若r=0,则n为求得的最大公约数,循环结束;若r0,则执行(3);(3)将n赋给m,将r赋给n,再重执行(1)、(2)步。四、求数列 求斐波那契数列,5.5 Do循环的其它结构,一、无条件循环DoLoop Do循环体Loop二、后测试当型循环DoLoop WhileDo循环体Loop While,5.5 Do循环的其它结构,三、前测试直到型Do UntilLoop Do Until 循环体Loop四、后测试直到型循环DoLoop Until Do 循环体Loop Until,5.5 Do循环的其它结构,例:设我国现有人口为13亿,如果每年以1.5%的平均速度增长,问多少年后我国人口达到或超过18亿,作业与实习,作业1.一个数恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数。2.一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?实习课本 P106-107 4、编程题(3),(4),(5),(6),(8),(9),