算法初步1.2基本算法语句1.2.3循环语句基础梳理算法中的循环结构是由循环语句来实现的.对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构.即WHILE语句和UNTIL语句.(1)WHILE语句的一般格式是:WHILE条件循环体WEND其中循环体是由计算机反复执行的一组语句构成的.WHLIE后面的“条件”是用于控制计算机执行循环体或跳出循环体的.当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止.这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句.因此,当型循环有时也称为“前测试型”循环.其对应的程序结构框图为:(2)UNTIL语句的一般格式是:其对应的程序结构框图为:DO循环体LOOPUNTIL条件思考应用1.如何理解WHILE语句?解析:计算机执行此程序时,遇到WHILE语句,先判断条件是否成立,如果成立,则执行WHILE和WEND之间的循环体,然后返回到WHILE语句再判断上述条件是否成立,如果成立,再执行循环体,这个过程反复执行,直到一次返回到WHILE语句判断上述条件不成立为止,这时不再执行循环体,而是跳到WEND语句后,执行WEND后面的语句.因此当型循环又称“前测试型”循环,也就是我们经常讲的“先测试后执行”、“先判断后循环”.2.如何理解UNTIL语句?解析:计算机执行UNTIL语句时,先执行DO和LOOPUNTIL之间的循环体,然后判断“LOOPUNTIL”后面的条件是否成立,如果条件不成立,返回DO语句处重新执行循环体.这个过程反复执行,直到一次判断“LOOPUNTIL”后面的条件条件成立为止,这时不再返回执行循环体,而是跳出循环体执行“LOOPUNTIL条件”下面的语句.因此直到型循环又称“后测试型”循环,也就是我们经常讲的“先执行后测试”、“先循环后判断”.3.当型循环与直到型循环有哪些区别?解析:①当型循环是先判断后执行,直到型循环是先执行后判断;②当型循环用WHILE语句,直到型循环用UNTIL语句;③对同一算法来说,当型循环和直到型循环的条件互为反条件.用循环结构描述算法,要确定循环变量与初始值、循环体和终止条件.自测自评1.下面程序运行后输出的结果为________.i=1S=0WHLIEi<=5S=S+ii=i+lWENDPRINTSEND152.下面程序运行后输出的结果为________.i=1S=0DOS=S+ii=i+1LOOPUNTILi>5PRINTSEND153.循环结构中反复执行的处理步骤是()A.循环体B.指向线C.程序D.路径A4.右边算法流程图最后输出的结果是()A.1B.4C.7D.11C理解WHILE语句下面程序运行后输出的结果为______.i=1S=1WHILEi<=5S=S*ii=i+1WENDPRINTSEND解析:第一次:S=1,i=2,第二次:S=2,i=3,以此类推第五次:S=1×2×3×4×5,i=6,此时退出,因此S=120.答案:120跟踪训练1.以上程序运行后的输出结果为()A.9B.10C.14D.15i=1,S=0WHILES10S=S+ii=i+1WENDPRINTSEND解析:第一次:S=1,i=2,第二次:S=1+2=3,i=3,第三次:S=3+3=6,i=4,第四次:S=6+4=10,i=5,此时退出循环,因此选B.答案:B理解UNTIL语句编写一个程序,输入正整数n,计算它的阶乘n!(n!=n*(n-1)*…*3*2*1)解析:程序如下:t=1i=1INPUT“请输入n的值:”;nDOt=t*ii=i+1LOOPUNTILinPRINT“这个数的阶乘为:”;tEND跟踪训练2.下面程序运行后,输出的值是()A.20B.30C.42D.56C用WHILE语句和UNTIL语句编写程序用两种方式编写程序,计算1×2×3×…×10.解析:程序如下i=1S=1WHILEi<=10S=S*ii=i+1WENDPRINTSENDi=1S=1DOS=S*ii=i+1LOOPUNTILi>10PRINTSEND跟踪训练3.编写程序求S=1+2+3+…+n的和(n由键盘输入),程序如下,在如下程序的横线上应填_______.INPUTnS=0i=1WHILE________S=S+ii=i+1WENDPRINT“S=”;SEND解析:本题中i是计算变量,控制着循环次数.由于当型循环语句循环终止的条件是不满足WHILE后面的条件,所以应为i≤n.答案:i≤n点评:解决有关循环语句问题的关键是明确循环终止的条件.程序框图与程序的相互转换设计一个框图:逐个输出12,22,32,……,n2,并写出相应的程序.解析:程序框图如下:程序1程序2INPUTni=0WHILEini=i+1t=i∧2PRINTtWENDENDINPUTni=0DOi=i+1t=i∧2PRINTtLOOPUNTILi=nEND跟踪训练4.某纺织厂2010年的生产总值为300万元,如果年生产增产率为5%,请计算最早在哪一年生产总值超过400万元,画出程序框图并写出程序.分析:从2010年底开始,经过x年后生产总值为300×(1+5%)x,可将2010年生产总值赋给变量a,然后对其进行累乘,用n作为计数变量进行循环,直到a的值超过400万元为止.解析:程序框图为:程序如下:a=300p=1.05n=2010DOa=a*pn=n+1LOOPUNTILa>400PRINTnEND1.循环语句用两种形式的语句均可.2.当型不满足条件就离开而直到型一旦满足条件就离开.3.所有程序最后都要用“END”.4.SQR(x)=x,ABS(x)=xx≥0-xx<0