欢迎来到天天文库
浏览记录
ID:20462151
大小:55.50 KB
页数:6页
时间:2018-10-13
《vbfor循环机制》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、剖析VBFor循环运行机制[円期:2010-05-05]來源:作者:[字体:大中小]作为程序设计中最基本结构之一的循环结构,在软件开发中占有很重要的地位,几乎每一个大中型程序都离不开该结构。假设没有循环这一结构,无疑,程序设计将会是一件非常痛苦的事情。循环如果被利用好则可以给我们设计带来很大的方便。相反,如果不会用或运用不当,不仅不会给我们带来方便,反而会因为绕来绕去把我们弄的头晕眼花,不知所措。本文将用浅显的文字辅以简单的例子对¥13for循环结构加以阐述,以飨读者。高中信息技术《算法与程序设计》会考模拟练习中有类似下面这样的题目:在VB中,假定有以下程序段:fori=3to1p
2、rint“VB”nexti问:语句print“VB”的执行次数为几次,i的值是几?这样的题目令好多同学摸不着头脑,稀里糊涂,答案等等不一。为什么会出现这样的问题呢?笔者认为就是因为好多同学对其运行机制的理解较为片面,过于肤浅,只停留在表面,不够深入、透彻。那末,答案到底是什么,我们暂且不去回答,因为有现成的公式可以计算出循环的次数(循环的次数的计算公式为:n-Int((终值-初值)/步长)+1)。到这里不免有人会质问:不就是一个循环吗?能有什么内涵?既然有了公式,根据它不就可以计算出循环次数来吗?还要说那么多废话,不是多此一举、小题大做吗?不要忘记,我们不是单单为丫去计算别人设计的
3、循环的次数,而是要理解循环运行机制,以便掌握各个量的变化情况。况且,该公式的适用范围较小。之所以产生疑惑的关键之处就是在于没有理解循环的内涵,而只是一味地死记、套用公式,再者就是该公式有一定的局限性,所以难免会得出错误结果來。那么循环到底有哪些内涵呢?首先让我们来看一看VBFor循环的格式(定义):for循环变量=初始值to终值[step步长]循环体[exitfor]next[循环变量]其中,如果省略“[step步长]”,则默认步长为1。[exitfor]的作用是用来强制退出循环,执行循环以后的语句。初始值、终值和步长既可以是正数,也可以为负数(当然也可以为整数或小数)。在一些教材
4、中只是简单说只要初始值不超过终值,循环就一直执行。那么到底什么是“初始值”,什么是“不超过终值”呢?下面我们就结合几个例子,详细地解释一下,或许能给一度困惑的您带来一种豁然开朗的感觉。例1:求10以内偶数和的程序段如下:fori=2to10step2sum=sum+2nexti很显然,循环的次数为5。运行过程中各个量的变化情况如下表:第几次12345i的初值246810本次结束之后Sum26122030sum和i的值i4681012好多同学对上表的前三行的值都能理解,感到疑惑不解的是最后一行。为什么每次循环结束之后I的值会变化呢?这是因为“nexti”在起作用。当执行完sum=su
5、m+I这个循环体之后,接下来就是执行nexti。而nexti的作用就是让当前i的值增加一个步长,并将增加后的i作为下一次循环的初始值。所以初始值不是仅指刚开始吋赋的值,应该理解为“每次进入循环之前的值”。再者就是认为第5次I的值是12了,不是超过终值10了吗?怎么还可以呢?现在就来解释一下什么是“不超过终值”。本例中的终值是10,步长(2)是正的,只要循环变量的初始值不在区间(10,+oo)(注意是开区问,我们称之为“终值的正向区问”,因为步长是正的,反之则为“终值的负向区间”),循环就还要继续执行。该区域暂且称之为禁区。禁区取决于步长的正负。步长是正的就取终值的正向区间,否则就取
6、终值的负向区间。再來看下一个VB程序段:fory=lto10step一1x=x+l问:循环体执行的次数和循环结束后循环变量的值分别是多少?首先知道终值是10,步长是负的,所以得到禁区为(-<-,10),第-次循环变量的初始值为1,在禁区内,所以第一次就不执行。故循环次数为0。这里因为先执行了“fory=lto10step-1”该条件语句,是让循环变量的初始值为1,然后再去判断循环变量的值是否在禁区。所以,虽然循环没有执行,但是条件还是要被执行的。条件是循环体是否执行的依据,而条件执行的结果就是y=l。因此,循环(虽然没有执行)结束后循环变量的值是1。根据以上分析,不难回答本文开始提
7、出的问题:fori=3to1print“VB”nexti这里的终值是1,步长(默认为1)是正的,所以得到禁区为(1,+->),而初值3在此区间,所以循环体不执行,但循环变景i的值为3o在VbFor循环中,循环变量的值是不断变化的,但是终值一旦定下来就不可以改变了。例如:j=5fori=1tojJ=2print“Helloworld!”next此处的终值不会随着“>2”的变化而变化。当执行过j=5和fori=1toj后,终值就是5,和j就无关了,结果相当于fori=1t
此文档下载收益归作者所有