1、 在Visual Basic程序的三种结构中,循环结构是一种重要结构。循环的本质循环的本质:不断地重复某种动作。对计算机程序而言,循环必须具备两个重要因素:对计算机程序而言,循环必须具备两个重要因素:1.在一定的条件下,重复执行一组语句2.必然出现不满足条件的情况,使循环终止思考题编写程序实现计算:1+2+3+4+n的值前后两项之差都为1,是一个等差数列Sum=0Sum=sum+1Sum=sum+2Sum=sum+3Sum=sum+nSum=sum+ii是从1到n递增1的数列i=i+1重复执行n次Sum=0:i=1Sum=sum+ii=i+1Sum=sum+ii=i+1Sum=sum+ii=i
2、+1Sum=sum+Ii=i+1一、循环程序设计结构 VB中提供了两种类型的循环语句:一种是计数循环语句;另一种是条件循环语句。Visual Basic 支持的循环结构有:DoLoop For.Next WhileWend GoTo 语句重点掌握:DoLoop、For.Next、WhileWend等前三种循环 DoLoop循环用于事先不知道循环次数事先不知道循环次数的循环结构。此种语句四种语法格式:.Do While Loop 语句 .Do Loop While 语句 .Do Until Loop 语句 .Do Loop Until 语句 .Do While Loop语句语法格式:Do Whi
3、le 条件表达式 循环体 Exit Do 循环体 LoopTF条件循环体流程图说明:条件表达式可以是一个逻辑表达式,也可以是一个关系表达式,其值应是逻辑型。Do While和Loop应成对出现。循环体中要有改变循环控制变量值的语句,以避免出现死循环。由于该循环的特点是先判断条件,然后再决定是否要执行循环体里的语句。所以,这种循环可以一次也不执行循环体。Exit Do 表示当遇到该语句时,强制退出循环,执行Loop后的下一条语句,一般与If 语句联用(2).Do Loop While语句语句语法格式:Do 循环体 Exit Do 循环体 Loop While条件表达式流程图TF条件循环体注意:注
4、意:至少要执行循环体一次。与Do While循环的区别:Do While循环先测试条件是否成立,只有循环先测试条件是否成立,只有成立才执行循环;而该循环先执行循环体,成立才执行循环;而该循环先执行循环体,后测试条件是否成立。后测试条件是否成立。语法格式:Do Until条件表达式 循环体 Exit Do 循环体 Loop .Do Until Loop语句语句Do Until Loop语句流程图.Do Loop Until语句语句格式:Do 循环体 Exit Do 循环体 Loop Until条件表达式TF条件循环体Do Loop Until语句流程图FT条件循环体循环体Exit For循环体循
5、环变量增加步长循环变量获得初值FT变量在终值内?For循环的执行过程语法格式:For 循环变量=初值 To 终值 Step 步长 Exit For Next 循环变量说明说明 格式中的参数说明:循环变量必须为数值型。循环的初值、终值和步长都是数值表达式,其值不一定是整数,可以是实数,VB自动取整。其中,增量参数可正可负。如果增量为正,则初值必须小于等于终值,否则不能执行循环体内的语句;如果增量为负,则初值必须大于等于终值。如果没有设置step,则增量默认为1。在For语句和Next语句之间的语句序列称为循环体,可以是一个或多个语句。Exit For为强行退出循环语句。当遇到该语句时,退出循环,
6、执行Next的下一个语句。Next是循环终端语句,在Next后面的循环变量与For中的循环变量必须相同。当循环是单层循环时,Next后面的循环变量可以不写。For循环语句的执行过程是:首先把初值赋给循环变量,接着检查循环变量的值是否超过终值,如果超过就不执行循环体,跳出循环,执行Next后面的语句;否则执行一次循环体,然后把循环变量增加步长,再赋给循环变量,重复上述过程。当初值等于终值时,不管步长是正数还是负数,都执行一次循环体。循环次数由初值、终值和步长决定,计算公式为:循环次数=INT(终值 初值)/步长+1)For语句和Next语句必须成对出现,不能单独使用。如果要在循环变量到达终值前退
7、出循环,可用Exit For语句来实现。该语句可以在For循环中出现多次,且位置不限。在循环体中可以使用循环变量,但一般不再对循环变量赋值。功能:功能:当当WhileWhile的条件表达式的值是的条件表达式的值是TrueTrue时执行循环体内的时执行循环体内的代码,直到代码,直到WhileWhile后的条件表达式的值为后的条件表达式的值为FalseFalse。说明:说明:它与它与Do Do LoopLoop语句的差别是:语句的差别是:While While WendWend语句中不能使用语句中不能使用ExitExit语句跳出循环。语句跳出循环。语法格式:语法格式:While While 等价于
8、等价于 do While do While 循环体循环体 循环体循环体Wend LOOPWend LOOP3、WhileWend循环结构循环结构二、循环的嵌套二、循环的嵌套多重循环结构多重循环结构1、如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,2、嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:Exit Do与Exit For语句 语句功能:强制退出循环 Exit Do语句只能用在Do循环语句中 Exit For 语句只能用在For循环语句中 使用方法:在循环体中,作为IF语
9、句的子句循环结构程序的要素:循环结构程序的要素:1.循环体是什么?循环体是什么?2.循环控制变量及循环控制表达式是什么?循环控制变量及循环控制表达式是什么?3.循环应如何初始化?循环应如何初始化?4.对于每次循环,其控制变量如何改变?对于每次循环,其控制变量如何改变?循环嵌套举例循环嵌套举例一、程序分析举例一、程序分析举例题目题目1:n=1For i=1 To 3 For j=5 To I Step -1 n=n+2 Next j Print n;j;iNext iPrint n;j;i写出程序的输出结果写出程序的输出结果:程序分析举例程序分析举例题目题目2:k=0For j=1 To 2 P
10、rint I For i=1 To 3 k=i+1 Next I Print I For i=1 To 2 k=k+1 Next I Print INext jPrint k;I写出程序的输出结果写出程序的输出结果:程序分析举例程序分析举例题目题目3:For m=1 To 2 For j=1 To m For k=j To 2 Print m=“;m,j=;j,k=,kNext k,j ,m写出程序的输出结果写出程序的输出结果:注意其写法:顺序,原则,等价形式注意其写法:顺序,原则,等价形式程序分析举例程序分析举例题目题目4:For i=5 To 4 Step -1 s=0#For j=i T
11、o 3 Step -1 s=s+i*j Next jNext iPrint s写出程序的输出结果写出程序的输出结果:总结:循环嵌套程序的执行方式、分析方法 书写循环嵌套程序的习惯、原则二、程序填空题二、程序填空题新的身份证号由新的身份证号由18位组成,最低位(右边)为校验位,位组成,最低位(右边)为校验位,其算法是:其算法是:10(前(前17位之和关于位之和关于10的模)。的模)。mstr存放身份存放身份证号,证号,md为产生的校验位,若校验正确,在为产生的校验位,若校验正确,在L1中显示中显示“yes”,否则在否则在L1中显示中显示“no”。Mstr$=text1.textmsum=0 (1
12、)mp=Mid(mstr,i,1)msum=msum+Val(mp)Next i md=10-(2)If md=(3)Then L1.Caption=“Yes”Else L1.Caption=“No”End If以下程序将十六进制整数字符串转换成十进制整数以下程序将十六进制整数字符串转换成十进制整数假设文本框中输入的十六进制字母符号全部为大写假设文本框中输入的十六进制字母符号全部为大写 s$=text1.text:d=0For i=(1)c=Mid(s$,i,1)If c=A Then d=(2)-Asc(A)+10 Else d=d*16+Val(c)End If Next (3)Text2
13、.text=d三、程序设计举例三、程序设计举例题目题目1:输出一行(输出一行(20个)星号。个)星号。输出一列(输出一列(20个)星号。个)星号。输出三行星号,每行输出三行星号,每行20个。个。输出输出5行三角形形式星号。行三角形形式星号。例题:例题:打印九九乘法表打印九九乘法表.For i=1 To 9 For j=1 To 9 se=i&j&=&i*j Picture1.Print Tab(j-1)*9+1);se;Next j Picture1.Print Next i程序设计举例程序设计举例题目题目2:(1)判断一个输入的数是否为素数。判断一个输入的数是否为素数。(2)找出找出100到
14、到200之间的所有素数。之间的所有素数。题目题目3:求求S=1!+2!+3!+7!循环控制变量赋初值循环控制变量赋初值及其他相关初始化语句及其他相关初始化语句循环控制条件循环控制条件循环体语句循环体语句改变循环控制变量的语句改变循环控制变量的语句数值数值x8?X=1:Sum=0S=X!,累加到,累加到SumX=x+1循环控制变量赋初值循环控制变量赋初值及其他相关初始化语句及其他相关初始化语句循环控制条件循环控制条件循环体语句循环体语句改变循环控制变量的语句改变循环控制变量的语句k=x?K=1X=val(text1.text)S=S*KK=k+1循环控制变量赋初值循环控制变量赋初值及其他相关初始
15、化语句及其他相关初始化语句循环控制条件循环控制条件改变循环控制变量的语句改变循环控制变量的语句数值数值X8?X=1:Sum=0Sum=Sum+S:X=X+1初始化语句初始化语句循环控制条件循环控制条件循环体语句循环体语句改变循环控制变量的语句改变循环控制变量的语句k=X?S=1:K=1S=S*KK=k+1Sum=0For x=1 to 8 s=1 for k=1 to x s=s*k next k sum=sum+sNext x练习:教材习题练习:教材习题P119,二,二,2程序设计举例程序设计举例题目题目4:穷举法穷举法 for a=1 to 9 for b=0 to 9 for c=0 t
16、o 9 next c,b,a(1)请用上面的循环方式找出所有水仙花数请用上面的循环方式找出所有水仙花数(2)教材教材P114,例,例6-13(3)教材习题:教材习题:P119,二,二,1以下代码用于计算以下代码用于计算)!1n2(x)1(!7x!5x!3x1x)xsin(1n21n753的近似值,当级数第的近似值,当级数第i i项的绝对值小于项的绝对值小于1010-5-5时时计算结束,同时调用内部函数进行验证。这里,计算结束,同时调用内部函数进行验证。这里,x x为弧度。为弧度。x=3.14159/6x=3.14159/6i=1:t=x:sinxi=1:t=x:sinx=t=tDo While
17、Do While (1)(1)i=i+2i=i+2t=t=(2)(2)sinx=sinx+tsinx=sinx+tLoopLoopPrint sinxPrint sinx,(3)(3)下面的程序用于对下面的程序用于对9位的准考证号进行校验。参数位的准考证号进行校验。参数mno存放存放准考证号,准考证号,mjy存放产生的校验位,存放产生的校验位,tag判断校验正确否,若校判断校验正确否,若校验正确在验正确在L1中显示中显示“yes”,否则在,否则在L1中显示中显示“no”。产生校验。产生校验位的算法为:取准考证号右边的位的算法为:取准考证号右边的8位数之和关于位数之和关于9的模作为校验的模作为校验值,准考证号最左边的一位为校验位。值,准考证号最左边的一位为校验位。Mno$=text1.text msum=0 (1)m=Mid(mno,j,1)msum=msum+Val(m)Next j mjy=(2)If (3)Then L1.Caption=“Yes”Else L1.Caption=“No”End If