有图小站

关注电脑网络,记录健康生活。有图小站,价值分享。

当前位置: 首页 > 程序设计 > while循环的使用

while循环的使用

在通用的计算机程序设计书本中,循环结构都是安排在分支结构之后,因为在循环结构当中包含一个判断,不过可不要以为循环就是包含判断。分支结构侧重于多个如果的结果,而循环侧重于满足一个如果的重复执行。循环结构包含很多,如:while……wend结构,do while……loop结构,do……loop until结构,for……next结构。前三者比较相似,所以,我们以典型的while……wend和for……next结构为例来说明循环的使用。

今天我们就给大家介绍while……wend结构。

例子1:

cls
s=0
x=1
while x<=10
s=s+x
x=x+1
wend
print s
end

这是个非常经典的循环例子。看循环程序一定要明确三点,这三点同样也是我们以后在程序中使用程序需要注意的:

1、循环前的初始值是怎样的;
2、循环条件是什么;
3、循环的控制变量是怎么变化的;

这三点的重要程度甚至超过了循环体本身,在很多程序教程中并没有强调这一点,所以往往大家学了循环程序,却依旧编写出错误的循环结构程序或者不够圆满的循环程序。

在本例中,while循环体中用到的变量有 s 和 x ,所以,我们在程序的开始部分要关注这两个变量的初始值,如果初始变量还有其他的变量,但只要不在循环当中我们是不用考虑的,这在以后编写的大程序中会看到。初始变量s=0,x=0。

紧接着是while……wend结构,这个结构的意思是这样的,当while后面的条件成立时,执行while……wend之间的语句,并在执行一遍之后,重新返回while语句,与while后面的条件进行比对,如果满足,继续执行,如此类推,直到while后面的条件不满足,跳出while……wend结构,直接执行wend的下一条指令。

如此一来,循环体中的两条语句 s=s+x 和 x=x+1 会不断的造成s和x的值的变化。在执行这两条语句的时候,我们不要忘掉了在赋值与变量一文中说到的赋值语句执行的规则:

赋值符号的右侧要按照运算规则,运算然后将结果赋予左侧变量;
右侧表达式中出现的变量取最近一次的值;

只要我们抓住这两条不放,加上我们在上面对while条件的判断,大家就会自己执行这个循环体了。大家执行一边看看。

执行的结果是,每次循环,在变量 s 上都会加 x ,而 x 是每次增加1。所以最后的结果是:

s=1+2+3+4+5+6+7+8+9+10
x 在等于 10 被加到 s 上之后执行了一句 x=x+1,x=11,回到while处判断,11不再满足 x<=10 的条件。所以,要跳出循环了。

执行下一条指令,输出 s 的值 55

例2:

cls
s=0
x=1
m=1
while x<=4
m=m*x
s=s+m
x=x+1
wend
print s
end

大家分析分析,看看是什么结果,是否是计算:

s=1+1*2+1*2*3+1*2*3*4

如果将条件设定为 x<=n 那就变成了求 n! 之和。(n! 的意思是n的阶乘)

这个例子本来是没有 s=s+m 那句的,不过我想把大家的思路放开一些,不要老停留在累加和累乘上面,要会根据程序实际的情况来。那么看看下面这段程序是做什么用的:

cls
s=1
x=1
while x<=4
s=s+s*x-1
x=x+1
wend
print s
wend

说句实话,这是我为了完成 N! 的计算在大一的时候写的作业。大家看看错在哪里。

来个实际一点的:

例3、计算成绩:
1)、已知一个同学6门课程的成绩,请计算他的总成绩;
2)、计算一个未知人数班级的语文平均成绩;
3)、计算一个班6门学科各自的平均成绩。

解决第一问:

按照我们以前学习的,很简单两句可以搞定。

cls
input a1,a2,a3,a4,a5,a6
print a1+a2+a3+a4+a5+a6
end

如果使用刚刚学习的循环,这个问题可以这样:

cls
s=0
x=1
while x<=6
input "chengji";a
s=s+a
x=x+1 
wend
print "6 men chengji he";s
end

此处在while语句中增添了 input "chengji";a 这一句就是来接受每一次输入的成绩的,我们看到后面紧跟着有一句 s=s+a 就是将各门成绩相加。不要看这个方法麻烦,后面两问用得到,所以,不得不考虑。

解答第二问:

既然是未知人数,那只好来句 input n 来决定到底多少人了。所以这个问题可以这样写。

cls
s=0
input "renshu:";n
while x<=n
input "chengji";a
s=s+a
x=x+1 
wend
print s/n
end

为何在最后s/n 因为求的不是总成绩,而是平均成绩,所以要除以总人数了。

解决第三问:(由于没有还没有学数组,所以只要分别单列)

cls
s1=0:s2=0:s3=0:s4=0:s5=0:s6=0
x=1
input "renshu:";n
while x<=n
input "chengji a1,a2,a3,a4,a5,a6";a1,a2,a3,a4,a5,a6
s1=s1+a1
s2=s2+a2
s3=s3+a3
s4=s4+a4
s5=s5+a5
s6=s6+a6
x=x+1 
wend
print "ge ke ping jun";s1/n,s2/n,s3/n,s4/n,s5/n,s6/n
end

第一次看到多个赋值语句使用一行的情况,简单介绍下,使用英文的冒号可以将多个赋值语句并列到一行,具体的感觉自己尝试吧,不再介绍了。

我们给大家举这个例子,并非一定要我们去使用程序去解决这个平均分的计算,而是让大家在看这个程序例子中控制变量都做了什么样的变化和我们最前面的两个例子有何不同。

今天我们就介绍这么多,下一节我们介绍for……next语句,更多内容参考我们的qbasic教程内容。

本文是 有图小站 原创,原地址 http://www.utosee.com/post/while-qbasic.html 转载请保留。





上一篇:联想开天M8000驱动
下一篇:for next循环语句的使用方法




版权所有 有图小站 关注 电脑 网络 软件 健康 豫ICP备12023314号