运行结果:
YEARS VALUES
0 10000
1 11125
… …
6 18958.33
IN 7 YEARS IT LL HAS 21091.14
若将条件改为“DO WHILE V<2 * P”,将会出现什么结果。请读者自己分析。
[例7-13] 猜数游戏。由随机数发生器产生100以内的整数,用户从键盘上猜一个数,计算机会提示大了还是小了,直到猜准为止。
源程序:
'EXAMPLE 13
'Number quesssing game
RANDOMIZE
NUMBER=INT(100*RND+1)
COUNT=0
DO
PRINT "YOUR QUESS";
INPUT QUESS
COUNT=COUNT+1
IF QUESS>NUMBER THEN
PRINT "TOO BIG"
ELSE IF QUESS<NUMBER THEN
PRINT "TOO SMALL"
ELSE
PRINT "THAT'S RIGHT!"
PRINT "YOU NEEDED";COUNT;"QUESSES"
END IF
LOOP UNTIL QUESS=NUMBER
END
[例7-14] 用牛顿迭代法求代数方程e-x-x=0在x0=-2附近的一个实根,直到满足│X1-X0│<ε=10E-06为止。方程的曲线如图7-11所示。

图7-11 方程的曲线算法:
方程f=(x)=0的实根在几何图形上为曲线f(x)与x轴的交点x*,可用对f(x)求导的方法,从x0开始,使方程的根逐渐逼近x*,这就是牛顿迭代法的基本思想。
所谓迭代(Iteration)就是重复执行一组指令,如:T=T*I,S=S+T,这组指令每执行一次,变量S就在原来的基础上增加一个T值。这种方法称迭代法。T、S为迭代变量。所以,用迭代法解题,其方法是不断用新值去迭代原值,直到满足条件为止。牛顿迭代法解题的步骤如下:
(1)求f(x)曲线在x0点处的切线斜率(即f'(x)):

x1o f'(x0)与x轴的交点
则建立迭代式为:

取x1为新的近似根。
(2)判断条件│X1-X0│<ε?,从前一个近似根可以推出下一个近似根,直到
│X1-X0│<ε为止。
变量设置:
F=F(x)=e-x-x
F1=f'(x)=-e-x-1
X0=-2
X1=X0-F/F1
N=N+1
E=e=1E-6
源程序:
’EXAMPLE 14
INPUT "X0.E=";X0,E
DO
X0=X1
N=N+1
F=EXP(-X0)-X0
F1=-EXP(-X0)-1
X1=X0-F/F1
PRINT "X(";N;")=";X1
LOOP UNTIL ABS (X1-X0)<=E
END
运行结果:
X0,E=? -2,1E-06
X(1)=-.80791
…
X(5)=.5671433
X(6)=.567143
1.本章介绍的主要内容
(1)WHILE-WEND语句
(2)FOR-NEXT语句
(3)DO{WHILE丨UNTIL}-LOOP语句
DO-LOOP{WHILE丨UNTIL}语句
同时还介绍了两种中途退出循环的语句:
(1)EXIT FOR语句
(2)EXIT DO语句
2.3种循环结构的使用比较
(1)3种循环结构的共同点是完成数据的重复计算和重复处理。
(2)3种循环结构的区别在于:
①FOR循环结构用于循环次数已知的情况。以指定的次数重复执行FOR与NEXT之间的循环体。
②WHILE循环和DO循环为条件循环结构。以某一条件是否成立来控制是否重复执行循环体。
WHILE循环语句用法较为单一,当条件为真时,执行循环体,当条件为假时,退出循环。而DO循环的功能更强,用法更灵活。DO循环有当型和直到型两种:
当型DO WHILE-LOOP:当条件成立时,执行循环体,否则退出循环。
直到型DO UNTIL-LOOP:当条件不成立时,执行循环体,否则退出循环。
读者可根据不同情况选用不同的循环类型,以满足实际应用的需要。
1.写出下列程序的运行结果:
(1) (2)
A=3 N=1
B=6 FOR K=1 TO N
FOR Y=B-A TO A+B STEP B/A PRINT " * ";
PRINT A,B NEXT K
NEXT Y PRINT
END N=N+1
IF N<=5 THEN 20
END
2.打印出3~100之间的所有奇数,奇数之和。
3.任意输入若于个非零,分别统计其中正、负的个数,并分别求出它们的和,输入零则结束程序。
4.编制程序打印下面的图案。
*
***
*****
*******
*********
5.编制程序,打印输出下面的图形。
* * * * * *
* * * * *
* * * *
* * *
* *
*
6.编制程序,打印输出下面的图形。
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
7.猴子吃桃问题。猴子第一天摘下若于个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见剩下一个桃子了。试求第一天共摘多少桃子?
8.我国古代数学家张丘建“算经”里提出一个世界数学史上有名的百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、母、雏各几何?
9.找出1~100之间的所有,“同构数”是这样的数:它出现在它的平方数的右端。例如5的平方数是25,5是25右端的数,5就是同构数;25的平方数是625,因此25也是一个同构数。
10.编一程序,输出斐波那(Fibonaccii)数例1,1,2,3,5,8,13,…前20项。