VB程序设计基础循环结构PPT学习教案_第1页
VB程序设计基础循环结构PPT学习教案_第2页
VB程序设计基础循环结构PPT学习教案_第3页
VB程序设计基础循环结构PPT学习教案_第4页
VB程序设计基础循环结构PPT学习教案_第5页
已阅读5页,还剩140页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1VB程序设计基础循环结构程序设计基础循环结构n 计算机最擅长的功能之一就是按规定的条件计算机最擅长的功能之一就是按规定的条件,重复执行某些操作。,重复执行某些操作。 n VB中提供了两种类型的循环语句:中提供了两种类型的循环语句:1.计数循环语句计数循环语句-循环次数固定;循环次数固定;2.条件型循环语句条件型循环语句-循环次数不固定,由循环循环次数不固定,由循环条件决定条件决定。第1页/共145页nVB中提供的循环语句:中提供的循环语句:1.循环次数固定:循环次数固定:For循环语句循环语句2.循环次数不固定的循环循环次数不固定的循环(1)While循环语句循环语句(2)Do Loo

2、p循环语句:循环语句:循环次数不固定循环次数不固定 第2页/共145页4.4.1 For循环语句循环语句 4.4.2 While循环语句循环语句 4.4.3 DoLoop循环语句循环语句 4.4.4 循环嵌套循环嵌套 第3页/共145页用循环结构实现:用循环结构实现:Dim n as Integerfor n=1 to 10 Form1.Print String(10,*)next n第4页/共145页用循环结构实现:用循环结构实现: Dim n as Integer n是循环控制变量是循环控制变量 for n=1 to 10 n的初值的初值1,终值,终值10,每循环,每循环1次增加次增加1

3、Form1.Print String(10,*) 循环体语句循环体语句 next n 循环结束循环结束第5页/共145页For For 循环变量初值循环变量初值 To To 终值终值 Step 步长步长循环体语句块循环体语句块Next Next 循环变量循环变量例例: :Dim n as Integerfor n=1 to 10 step 1 Print String(10,*)next n T 循环变量终值 语句块 循环变量=循环变量+步长 F 循环变量=初值 Next 的下一语句 第6页/共145页For For 循环变量初值循环变量初值 To To 终值终值 Step 步长步长循环体语句

4、块循环体语句块Next Next 循环变量循环变量 注意:注意:1. 循环变量必须为数值型。循环变量必须为数值型。 2. Step 步长缺省为步长缺省为1.例例:Dim n as Integerfor n=1 to 10 Print String(10,*)next n第7页/共145页Dim n as Integer n是循环控制变量是循环控制变量for n=1 to 10 step 1 n的初值的初值1,终值,终值10 Print String(10,*) 循环体语句循环体语句next n 循环体结束循环体结束u理解理解:对于变量对于变量n=1,2,3.到到不超过不超过10,分别执行分别执

5、行: Print String(10,*)循环体结束循环体结束,产生下一个产生下一个n( n=n+步长步长)u注意注意:(1)循环全部执行完后循环全部执行完后, 循环变量的值为超过终值的值循环变量的值为超过终值的值(如此处循环结束时(如此处循环结束时n=11)(2) 如果循环变量的初值一开始就超过终值如果循环变量的初值一开始就超过终值, 则一次也则一次也不执行循环体不执行循环体第8页/共145页第9页/共145页循环次数的计计算:循环次数的计计算:循环次数循环次数) 1(步长初值终值Int循环次数循环次数=int(20-1)/2+1)=10循环次数循环次数=int(20-11)/1+1)=10

6、循环次数循环次数=int(1-10)/(-1)+1)=10第10页/共145页循环语句的循环语句的3种情况:种情况:1.步长步长0 : 初值初值终值:最多见,终值:最多见,循环变量从初值逐渐增加最后变化为终值循环变量从初值逐渐增加最后变化为终值2.步长步长终值终值循环变量从初值逐渐减少变化为终值循环变量从初值逐渐减少变化为终值3. 如步长为如步长为0-死循环死循环(永久循环永久循环): 按按crel+break终止死循环终止死循环 第11页/共145页例:例:For n = 1 To 10 Step 1 Print n; String(n, *)Next n仅用于控制循环次数仅用于控制循环次数

7、不仅用于控制循环次数,还在循环体中使用不仅用于控制循环次数,还在循环体中使用第12页/共145页 s=s+i第13页/共145页问题:问题:循环结束后循环结束后,i的值是的值是多少多少?101第14页/共145页改成改成:for i=100 to 1 step -1 s=s+inext i第15页/共145页n问题:问题:计算计算1100的奇数和的奇数和 求:求:s=1+3+5+99第16页/共145页结束后结束后i的值的值?n问题:问题:计算计算1100的奇数和的奇数和 求:求:s=1+3+5+99101第17页/共145页n问题:问题:计算计算1100之间的奇数的倒数的和之间的奇数的倒数的

8、和 求:求: s=1/1+1/3+1/5+.+1/99第18页/共145页n问题:问题:计算计算1100之间的奇数的倒数的和之间的奇数的倒数的和 求:求: s=1+1/3+1/5+.+1/99第19页/共145页n问题:问题: 求:求: s=1-1/3+1/5-1/7+.+1/99n 问题分析:问题分析:n正负号交叉问题:正负号交叉问题:定义一个用于处理符号的控制变量变量定义一个用于处理符号的控制变量变量sign,初始值为,初始值为+1,再随着循环的进行,改为,再随着循环的进行,改为-1,再改为,再改为+1,再改,再改为为-1,改变的方法:改变的方法:sign=-signn对于变量对于变量 i

9、=1,3,5,.到不超过到不超过100, 分别执行分别执行: s=s+sign/I sign=-sign next In特别注意:特别注意:s是带小数的!是带小数的!第20页/共145页n问题:问题:求:求: s=1-1/3+1/5-1/7+.+1/99第21页/共145页n问题:问题:编写一个程序编写一个程序 求求15!n问题分析:问题分析:1.m=1*2*.*152.注意注意15!超过!超过1012,应该用单精度或双精度型,应该用单精度或双精度型3.参考:参考:求:求:s=1+2+3+4+5+100Dim i%, s% i是循环控制变量,是循环控制变量,s结果变量结果变量s=0 初始值初始

10、值,作为累加器作为累加器for i=1 to 100 step 1 s=s+inext iForm1.Print 1到到100累加和累加和=; s第22页/共145页n问题:问题:编写一个程序编写一个程序 求求15!Dim i%, m# 为什么用双精度为什么用双精度?m = 1 为什么为什么=1?For i = 1 To 15 Step 1 m = m * iNext iForm1.Print 15!=; m第23页/共145页数据类型数据类型关键字关键字类型符类型符前缀前缀占字节数占字节数范范 围围字节型字节型Byte无无byt10255逻辑型逻辑型Boolean无无bln2True与与Fa

11、lse整型整型Integer%int2-3276832767长整型长整型Long&lng4-21474836482147483647单精度型单精度型Single!sng4-3.402823E383.402823E38双精度型双精度型Double#dbl8-1.79769313486232D3081.79769313486232D308货币型货币型Currencycur8-922337203685477.5808922337203685477.5907日期型日期型Date无无dtm801,01,010012,31,9999 0:00:0023:59:59字符型字符型String$str与串长有关

12、与串长有关065535个字符个字符对象型对象型Objiect无无obj4任何对象引用任何对象引用变体型变体型Variant无无vnt据分配确定据分配确定第24页/共145页参考程序:求参考程序:求15!Dim i%, m! m = 1 为什么为什么=1?For i = 1 To 15 Step 1 m = m * iNext iForm1.Print 15!=; mFor循环课堂练习循环课堂练习5n问题:问题:参考求参考求 15! 的程序,编写一个程序,要求能求任意数的程序,编写一个程序,要求能求任意数 n!第25页/共145页Dim i%, m#, n%n=inputbox(“输入输入n”)

13、m = 1For i = 1 To n Step 1 m = m * iNext iMsgBox n & != & mFor循环课堂练习循环课堂练习5答案答案n问题:问题:参考求参考求 15! 的程序,编写一个程序,要求能求任意数的程序,编写一个程序,要求能求任意数 n!第26页/共145页For循环课堂练习循环课堂练习6n问题:问题:求求n至至m之间自然数的累加之间自然数的累加参考求参考求s=1+2+3+4+5+100的程序,做适当修改,使程序能对任意的程序,做适当修改,使程序能对任意2个数个数n到到m之间之间的自然数累加的自然数累加第27页/共145页For循环课堂练习循环课堂练习6答案答

14、案n问题:问题:求求n至至m之间自然数的累加之间自然数的累加参考求参考求s=1+2+3+4+5+100的程序,做适当修改,使程序能对任意的程序,做适当修改,使程序能对任意2个数个数n到到m之间之间的自然数累加的自然数累加Dim i%, sum%,n%, m%n=inputbox(“输入输入n”)m=inputbox(“输入输入m”)sum = 0For i = n To m Step 1 sum = sum + iNext iMsgBox n & 至至 & m &累加累加= & sum 第28页/共145页累加初值为累加初值为0, 连乘初值为连乘初值为1Dim i%, sum%,n%n=inp

15、utbox(“输入输入n”)sum = 0For i = 1 To n Step 1 sum = sum + iNext iMsgBox sum Dim i%, m#, n%n=inputbox(“输入输入n”)m = 1For i = 1 To n Step 1 m = m * iNext iMsgBox n&!= & m第29页/共145页这样有什么问题这样有什么问题?Dim i%, sum%,n%n=inputbox(“输入输入n”)For i = 1 To n Step 1 sum = 0 sum = sum + iNext iMsgBox sum Dim i%, m#, n%n=in

16、putbox(“输入输入n”)For i = 1 To n Step 1 m = 1 m = m * iNext iMsgBox n&!= & m错误错误1第30页/共145页Dim i%, sum%,n%n=inputbox(“输入输入n”)sum = 0For i = 1 To n Step 1 sum = sum + i MsgBox sum Next iDim i%, m#, n%n=inputbox(“输入输入n”)m = 1For i = 1 To n Step 1 m = m * i MsgBox n&!= & mNext i这样有什么问题这样有什么问题?错误错误2第31页/共1

17、45页Dim i%, sum%sum = 0For i = 1 To 100 Step 1 sum = sum + i i=1 Next iMsgBox sum 这样有什么问题这样有什么问题?错误错误3for循环变量的循环变量的值会自动修改值会自动修改不要在不要在for循环循环体中给循环变体中给循环变量赋值量赋值, 第32页/共145页n编写程序,从键盘上任意输入编写程序,从键盘上任意输入10个数个数, 输出这输出这10个数的累加值个数的累加值Dim i%, sum%, a%sum = 0For i = 1 To 10 Step 1 a=inputbox(请输入第请输入第 & i & 个数个数

18、:) sum = sum + aNext iMsgBox 合计合计= & sum 怎样输出平均怎样输出平均值值?For循环课堂练习循环课堂练习7第33页/共145页n编写程序,从键盘上任意输入编写程序,从键盘上任意输入10个数个数, 输出这输出这10个数的累加值,平均值个数的累加值,平均值For循环课堂练习循环课堂练习8Dim i%, sum%, a%, aver!sum = 0For i = 1 To 10 Step 1 a = InputBox(请输入第请输入第 & i & 个数个数:) sum = sum + aNext iaver = sum / 10MsgBox 合计合计= & su

19、m & ;平均;平均= & aver第34页/共145页第35页/共145页第36页/共145页n分析分析1:已经知道一个字符的:已经知道一个字符的ASCII码值,求这个字符是什么字符,需要用函数:码值,求这个字符是什么字符,需要用函数: chr(N) chr(N) 得到得到ASCII码为码为N的字符的字符 例如:例如: chr(32)= chr(48)=0 chr(65)=A chr(97)=a chr(13)=回车回车第37页/共145页n分析分析2:要在窗体上输出要在窗体上输出ASCII码值为码值为32的字符,如的字符,如图,可以用以下语句:图,可以用以下语句:Dim i%i = 32F

20、orm1.Print Chr(i); =; i要在窗体上输出要在窗体上输出ASCII码值为码值为33的字符,可的字符,可以用以下语句:以用以下语句:Dim i%i = 33Form1.Print Chr(i); =; i第38页/共145页问题:如何输出问题:如何输出ASCII码的值为码的值为32至至126的字符的字符?第39页/共145页n分析分析3:要在窗体上输出:要在窗体上输出ASCII码值为码值为32到到ASCII码值为码值为126的字符,可以用一个固定次数的循环的字符,可以用一个固定次数的循环Dim i%For i=32 to 126 step 1 Form1.print chr(i

21、);=;iNext i问题:只显示在一列上,达不到要求!问题:只显示在一列上,达不到要求!第40页/共145页n分析分析4:在一行显示多个输出项:在一行显示多个输出项Dim i%For i=32 to 126 step 1 Form1.print chr(i);“=”;i,Next i问题:都显示在一行上,达不到要求!怎问题:都显示在一行上,达不到要求!怎么才能每行显示么才能每行显示5个?个?第41页/共145页n分析分析5:增加一个变量增加一个变量a%,用于记录输出的个用于记录输出的个数,数,a的初值为的初值为0,每输出每输出1个项,个项,a增增加加1,当当a=5时,输出时,输出一个换行,换

22、行后一个换行,换行后将将a重新设置为重新设置为0 n如何换行?如何换行? Private Sub Form_Click()Dim i%, a%a = 0For i = 32 To 126 Step 1 Form1.Print Chr(i); =; i, a = a + 1 If a = 5 Then Form1.Print a = 0 End IfNext iEnd SubForm1.print第42页/共145页Private Sub Form_Click()Dim i%, a%a = 0For i = 32 To 126 Step 1 Form1.Print Chr(i); =; i, a

23、 = a + 1 If a = 5 Then Form1.Print a = 0 End IfNext iEnd Sub第43页/共145页分析分析6:输出也可以要求指定:输出也可以要求指定输出项之间的间隔,例如要求用输出项之间的间隔,例如要求用6个空格分隔个空格分隔2个输出项个输出项 Form1.Print Spc(6);Private Sub Form_Click()Dim i%, a% a=0 清零清零For i = 32 To 126 step 1 Form1.Print Chr(i); =; i; Spc(6); a = a + 1 显示个数加显示个数加1 If a = 5 Then

24、 够够5个了个了 Form1.Print 换行换行 a = 0 清零清零 End IfNext iEnd Sub第44页/共145页第45页/共145页第46页/共145页n分析:分析:1.判断一个数判断一个数i能被能被3整除或被整除或被5整除的条件表达式整除的条件表达式: i mod 3=0 OR i mod 5=02.输出输出100至至300之间可以被之间可以被3整除或被整除或被5整除的数整除的数 ,两数间空两数间空4个空格个空格Dim i%, For i = 100 To 300 step 1 if i mod 3=0 OR i mod 5=0 then Form1.Print i; S

25、pc(4); end ifNext i问题:问题:每每8个数换行个数换行 ?第47页/共145页Dim i%, a%a=0For i = 100 To 300 step 1 if i mod 3=0 OR i mod 5=0 then Form1.Print i; Spc(4); a = a + 1 If a = 8 Then Form1.Print a = 0 End If end ifNext i 第48页/共145页n 例例 :参考前例:参考前例, 输出输出100至至300之间之间可以被可以被3整除或被整除或被5整除的数整除的数 , 两数间两数间空空4个空格个空格,每每8个数换行个数换行

26、 ,结果:结果:第49页/共145页如果要求最后输出符合条如果要求最后输出符合条件的数据个数,怎么办件的数据个数,怎么办?n处理:增加一个用于统计符合条件的数据个数的变量处理:增加一个用于统计符合条件的数据个数的变量n%,初值为,初值为0,每输出一个符合条件的数据,每输出一个符合条件的数据,n增加增加1,循环结束后输出,循环结束后输出n的值的值第50页/共145页Dim i%, a%, n% n是用于统计个数的变量是用于统计个数的变量, 称为计数称为计数器器a=0: n=0 清零清零For i = 100 To 300 step 1 if i mod 3=0 OR i mod 5=0 then

27、 Form1.Print i; Spc(4); n=n+1 计数计数 加加1 a = a + 1 If a = 8 Then Form1.Print a = 0 End If end if Next iForm1.Print 被被3或或5整除的个数整除的个数=; n第51页/共145页思考:如果要思考:如果要求显示这些数求显示这些数的合计和平均的合计和平均?第52页/共145页第53页/共145页第54页/共145页For i=100 to 999 step 1 if end ifNext i第55页/共145页For i=100 to 999 step 1 if i=a3+b3+c3 the

28、n form1.print I, end ifNext i问题:如何能求出一个问题:如何能求出一个3位数位数i的百位数的百位数a,十位数十位数b,个位数个位数c?第56页/共145页第57页/共145页第58页/共145页第59页/共145页a,b的最大公约数范围是从的最大公约数范围是从min 到到1For i = min To 1 Step -1 If Then MsgBox 最大公约数最大公约数= & i Exit For 跳出跳出For循环循环(终止循环终止循环) End IfNext i第60页/共145页第61页/共145页第62页/共145页第63页/共145页第64页/共145页

29、a,b的的最小公倍数最小公倍数范围是从范围是从max到到a*bfor i=max to a*b step 1 ?next i第65页/共145页a,b的的最小公倍数最小公倍数范围是从范围是从max到到a*b第66页/共145页第67页/共145页第68页/共145页第69页/共145页Dim a%, i% a =val( InputBox(输入输入a)Dim a%, i%a = InputBox(输入输入a)For i = 2 To a - 1 Step 1 If a Mod i = 0 Then Exit For End IfNext i第70页/共145页Dim a%, i% a =val

30、( InputBox(输入输入a)Dim a%, i%a = InputBox(输入输入a)For i = 2 To a - 1 Step 1 If a Mod i = 0 Then Exit For End IfNext i大于大于a-1第71页/共145页Dim a%, i%a = InputBox(输入输入a)For i = 2 To a - 1 Step 1 If a Mod i = 0 Then Exit For End IfNext iIf i a-1 Then MsgBox a & 是素数是素数Else MsgBox a & 不是素数不是素数End If思考:如果写成:思考:如果

31、写成:If i =a then行否?行否?答案:不行!答案:不行!原因:如果原因:如果a=1,循,循环体一次也不执行,环体一次也不执行,但但i=2却执行了,出错却执行了,出错!第72页/共145页第73页/共145页If sushu = 1 Then MsgBox a & 是素数是素数Else MsgBox a & 不是素数不是素数End If注意:这里采用了程序设注意:这里采用了程序设计中经常用到的一种方法计中经常用到的一种方法:采用标志变量,当标志:采用标志变量,当标志变量为某个值时,代表着变量为某个值时,代表着一种结果,反之,代表另一种结果,反之,代表另一种结果。一种结果。第74页/共1

32、45页基本思路基本思路: 1.先输入一个数到先输入一个数到a中中 2. ,假设假设a为为10个数中最大的数,将个数中最大的数,将a保存到准保存到准备存放最大值的变量备存放最大值的变量max中中3.再循环输入其余再循环输入其余9个数个数, 每次输入后与每次输入后与max比较,如比比较,如比max大,则将新输入的值放入大,则将新输入的值放入max中中4.最后输出最后输出max的值的值第75页/共145页声明变量声明变量a!, max!, i%(输入输入,最大值最大值,循环变量循环变量)输入第一个数到输入第一个数到aa赋值给赋值给max (已知最大值已知最大值)对于对于i从从2到到10,分别执行分别

33、执行 输入数据到输入数据到a 如果如果amax 则则a赋值给赋值给max 循环体结束循环体结束输出输出max 第76页/共145页Dim a%, max%, i%a = Val(InputBox(输入输入a:)max = aFor i = 2 To 10a = Val(InputBox(输入第输入第 & i & 个数:个数:) If a max Then max = aNext iMsgBox 最大的数是最大的数是 & max思考:要求增加功思考:要求增加功能:不但找出最大能:不但找出最大数,而且要数,而且要输出输出平平均值均值?提示:该程序测试提示:该程序测试时将数改为时将数改为5个,测个,

34、测试成功后再将循环试成功后再将循环的终值改为的终值改为10第77页/共145页Dim a%, max%, i%, sum%, aver%a = Val(InputBox(输入输入a:)max = a:sum = aFor i = 2 To 10 a = Val(InputBox(输入第输入第 & i & 个数:个数:) sum = sum + a If a max Then max = aNext iaver = sum / 10MsgBox (最大的数是最大的数是 & max & ;平均值为:;平均值为: & aver)第78页/共145页4.4 循环结构循环结构4.4.1 For循环语句循

35、环语句 4.4.2 While循环语句循环语句 4.4.3 DoLoop循环语句循环语句 4.4.4 循环嵌套循环嵌套 第79页/共145页回忆:例回忆:例 计算计算s=1/1+1/3+1/5+.s=1/1+1/3+1/5+. +1/99如果用如果用for循环实现:循环实现: For循环特点循环特点:循环变量有初值循环变量有初值,终终值值,步长确定步长确定, 循环循环次数是确定的次数是确定的循环变量自动赋初循环变量自动赋初值值,自动增量变化自动增量变化第80页/共145页例例 前述问题改为:前述问题改为:计算计算 s=1/1+1/3+1/5+.s=1/1+1/3+1/5+. 一直累加到一直累加

36、到数据项数据项10-4为止为止 n分析:分析:一直累加到一直累加到数据项数据项=10-4就一直累加就一直累加n需要累加多少项,预先并不知道需要累加多少项,预先并不知道第81页/共145页例例 前述问题改为:前述问题改为:计算计算 s=1/1+1/3+1/5+.s=1/1+1/3+1/5+. 一直累加到一直累加到数据项数据项10-4为止为止 Dim n%, s! n是循环变量,是循环变量,s结果变量结果变量,单精度单精度型型s = 0 初始值初始值,作为累加器作为累加器n = 1 循环变量初值循环变量初值For n = 1 To 20000 s = s + n If 1 / n 10 -4 Th

37、en Exit For End IfNext n Form1.Print n=; nForm1.Print s=; s预先估计一个相当预先估计一个相当大的数,在循环中大的数,在循环中判断,符合条件了判断,符合条件了,提前退出循环。,提前退出循环。第82页/共145页例例 前述问题改为:前述问题改为:计算计算 s=1/1+1/3+1/5+.s=1/1+1/3+1/5+. 一直累加到一直累加到数据项数据项10-4为止为止 For循环解决不循环解决不太方便,这种问太方便,这种问题用题用while循环循环最好!最好!Dim n%, s! n是循环变量,是循环变量,s结果变量结果变量,单精度单精度型型s

38、 = 0 初始值初始值,作为累加器作为累加器n = 1 循环变量初值循环变量初值For n = 1 To 10000 s = s + n If 1 / n 10 -4 Then Exit For End IfNext n Form1.Print n=; nForm1.Print s=; s第83页/共145页nWhileWhile按条件循环按条件循环, , 循环次数可能循环次数可能不确定不确定第84页/共145页例例 计算计算s=1/1+1/3+1/5+.s=1/1+1/3+1/5+. 直到数据项直到数据项=10-4就一直累加就一直累加第85页/共145页例例 计算计算s=1/1+1/3+1/

39、5+.s=1/1+1/3+1/5+. 直到数据项直到数据项=10-4就一直累加就一直累加必须用语句给循环变必须用语句给循环变量赋初值和完成增量量赋初值和完成增量循环体应能使条件改循环体应能使条件改变,否则变死循环变,否则变死循环第86页/共145页第87页/共145页WendForm1.Print mFor循环循环Dim n%, m%m = 0For n = 1 To 10 Step 1 m = m + nNext nForm1.Print m第88页/共145页Form1.Print mFor循环循环Dim n%, m!m = 1For n = 1 To 10 Step 1 m = m *

40、nNext nForm1.Print m第89页/共145页例例 计算计算s=1/1+1/3+1/5+.s=1/1+1/3+1/5+. 直到数据项直到数据项=10-4就一直累加就一直累加n课堂练习:仿照前例编写程序:课堂练习:仿照前例编写程序:求求几几的的阶乘阶乘刚好大于或等于刚好大于或等于100000?第90页/共145页n分析:这里是求循环变量分析:这里是求循环变量n的值为多少时阶乘的值正好大于或等于的值为多少时阶乘的值正好大于或等于100000,换言之,当阶乘的值小于,换言之,当阶乘的值小于100000时,累乘就要进行,反之,结束累乘,输出时,累乘就要进行,反之,结束累乘,输出n的值的值

41、n课堂练习:仿照前例编写程序:课堂练习:仿照前例编写程序:求求几几的的阶乘阶乘刚好大于或等于刚好大于或等于100000?第91页/共145页例例 求求几几的的阶乘阶乘刚好大于刚好大于或等于或等于100000?注意:此语句必须注意:此语句必须写在求阶乘语句之写在求阶乘语句之前!这样才能得到前!这样才能得到准确的准确的n第92页/共145页例例 一张一张厚度厚度为为0.5mm0.5mm的纸,的纸,折多少次折多少次可以达到或可以达到或超过珠穆朗玛峰的高度超过珠穆朗玛峰的高度8848.13m8848.13m?n分析:分析:1.假设纸张的厚度用假设纸张的厚度用x表示,则初值为表示,则初值为0.5mm;

42、折叠次数如用折叠次数如用 n表示,则初值为表示,则初值为0次次2.每折叠一次,厚度是原来的每折叠一次,厚度是原来的2倍,即倍,即x=x*2; 折叠的次数加折叠的次数加1,即,即n=n+13.什么条件下需要折叠呢:什么条件下需要折叠呢: while x8848130 Wend4.循环结束时,输出折叠次数循环结束时,输出折叠次数n,厚度厚度x第93页/共145页例例 一张一张厚度厚度为为0.5mm0.5mm的纸,的纸,折多少次折多少次可以达到或可以达到或超过珠穆朗玛峰的高度超过珠穆朗玛峰的高度8848.13m8848.13m?Private Sub form_Click()Dim x#,n% 纸张

43、厚度纸张厚度 循环变量循环变量 x = 0.5 开始值开始值 n = 0 While x 8848130 x = x * 2 n = n + 1 Wend Print 叠了叠了 ;n;次次 厚度为厚度为;xEnd Sub第94页/共145页While循环例题( 次数不确定)例例如果你工作后第一年如果你工作后第一年收入收入5W5W,以后每年增长,以后每年增长10%10%,每年能,每年能攒下攒下收入的收入的60%60%,问:多少,问:多少年年后咱能后咱能成为李百万、王百万们成为李百万、王百万们( (不考虑利息不考虑利息) ),哈哈哈?,哈哈哈? 第95页/共145页While循环例题( 次数不确定

44、)第96页/共145页例例如果你工作后第一年如果你工作后第一年收入收入5W5W,以后每年增长,以后每年增长10%10%,每年能,每年能攒下攒下收入的收入的60%60%,问:多少,问:多少年年后咱能后咱能成为李百万、王百万们成为李百万、王百万们( (不考虑利息不考虑利息) ),哈哈哈?,哈哈哈? Dim n%,ShouRu!,CunKuan! n循环变量表示循环变量表示年年 n=1 第一年第一年n ShouRu CunKuan初值初值 Shouru= ? CunKuan= ? While ? 修改修改n? 修改修改ShouRu? 修改修改CunKuan? Wend Print 年数为:年数为:;

45、 n; 存款为:存款为:; CunKuan5 5 * 0.6CunKuan100ShouRu=ShouRu*1.1CunKuan=CunKuan+ShouRu*0.6n=n+1第97页/共145页例例如果你工作后第一年如果你工作后第一年收入收入5W5W,以后每年增长,以后每年增长10%10%,每年能,每年能攒下攒下收入的收入的60%60%,问:多少,问:多少年年后咱能后咱能成为李百万、王百万们成为李百万、王百万们( (不考虑利息不考虑利息) ),哈哈哈?,哈哈哈? Dim n%, ShouRu!, CunKuan! n循环变量表示循环变量表示年年 n = 1 第一年第一年n ShouRu Cu

46、nKuan初值初值 ShouRu = 5 CunKuan = 5 * 0.6 While CunKuan 100 n = n + 1 ShouRu = ShouRu * 1.1 CunKuan = CunKuan + ShouRu * 0.6 Wend Print 年数为:年数为:; n; 存款为:存款为:; CunKuan第98页/共145页 Dim n%, ShouRu!, CunKuan! n = 1 ShouRu = 5 CunKuan = 5 * 0.6 Print 年数为:年数为:; n; 存款为:存款为:; CunKuan While CunKuan 100 n = n + 1

47、ShouRu = ShouRu * 1.1 CunKuan = CunKuan + ShouRu * 0.6 Print 年数为:年数为:; n; 存款为:存款为:; CunKuan Wendn前述题目如果改变一下输出语句,得到如图的输出,能更清楚的看出每年收入的增加情况。前述题目如果改变一下输出语句,得到如图的输出,能更清楚的看出每年收入的增加情况。第99页/共145页4.4 循环结构循环结构4.4.1 For循环语句循环语句 4.4.2 While循环语句循环语句 4.4.3 循环嵌套循环嵌套4.4.4 DoLoop循环语句循环语句第100页/共145页在一个循环体内又包含了一个完整的循环

48、结构称为循环的嵌套。在一个循环体内又包含了一个完整的循环结构称为循环的嵌套。FOR i=1 TO 10 FOR i=1 TO 10 外层循环外层循环 . . FOR j=1 TO 20 FOR j=1 TO 20 内层循环内层循环 Form1.Print Form1.Print * * NEXT j NEXT j . . NEXT i NEXT i 第第5章数组中二维数组会用到很多章数组中二维数组会用到很多第101页/共145页例例4.14 4.14 打印九九乘法表打印九九乘法表 第102页/共145页 输出第输出第3行第行第4列列, 用用i代表代表3, 用用j代表代表4 dim i%,j%

49、i行号行号 j列号列号 i=3 j=4 Print i ; ; j ; = ; i * j 11=1 12=2 13=3 14=4 . 19=9 21=2 22=4 23=6 24=8 . 29=18 31=3 32=6 33=9 34=12 . 39=27 .输出第3行?循环, j=1 to 9第103页/共145页 输出第3行 Dim i%,j% i行号行号 j列号列号 i=3 For j = 1 To 9 Print i ; ; j ; = ; i * j, Next j Print 换行换行 输出19行?11=1 12=2 13=3 14=4 . 19=9 21=2 22=4 23=6

50、 24=8 . 29=18 31=3 32=6 33=9 34=12 . 39=27 .逗号使输出整齐一行输出后要换行第104页/共145页例例4.14 4.14 打印九九乘法表打印九九乘法表 Dim i%, j% i行号行号, j列号列号Print Tab(35); 九九乘法表九九乘法表Print Tab(35); -For i = 1 To 9 For j = 1 To 9 Print i ; ; j ; = ; i * j, Next j PrintNext i第105页/共145页For i = 1 To 9 For j = 1 To ? Print i ; ; j ; = ; i *

51、 j, Next j PrintNext ii第106页/共145页内、外循环变量同名内、外循环变量同名For i=1 to 10for i=1 to 20next iNext i内、外循环交叉内、外循环交叉For i=1 to 10for j=1 to 20next iNext j内、外循环中内、外循环中if交叉交叉For i=1 to 10 if thenfor j=1 to 20 end ifnext jNext i第107页/共145页4.4 循环结构循环结构4.4.1 For循环语句循环语句 4.4.2 While循环语句循环语句 4.4.3 循环嵌套循环嵌套4.4.4 DoLoop

52、循环语句循环语句第108页/共145页形式形式1:Do While 循环体语句块循环体语句块 Loop说明说明: 同同While.Wend 当条件为真当条件为真, 执行循环体执行循环体, 否则结束循环否则结束循环形式形式2:Do 循环体语句块循环体语句块 Loop While 说明说明: 后判断型的后判断型的While循环循环本章目录本章目录Do循环用于控制循环用于控制循环次数未知循环次数未知的循环结构的循环结构注意:注意: 形式形式1为为先判断后执行,先判断后执行, 有可能一次也不执行有可能一次也不执行; 形式形式2为为先执行后判断,先执行后判断, 至少执行一次至少执行一次。 第109页/共

53、145页形式形式3:Do Until 循环体语句块循环体语句块 Loop说明说明: 直到条件为真直到条件为真之前之前执行循环体执行循环体, 条件为真条件为真结结束束循环循环. (与与While相反相反) 形式形式4:Do 循环体语句块循环体语句块 Loop Until 说明说明: 后判断型的后判断型的Until 循环循环本章目录本章目录Do循环用于控制循环用于控制循环次数未知循环次数未知的循环结构的循环结构注意:注意: 形式形式3为为先判断后执行,先判断后执行, 形式形式4为为先执行后判断,先执行后判断,第110页/共145页Private Sub form_Click()Dim x#,n%

54、纸厚纸厚 x = 0.5 开始值开始值 n = 0 Do While x = 8848130 x = x * 2 n = n + 1 Loop Print n;次次 厚为厚为;xEnd Sub第111页/共145页4.1 VB的程序语句的程序语句4.2 顺序结构顺序结构4.3 选择结构选择结构4.4 循环结构循环结构4.5 其它控制语句其它控制语句4.6 综合应用综合应用第112页/共145页1.Exit语句语句(退出退出)VB中有多种形式的中有多种形式的Exit语句,用于退出某种控制结构的执行。语句,用于退出某种控制结构的执行。Exit的形式如下:的形式如下: Exit For 跳出跳出(终

55、止终止)For循环循环 Exit Do 跳出跳出(终止终止)Do.Loop循环循环 Exit Sub 跳出跳出(结束结束)过程过程 Exit Function 跳出跳出(结束结束)函数函数第113页/共145页2.End语句语句(结束结束)独立的独立的End语句用于结束一个程序的运行,它可以放在任何事件过程中。语句用于结束一个程序的运行,它可以放在任何事件过程中。第114页/共145页4.1 VB的程序语句的程序语句4.2 顺序结构顺序结构4.3 选择结构选择结构4.4 循环结构循环结构4.5 其它控制语句其它控制语句4.6 综合应用综合应用第115页/共145页例例4.19 百元买百鸡。假定

56、小鸡每只百元买百鸡。假定小鸡每只5角,公鸡每只角,公鸡每只2元,母鸡每只元,母鸡每只3元,编程求解购鸡方案。元,编程求解购鸡方案。分析:分析:设母鸡、公鸡、小鸡各为设母鸡、公鸡、小鸡各为x、y、z,列方程为:,列方程为:x+y+z= 1003x+2y+0.5z = 100三个未知数,两个方程,有多个整数解。三个未知数,两个方程,有多个整数解。第116页/共145页例例4.19 百元买百鸡。假定小鸡每只百元买百鸡。假定小鸡每只5角,公鸡每只角,公鸡每只2元,母鸡每只元,母鸡每只3元,编程求解购鸡方案。元,编程求解购鸡方案。分析:分析:设母鸡、公鸡、小鸡各为设母鸡、公鸡、小鸡各为x、y、z,列方程

57、为:,列方程为:x+y+z= 1003x+2y+0.5z = 100解决方法解决方法:将可能出现的各种情况一一罗列测试,将可能出现的各种情况一一罗列测试,判断是否满足条件,称为试凑法判断是否满足条件,称为试凑法(穷举法穷举法)。x: 0-INT(100/3)y: 0-100/2z: 100-x-y第117页/共145页Dim x%, y%, z%Print 母鸡母鸡, 公鸡公鸡, 小鸡小鸡For x = 0 To 33 step 1 For y = 0 To 50 step 1 z = 100 - x - y If 3 * x + 2 * y + 0.5 * z = 100 Then Prin

58、t x, y, z End if Next yNext x第118页/共145页第119页/共145页例例4.20 4.20 小猴有桃若干,第一天吃掉一半多一个;小猴有桃若干,第一天吃掉一半多一个;以后每天都吃尚存桃子的一半多一个,到第以后每天都吃尚存桃子的一半多一个,到第7 7天只天只剩一个,问小猴原有桃多少?剩一个,问小猴原有桃多少?分析:分析:第第7天已知天已知, 可用可用后一天的后一天的数数推出推出前一天的桃子前一天的桃子数数。设第设第n天的桃子数为天的桃子数为xn, 是前一天的桃子数是前一天的桃子数xn-1的一半再减去的一半再减去1。 2) 1(12111nnnnxxxx也就是:即:第120页/共145页Private Sub Form_Click()Dim x%, i% x桃子数桃子数 i循环变量循环变量x = 1 第第7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论