高一数学循环语句

1.2.3  循环语句
[学习目标导航]
学习提示
1.理解循环语句的两种形式,当型(while型)和直到型(until),能读懂循环型语句.
2.掌握两种循环型语句的使用技巧,并能在程序设计时正确运用.
重点是循环语句的两种结构;难点是准确用于程序设计.
[教材优化全析]
算法中的循环结构由循环语句来实现.对应于两种不同的循环结构,程序设计语言中的循环语句也分为两种:当型和直到型,即while语句和until语句.
(一)WHILE语句的一般格式是
全析提示
条件可以有多个,中间用AND连结.
循环体可有多个语句.
应用方法是:当计算机遇到WHILE语句时,先判断条件的真假,若为真,就执行WHILE与WEND之间的语句,然后再检查上述条件,若仍符合,就再次执行这些语句(循环体),反复进行,直到某一次条件不符合为止.当条件为假时,将不执行循环体,直接跳到WEND语句后,执行WEND之后的语句.因此,当型循环有时也称为"前测试型循环".
通俗地说,符合条件就循环,不符合条件就跳出循环.
如计算1×3×5×7×...×99的算法,用WHILE语句表示如下:
虚线框内就是一个当型结构对应的WHILE语句.
PRINT "1×3×5×7×...×99=";s
END
计算机在执行这个程序时由于数很大会溢出.
(二)UNTIL语句的一般格式是
循环体可由多个语句组成,条件可有多个.
应用方法是:当计算机遇到UNTIL语句时,先执行一次循环体,再判断是否满足条件,若不满足,再执行循环体,然后再检查是否满足条件,如此反复,直到满足条件时为止.当满足条件时,将不执行循环体,直接跳到LOOP  UNTIL语句后,执行LOOP  UNTIL后的语句.因此,
直到型循环又称为"后测试型循环".
如计算"1×3×5×7×...×99"的算法,用UNTIL语句表示如下:
通俗地说,先执行一次,若不符合条件就循环,符合条件就跳出循环.
虚线框内就是一个直到型结构对应的UNTIL语句.
PRINT "1×3×5×7×......×99=";sEND在设计程序时,一般说来,这两种语句用哪一种都可以,但在某些限定条件下,有时用WHILE语句较好表达,有时用UNTIL语句较好表达.因此,我们应认真分析题目,力求用一种最完美的表示方法.
[典型例题探究]
【例1】求1+...+的值,用程序语言表示其算法.
分析:设置累加和,用循环语句实现,可用WHILE语句,也可以用UNTIL语句.
解:(方法一)"WHILE语句"
s=1
i=2
WHILE  i<=100
a=1/i
s=s+a
i=i+1
规律发现
此处可以改为
s=0
i=1
WEND
PRINT  "1+...+=";s
END
(方法二)  "UNTIL语句"
s=1
i=2
DO
a=1/i
s=s+a
i=i+1
LOOP  UNTIL  i>100
PRINT  "1+...+=";s
END
【例2】求12+22+32+...+n2<1000成立的n的最大整数值,用程序语言表示其算法.
分析:设置累加和,用循环语句实现.循环的条件是累加和小于1000.
如果是求1+3+5+7+...+99的值,则关键处"i=i+1"改为"i=i+2"!类似的问题可仿此解决.
解:(方法一)"WHILE语句"
s=1
i=2
此处可改为
s=0
i=1
WHILE  s<1000
a=i∧2
s=s+a
i=i+1
WEND
i=i-2
PRINT  "n的最大整数值为:";i
END
可直接写成
s=s+I∧2
(方法二)"UNTIL语句"
s=1
i=2
DO
a=i∧2
s=s+a
i=i+1
LOOP  UNTIL  s>1000
i=i-2
PRINT  "n的最大整数值为:";i
END
在循环体外设置"i=i-2"的原因是:在循环体内判断s<1000时执行了两次i=i+1,导致不符合要求,从而i的值应该减去2.
类似地,将平方改为立方、四次方、开平方等均可设计类似的程序.
【例3】一个小朋友在一次玩皮球时,偶然发现一个现象:球从某高度落下后,每次都反弹回原高度的,再落下,再反弹回上次高度的,如此反复.假设球从100 cm处落下,那么第10次下落的高度是多少?在第10次落地时共经过多少路程?试用程序语言表示其算法.
生活中处处存在数学问题,只要留心便会发现许多有趣的问题.
分析:第一次下落时高度h1=100 cm,经过一次;第二次下落时高度h2=cm,经过2次;第三次下落时高度h3= cm,经过2次......第十次下落时高度h10= cm,经过2次.经过的总路程是各次高度的和.
解:s=0
  h=100
  s=s+h
  i=2
可画示意图帮助分析
WHILE  i<=10
h=h/3
s=s+2*h
i=i+1
WEND
PRINT  "第10次下落的高度为:";h
PRINT  "第10次落地时共经过的路程为:";s
END
【例4】已知m、n是两个正整数,求m+n<10的所有正整数对m、n.
若用UNTIL语句,则为:
DO
    h=h/3
    s=s+2*h
    i=i+1
LOOP  UNTIL  i>10
分析:当m=1时,n可取1,2,3,4,5,6,7,8;当m=2时,n可取1,2,3,4,5,6,7;当m=3时,n可取1,2,3,4,5,6;...;当m=8时,n取1.利用循环语句实现上述算法.
用列举法出规律;对m,n都是循环的.
解:m=1
    n=1
  PRINT  "适合m+n<10的所有正整数对是:"
  WHILE  m<=8
DO
PRINT  m,n
n=n+1
LOOP  UNTIL  m+n>=10
m=m+1
n=1
WEND
END
条件可以适当放大,如改为m<=9或m<=10都可以,但增加了循环时间和次数.
【例5】用公式・*...・,求π的近似值.
分析:设公式右边为t,则π=2t.关键是求出t的值.从公式看,分子是连续偶数的关系,分母是相邻两个奇数的关系,利用循环语句可以实现.求t的值,需要输入n的值.
寻题目所给式子的特征.
解:INPUT  "请输入正整数n的值:";n
m=2*n
t=1
i=2
WHILE  i<=m
x=i*i
y=(i-1)*(i+1)
t=t*x/y
i=i+2
WEND
z=2*t
PRINT  "PI的值为:";z
END
通过多个赋值语句,可以简化一个计算式子的书写.
[教材习题研讨]
P21  思考
答案:当计算机遇到UNTIL语句时,先执行一次循环体,再判断是否满足条件,若不满足,再执行循环体,然后再检查是否满足条件,如此反复.当满足条件时,将不执行循环体,转而执行LOOP  UNTIL后的语句.
方法点拨
WHILE语句称为前测试型,UNTIL语句称为后测试型.
P22  思考
答案:课本上的算法可以改进.将循环条件"WHILE  d<=n-1  AND  flag=1"改为"WHILE  d<=SQR(n)  AND  flag=1"即可.
改进后循环次数少了,提高了解题速度.
P23  练习
1.解:a=1
 b=2
 c=0.005
DO
    x=(a+b)/2
    f(a)=a∧2-2
    f(x)=x∧2-2
IF  f(x)=0  THEN
    PRINT  "方程根为:";x
ELSE
    IF  f(a)*f(x)<0  THEN
    b=x
若改为
INPUT"请输入a、b的值:";a、b
INPUT "请输入误差范围c:";c
则该题的区间范围、误差范围还可以改变、限制.
ELSE
    a=x
    END  IF
    END  IF
LOOP  UNTIL  ABS(a-b)<=c
PRINT  "方程的近似根为:";x
END
|a-b|<=c不成立时循环,成立时则停止循环.
2.解:x=1
WHILE  x<=20
y=x∧2-3*x+5
PRINT  "x=";x
PRINT  "y=";y
x=x+1
WEND
END
计算一个、输出一个,再计算、输出下一个,如此反复.
3.解:t=1
i=1
INPUT  "请输入n的值:";n
DO
    t=t*i
    i=i+1
LOOP  UNTIL  i>n
PRINT  "这个数的阶乘为:";t
END
也可以用WHILE语句
WHILE i<=n
t=t*i
i=i+1
WEND
输出语句可写成
PRINTn;"!=";t
P23  习题1.2
A组
1.解:(1)输入你的名字,输出你的名字.
(2)A=1  A=1×2=2  A=2×3=6  A=6×4=24  A=24×5=120  输出  5!  是120
正确理解输入语句、输出语句和赋值语句.
2.解:INPUT  "梯形的上底、下底、高分别为:";a,b,h
c=(a+b)/2
S=c*h
PRINT  "梯形的面积S=";S
END
a,b,h可分别输入,写成三个INPUT语句.
3.解:INPUT  "请输入两个整数a,b:";a,b
IF  a MOD b=0  THEN
    PRINT  "a能被b整除"
MOD表示取余数,整除即余数为0.
输出语句可以写成
ELSE
    PRINT  "a不能被b整除"
END  IF
END
4.解:INPUT  "请输入加数的个数n:";n
t=1
i=2
PRINTa;"能被";b;"整除"
sum=0
DO
    sum=sum+i
    t=t+1
    i=
sum=sum+i是累加求和,t=t+1表示计数器.
LOOP  UNTIL  t>n
PRINT  "和s=";sum
END
可以用WHILE语句,条件是t<=n.
5.解:s=1
t=1
p=1
i=1
j=1
k=1
INPUT  "请输入n,m的值:";n,m
DO
    s=s*i
    i=i+1
LOOP  UNTIL  i>n
设置三个计数器,三个独立的循环结构.
DO
    t=t*j
    j=j+1
LOOP  UNTIL  j>m
DO
    p=p*k
    k=k+1
LOOP  UNTIL  k>n-m
    a=t*p
    b=s/a
PRINT  "组合数的值为:";b
END
可以写成WHILE语句,同学们自己写出.B组
1.解:R=0.5
 a=1000
 i=1
DO
    a=a*(1+R)
    i=i+1
LOOP  UNTIL  i>6
PRINT  "2008年底的资金总额为:";a
END
2008年底资金总额为1000(1+0.5)6万元,设计成累乘的形式,用循环结构.如用INPUT语句输入a、R的值,则具有一般意义.
2.解:INPUT  "请输入x的值:";x
IF  x<1  THEN
    y=x
    PRINT  "y=";y
ELSE
IF  x<10  THEN
y=2*x-1
PRINT  "y=";y
ELSE
y=3*x-11
PRINT  "y=";y
END  IF
END  IF
END
分段函数对应于条件结构,用条件语句的形式,可以形成嵌套.
3.解:INPUT  "请输入数字a和加数的个数n:";a,n
s=0
b=a
i=1
DO
    s=s+b
    b=b*10+a
    i=i+1
LOOP  UNTIL  i>n
PRINT  "s=";s
END
实数aaaa=a×103+a×102+a×10+a,
aaaa=aaa×10+a,类推.
[知识应用自测]
思路导引
1.写出下列程序运行的结果.
(1)a=2(2)x=100
i=1i=1
  WHILE  i<=6DO
a=a+1x=x+10
PRINT  i,aPRINT  i,x
i=i+1i=i+1
WENDLOOP  UNTIL  x=200
ENDEND
答案:(1)1,3;2,4;3,5;4,6;5,7;6,8.
(2)1,110;2,120;3,130;4,140;5,150;6,160;7,170;8,180;9,190;
10,200.
←理解当型语句和直到型语句的不同,理解循环体的执行步骤.
2.求小于100的所有正偶数的和,设计一个算法的程序.
解:s=2
i=4
DO
s=s+i
i=i+2
LOOP  UNTIL  i>=100
PRINT  "2+4+6+...+98=";s
END←用UNTIL语句.
3.计算100×(1+0.02)8,用循环语句写出算法.
解:a=100
 R=0.002
 i=1
WHILE  i<=8
a=a*(1+R)
i=i+1
WEND
PRINT  "100*(1+0.002)∧8=";a
END←用WHILE语句.
4.求平方值小于1000的最大正整数,写出一个算法的程序.
解:i=1
DO
    s=i∧2
    i=i+1
LOOP  UNTIL  s>=1000
    i=i-2
PRINT  "平方值小于1000的最大正整数为:";i
END←用UNTIL语句.
5.计算1+2+22+23+24+...+263,写出算法的程序.
解:s=1
n=2
i=1
WHILE  i<=63
s=s+n∧i
i=i+1
  WEND
  PRINT  "1+2+2∧2+2∧3+...+2∧63=";s
  END
←用WHILE语句.
6.1,1,2,3,5,8,13,21,...这一列数的规律是:从第三个数开始,每个数为其前面两个数的和,写出计算这列数前20个数的和的算法程序.while语句怎么输出
解:A=1
B=1
s=A+B
i=1
WHILE  i<=18
C=A+B
s=s+C
A=B
B=C
i=i+1
WEND
PRINT  "前20个数的和为:";s
END←用WHILE语句,设置累加项.
7.设计0°~180°间隔为10°的角的正弦值的求法程序.
解:A=0
DO
    C=3.14159265*A/180
    B=sin(C)
    PRINT  "角和它的正弦值分别为:";A,B
    A=A+10
LOOP  UNTIL  A>180
END←用t=t+10的形式.
8.2000年我国人口为13亿,如果人口每年的自然增长率为7‰,那么多少年后我国人口将达到15亿?设计一个算法的程序.
解:A=13
R=0.007
i=1
DO
    A=A*(1+R)
    i=i+1
LOOP  UNTIL  A>=15
    i=i-1
PRINT  "达到或超过15亿人口需要的年数为:";i
END←用UNTIL语句.
9.编写求乘积为399的两个相邻奇数的程序.
解:i=1
DO
    t=i+2
    s=i*t
    i=i+2
LOOP  UNTIL  s=399
PRINT  t-2,t
END←用UNTIL语句.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。