资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Visual Basic,程序设计,第,8,讲,内容安排与学习要求,环境熟悉,(1),基本控件,(3),编程基础,(2),三大基本结构,(5,6),综合应用,(4,8,10),过程,(9),数组,(7),三大基本结构,顺序结构,:,赋值语句,=,选择结构,:if select case,循环结构,:for while,循,环结构,功能:,重复执行一组语句。,两种语句格式:,For-Next,语句,(一般用于循环次数已知),Do-Loop,语句,(用于控制循环次数未知)当型循环、直到型循环,1、形式,For,循环变量初值,to,终值,Step,步长,语句块,Exit For,语句块,Next,循环变量,循环次数=,一.,For,循环语句,0 初值终值,终值,=0 死循环,步长,猴子吃桃子。,小猴在某天摘桃若干个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第,7,天要吃时只剩下一个,问小猴共摘下了多少个桃子?,分析:,这是一个,“,递推,”,问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子,。设第,n,天的桃子为,x,n,,那么它是前一天的桃子数的,x,n,-1,的一半减,1,,即,x,n-1,=,(,x,n,+1,),2,例:求1+2+3+,+100的值,S,0,=0,S,1,=S,0,+1,S,2,=S,1,+2,S,3,=S,2,+3,S,4,=S,3,+4,S,100,=S,99,+100,S,i,=S,i-1,+i,i=1.100,S=0,i=1,S=S+i,i=N,i=i+1,S,即为所求,T,F,例:求1+2+3+,+100的值,Dim Sum%,i%,Sum=0,For i=1 to 100,Sum=Sum+i,累加,Next i,Textbox1.text=,i=&i&Sum=&Sum,循环次数=,(100-1)1+1,F,S=0,i=1,S=S+i,i=N,i=i+1,S,即为所求,T,例:求一个数是否为素数,Dim i%,N%,N=InputBox(,请输入,N),For i=2 To N-1,If N Mod i=0 Then,Exit For,Next i,If i N Then,Textbox1.text=N&,不是一个素数,Else,Textbox1.text=N&,是一个素数,End If,判别某数,n,是否为素数最简单的方法是:,对于,n,从,i,=2,3,,n,-1,判别,n,能否被,i,整除,只要有一个能整除,,n,不是素数,否则,n,是素数。,例:,求,N!,流程图,积,S,赋初值,当前项,i=,第1项,累乘当前项,i=N,求下一项,i,S,即为所求,T,F,F,S=1,i=1,S=S*i,i=N,i=i+1,S,即为所求,T,例,:求,N!,Dim S as long,N%,i%,S=1,N=InputBox(,请输入,N),For i=1 to N,S=S*i,连乘,Next i,Textbox1.text=N&,的阶乘为,&S,二、,DoLoop,循环语句,当型形式1:,Do While,语句块,Exit Do,语句块,Loop,循环体,条件,T,F,Dim i%,S%,N%,N=InputBox(,请输入,N),S=0,i=1,Do While,i=N,S=S+i,i=i+1,Loop,用,Do WhileLoop,循环语句,求1至,N,和,S=0,i=1,S=S+i,i=N,i=i+1,S,即为所求,T,F,Dim i%,S#,N%,N=InputBox(,请输入,N),S=1,i=1,Do While,i=N,S=S*i,i=i+1,Loop,用,Do whileLoop,循环语句,求,N!,S=1,i=1,S=S*i,i=N,i=i+1,S,即为所求,T,F,我国有,13,亿人口,按人口年增长,0.8%,计算,多少年后我国人口超过,26,亿。,Private Sub Button1_Click(),x=13,n=0,Do While x 26,x=x*1.008,n=n+1,Loop,Textbox1.text=,经过,&n&,年中国人口为,&x&,亿,End Sub,Dim m%,n%,r%,t%,n=Val(T1.text),m=Val(T2.text),If m n,;,(2),m,除以,n,得余数,r,;,(3),若,r=,0,,则,n,为最大公约数结束;否则执行(4);,(4),m,n,,,n,r,,,再重复执行(2)。,例:求,m=42,n=24,的最大公约数.,辗转相除法求最大公约数,流程图,使,mn,r=m Mod n,m=n:n=r,r0,r=m Mod n,N,即为所求,T,F,当型形式1:,Do While,语句块,Exit Do,语句块,Loop,当型形式2:,Do,语句块,Exit Do,语句块,Loop While,比较,DoLoop,循环的四种形式,直到形式1:,Do Until,语句块,Exit Do,语句块,Loop,直到形式2:,Do,语句块,Exit Do,语句块,Loop Until,当型1与当型2流程图比较,循环体,条件,T,F,当型形式2:,Do,语句块,Exit Do,语句块,Loop While,当型形式1:,Do While,语句块,Exit Do,语句块,Loop,循环体,条件,T,F,While,循环与,Do,循环的区别,T=1,X=6,Do while X=5,T=T*X X=X+1,Loop,T1.text=T=&T,T=1,X=6,Do,T=T*X,X=X+1,Loop while X=5,T1.text=T=&T,因此,当型形式2的循环体至少执行一次而当型形式1的循环体可能一次都不会执行,当型与直到流程图比较,直到形式1:,Do Until,语句块,Exit Do,语句块,Loop,当型形式1:,Do While,语句块,Exit Do,语句块,Loop,循环体,条件,T,F,循环体,条件,F,T,Dim i%,T&,N%,N=InputBox(,请输入,N),T=1,i=1,Do Whilel,i N,T=T*i,i=i+1,Loop,While,语句中的条件是入循环的条件,而,Until,语句中的条件是出循环的条件,三、循环的嵌套,一个循环体内又包含了一个完整的循环结构称为循环的嵌套.,打印九九乘法表.,txtShow.Text=,For i=1 To 9,For j=1 To 9,If Len(CStr(j*i)=1 Then,ji_num=+CStr(j*i),Else,ji_num=CStr(j*i),End If,txtShow.Text+=Str(j)+*+Str(i)+=+ji_num+,Next j,txtShow.Text+=vbNewLine,Next i,(1)内循环变量与外循环变量不能同名;,错误示例:,For i=1 To 10,For i=1 To 20,Next i,Next i,对于循环的嵌套,要注意以下事项:,(2)外循环必须完全包含内循环,不能交叉;,For i=1 To 10,For j=1 To 20,Next j,Next i,For i=1 To 10,For j=1 To 20,Next i,Next j,For i=1 To 10,Next i,For i=1 To 10,Next i,“穷举法”也称为“枚举法”或“试凑法”,即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。,穷举法,百元买百鸡问题。假定小鸡每只,5,角,公鸡每只,2,元,母鸡每只,3,元。现在有,100,元钱要求买,100,只鸡,编程列出所有可能的购鸡方案。,分析:,设母鸡、公鸡、小鸡各为,x,、,y,、,z,只,,根据题目要求,列出方程为:,x+y+z=100,3x+2y+0.5z=100,三个未知数,两个方程,此题有若干个解。,解决此类问题采用“试凑法”,把每一种情况都考虑到。,方法一:求三个未知数,利用三重循环来实现。,方法二:从三个未知数的关系,利用两重循环来实现。,Dim x%,y%,z%,For x=0 To 33,For y=0 To 50,For z=0 To 100,If 3*x+2*y+0.5*z=100 And x+y+z=100 Then,textbox1.text&=x&y&z&vbnewline,End If,Next z,Next y,Next x,方法一:(求三个未知数利用三重循环来实现。),Dim x%,y%,For x=0 To 33,For y=0 To 50,If 3*x+2*y+0.5*(100-x-y)=100 Then,textbox1.text&=x&y&100-x-y&vbnewline,End If,Next y,Next x,方法二:,(从三个未知数的关系,利用两重循环来实现),常见错误,1 不循环或死循环的问题,主要是循环条件、循环初值、循环终值、循环步长的设置有问题。,2 循环结构中缺少配对的结束语句,For,缺少配对的,Next,3,循环嵌套时,内外循环交叉,4 累加、连乘时,存放累加、连乘结果的变量赋初值问题,(1)一重循环:存放累加、连乘结果的变量初值设置应在循环语句前。(2)多重循环:变量初值设置要视具体问题分别对待。,试用,d,o-while,编写程序,已知本金为,a,,年利率为,x%,,试求存入银行多少年后本利之和是原来本金的2倍。,已知一个正整数,将它转换为二进制,
展开阅读全文