17xie > Quick BASIC程序设计实用教程 > 第七章 循环结构
背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-6158.html    注册17xie 一起来写书 实现您的出书梦想!

第七章  循环结构

第六章中的例6-12是一个由条件语句实现的循环。本章将介绍专门用于实现循环结构的3个语句,涉及的主要内容包括:

n          循环的概念

n          WHILE循环结构

n          WHILE循环结构的执行过程

n          FOR-NEXT循环结构

n          FOR-NEXT循环的执行过程

n          DO循环结构

n          循环结构的嵌套

循环结构是结构化程序3种基本结构之一,它可以充分利用计算机处理速度快的特点,把许多复杂问题的求解步骤变为计算机重复执行某些简单的操作。因此,我们必须很好的掌握它们的应用技巧。本章的难点是对于循环结构的嵌套的理解和学习。

7.1  引例

例如:求S 1+2+3++100

算法:

本题的算法已在第二章例2-2进行过分析,它就是把加法的操作重复一百次,这就构成了循环。现在分别用条件语句和循环语句编写程序。

源程序1

N0S0

NN+1

SS+N

IF N100 THEN 20

PRINT "S="S

END

源程序2           源程序3

S0N0           S0

WHILE N100        FOR N1 TO 100

NN+1               SS+N

SS+N               NEXT N

WEND                 PRINT "S="S

PRINT "S="S        END

END

程序说明:

以上3个程序都是完成同一算法的3种不同表现形式。其中,第1个程序是用条件语句实现的直到型循环。第23个程序是用WHILE-WENDFOR-NEXT实现的当型循环。

7.2  WHILE循环语句(WHILE-WEND

7.2.1  语句格式

WHILE〈条件〉

      〈循环体〉

WEND

其中:〈条件〉:是关系表达式或逻辑表达式;

     〈循环体〉:是一语句组,要重复执行的内容。

7.2.2  使用说明

1WHILE循环的执行过程如图7-1所示。WHILE语句首先判断条件:当条件成立时,则执行WHILEWEND之间的循环体,然后再转到WHILE语句重新进行判断;当条件不成立时,就退出循环转到WEND的后续语句。

2WHILEWEND必须配对使用。

7-1  WHILE循环的执行过程

7.2.3  举例

[7-1]  编程计算N!的值。

 

 

源程序:

REM EXAMPLE 1

INPUT N

T1

WHILE 1N

11+1

TT*H

WEND

PRINT "T="T

END

运行结果:

5

T120

程序说明:

当条件1N为真时进行循环。5行语句为计数器,统计循环次数。6行语句为累乘器,将阶乘的值存放在T中。

[7-2]  有一阶梯,若每步跨2阶,则最后剩下1阶;若每步跨3阶,则最后剩下2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶时,最后才正好走完,1阶不剩。请问这条阶梯有多少阶。

算法1

由于阶梯数被2除后余1,所以不妨设初值X3,然后用3X,若不余2,则把X每次增加2,直到最后余2为止;再用5除,若不余4,则每次增加6623的最小公倍数),直到余4为止;再用6除,若不余5,则每次增加3030235的最小公倍数),直到余5止;再用7除,若不能整除,每次增加30302356的最小公倍数),直到整除为止。此时X中放的数就是要求的阶梯数,N-S图如图7-2所示。

7-2  N-S

 

源程序:

REM EXAMPLE 2A

X3

WHILE X MOD 3<>2

XX+2

WEND

WHILE X MOD 5<>4

XX+6

WEND

WHILE X MOD 6<>5

XX+30

WEND

WHILE X MOD7<>0

XX+30

WEND

PRINT  "X="X

END

运行结果:

X119

算法2

根据题意,阶梯数能被7整除,设初值X7,判断X是否满足题中的要求,如果满足,则打印X,否则X再增加7,再去判断,以此类推,直到满足要求,打印出X

源程序:

REM EXAMPLE 2B

X7

WHILE X MOD 2<>1 OR X MOD 3<>2

OR X MOD 5<>4 OR X MOD 6<>5

XX+7

WEND

PRINT   "X="X

END

两种算法结果相同,算法2比算法1简单易懂。

7.3  FOR 循环语句(FORNEXT

7.3.1  格式

FOR〈循环变量〉=〈初值〉 TO 〈终值〉 STEP 〈步长〉]

〈循环体〉

NEXT  〈循环变量〉

其中:

   〈循环变量〉:又称循环控制变量,是简单变量。

   〈初值〉,〈终值〉,〈步长〉:可以是整型实型的常量、变量或算术表达式。

当步长为1时,[STEP〈步长〉]可以省略。

说明:

1FOR语句称为循环说明语句,也是循环的入口。它的含义是循环变量的取值从初值开始,每循环一次增加一个步长,直到超过终值为止,在语句中由此决定循环的执行次数。循环执行的次数可以用下面的公式计算出来。

循环次数=INT((终值-初值)/步长)+1

凡是计算出的循环次数小于等于0的,循环次数为0

2NEXT语句称为循环结束语句,是循环的出口。当执行该语句时,循环变量取下一个值,即把控制循环变量的当前值增加一个步长。

3FORNEXT之间的语句称为循环体,它是循环语句的主体,是需要多次重复执行的部分,可以由一个或多个语句组成。

7.3.2  执行过程

执行过程如图7-3所示。

7-3  FOR循环执行过程

1)在执行FOR语句时,计算机首先把初值赋给循环变量,并自动记下终值和步长。

2)将循环变量的值与终值比较,如果循环变量的当前值超过终值,则不执行循环体,执行NEXT的下语句。

3)若循环变量的值未超过终值,则执行循环体。

4)执行到NEXT语句,循环变量的当前值增加一个步长值再赋给变量,然后转到第2步。

7.3.3  使用说明

1FOR语句和NEXT语句必须配对,而且同一循环中FOR语句和NEXT语句中的循环变量必须同名,否则就会出错。

2)步长值可以是整数,也可以是小数,可以是正值,也可以是负值。

n         当步长值正时,在循环的执行过程中,循环变量按步长递增,直到循环变量的值变化到大于终值时,循环停止。例如:

FOR I1  TO 10   STEP   2.5

n         步长值为正时,终止循环的条件是终值必须大于初值。

n         如果步长值为负,在执行循环的过程中,循环变量按步长递减,当循环变量值变化到小于终值时,循环才会停止。例如:

FOR X5 TO 1 STEP -1

n         步长值为负时,终止循环的条件是终值必须小于初值。

n         当步值长为小数时:

FOR X1 TO 3+0.5/2 STEP 0.5

当步长值为小数时,实数计算会产生一定误差,为确保循环的预定次数,建议终值加上半个步长,如例3所示。

3)循环变量的初值,终值和步长的选择方法。

n         如果循环变量不出现在循环体内,仅仅用来控制执行循环次数,则可随意选择初值,终值和步长,只要保证完成需要的循环次数即可。为了提高速度,最好用整数。如要循环N次,则用FOR I 1 TO N

n         如果循环变理出在循环体内并参与运算,则应根据题目要求来选择初值,终值和步长。如例7-3

[7-3]  打印-π到π之间的正弦曲线,每隔10°打一“*”号。

源程序:

REM EXAMPLE 3

PI3.14159

FOR X-PI  TO  PI+PI/18/2 STEP  PI/18

PRINT INTX* 180/PI);

PRINT TAB32+20 * SINX));"*"

NEXT X

END

程序说明:

1)根据该题要求,选择初值为-3.14159、终值为3.14159+3.14159/18/2)、步长定为10°。终值加步长的一半是为了确保循环的正常次数。

2)第5行语句是指定适当位置打印‘*’号,因为sinx的值是小于1的,取整后都为0,所以放大20倍,这样它的坐标值才能打印;为了使图形完整地显示在屏幕中部,故将正弦曲线的X轴线平移32格。


字数:4933    最后更新:1年以前 [08-24 10:22]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第六章  [后一页]:第七章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号