资源描述:
《数学:1.2.3《循环语句》课件(1)(新人教A版必修3).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.2.3基本算法语句——循环语句算法中的循环结构是由循环语句来实现的.循环结构有两种-----当型与直到型.满足条件?循环体是否当型循环结构(当条件满足时反复执行循环体)直到型循环结构(反复执行循环体直到条件满足)循环体是否满足条件?对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构。WHILE语句(1)WHILE语句的一般格式是:WHILE条件循环体WEND其中循环体是由计算机反复执行的一组语句构成的。WHLIE后面的“条件”是用于控制计算机执行循环体或跳出循环体的。WHILE——当……时候WEND——
2、朝……方向行走(1)WHILE语句的一般格式是WHILE条件循环体WEND当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止.这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句.满足条件?循环体是否当型循环结构(2)UNTIL语句的一般格式是:DO循环体LOOPUNTIL条件循环体是否满足条件?直到型循环结构DO——做什么LOOPUNTIL——绕环回线走,直到达到某种条件为止思考:参照其直到型循
3、环结构对应的程序框图,说说计算机是按怎样的顺序执行UNTIL语句的?(2)UNTIL语句的一般格式是:DO循环体LOOPUNTIL条件循环体是否满足条件?直到型循环结构从UNTIL型循环结构分析,计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到某一次条件满足时,不再执行循环体,跳到LOOPUNTIL语句后执行其他语句,是先执行循环体后进行条件判断的循环语句.提问:通过对照,大家觉得WHILE型语句与UNTIL型语句之间有什么区别呢?区别:在WHILE语句中,是当条件满足时执行循
4、环体,而在UNTIL语句中,是当条件不满足时执行循环体。WHILE语句的一般格式WHILE条件循环体WENDUNTIL语句的一般格式DO循环体LOOPUNTIL条件例1.编写程序,计算自然数1+2+3+…+99+100的和.分析:这是一个累加问题.我们可以用WHILE型语句,也可以用UNTIL型语句。WHILE语句开始结束i=1S=0i=i+1S=S+i输出Si≤100?是否当型循环结构i=1S=0WHLIEi<=100S=S+ii=i+1WENDPRINTSENDUNTIL语句开始结束i=1S=0i=i+1S=S+i输出Si>100?否是直到型i=1S=0DOS=
5、S+ii=i+1LOOPUNTILi>100PRINTSEND开始i=1S=0i≤100?是S=S+ii=i+1否输出S结束当型循环结构变式训练(1):编写程序求:n!=1×2×3×4×5×……×n的值.如何修改?输入nWHILE语句i=1S=0WHLIEi<=100S=S+ii=i+1WENDPRINTSENDINPUT“n=”;nS=1S=S*ii≤n?S=1nS=S*i变式训练(2):编写程序求:1×3×5×7×……×101的值.如何修改?UNITL语句i=1S=0DOS=S+ii=i+1LOOPUNTILi>100PRINTSENDS=1101S=S*ii=
6、i+2是开始结束i=1S=0i=i+1S=S+i输出Si>100?否直到型S=1S=S*ii=i+2i>101?变式3:函数y=x^2-3x+5,从x=1开始连续输入19个自然数进行取值,输出相应的函数值,用程序语言进行编程x=1DOy=x^2-3*x+5LOOPUNTILx>20PRINT“x=”;x,“y=”;yENDx=x+1程序直到型当型x=1WHILEx<=20y=x^2-3*x+5WENDPRINT“x=”;x,“y=”;yENDx=x+1程序例2:根据P7页图1.1-2,将程序框图转化为程序语句.分析:仔细观察,该程序框图中既有条件结构,又有循环结构。
7、INPUT“n=”;ni=2DOr=nMODii=i+1LOOPUNTILi>=nORr=0IFr=0THENPRINT“nisnotaprimenumber.”ELSEPRINT“nisaprimenumber.”ENDIFEND程序开始输入ni=2求n除以i的余数ri=i+1i≥n或r=0?n不是质数结束是否是n是质数否r=0?例3.P19图1.1-20转化成程序语言程序框图程序INPUT“a,b,d=”;a,b,dDOm=(a+b)/2f=m^2-2g=a^2-2IFg*f<0THENb=mELSEa=mENDIFLOOPUNTILABS(a-b)