1、3.2 循环语句,1.For语句 (1)一般形式: For循环变量=初始值To终值 循环体Next (2)功能:适用于预先知道循环次数的循环结构.,【做一做1】 下列语句运行的结果是( ) For A=1 To 100 A=A+1 Next 输出A. A.99 B.100 C.101 D.102 答案:C,2.Do Loop语句 (1)一般形式: Do 循环体 Loop While条件为真 (2)功能:适用于预先不知道循环次数的循环结构. (3)执行流程:先进入循环体,执行一次循环体后,检查While后的条件是否被满足,“是”则继续执行循环体,“否”则退出循环体. (4)Do Loop语句对应
2、的基本框图:,【做一做2】 给出下列算法语句: S=1 i=12 Do S=S+i i=i-1 Loop While i9 输出S. 其输出的结果为 . 解析:输出的S为S=1+12+11+10+9=43. 答案:43,规律总结For语句与Do Loop语句的比较 For循环语句和Do Loop循环语句都能表达含有循环结构的算法,但是它们在表达方式和功能上又有一定的区别,它们的区别主要表现为以下几点: (1)书写格式不同. (2)作用不同.For循环语句主要适用于预先知道循环次数的循环结构;如果预先不知道循环次数,那么使用Do Loop循环语句.当然,预先知道循环次数时,也可用Do Loop语
3、句. (3)For循环语句循环条件在前,首先判断循环条件再执行,如果条件不满足,那么一次也不执行;而Do Loop循环语句循环条件在后,即使开始条件不满足也要执行一次.,(4)用For循环语句编写程序时要注意设定好循环变量的初始值、终值、循环变量的改变量,应避免出现多一次循环或少一次循环的情况;用Do Loop循环语句编写程序时,一定要注意表达式的写法,当表达式为真时,继续执行循环体,当表达式为假时,结束循环,防止出现表达式正好相反的错误.,思考辨析 判断下列说法是否正确,正确的在后面的括号里画“”,错误的画“”. (1)比较a,b两个数的大小的算法可用循环语句来描述. ( ) (2)求1+3
4、+32+32 018的和的算法可用循环语句来描述. ( ) (3)For语句适用于任何循环结构. ( ) (4)For语句与Do Loop语句之间可以相互转化. ( ) (5)循环语句中循环体是反复执行的,直至循环结束. ( ) 答案:(1) (2) (3) (4) (5),探究一,探究二,探究三,思维辨析,当堂检测,For语句及其应用 【例1】 (1)算法语句: S=0 For i=1 To 1 000S=S+i Next 其中For i=1 To 1 000的作用是( ) A.表示一个数字从1到1 000 B.表示从2一直加到1 000 C.表示从1开始循环到1 000 D.表示i从1开始
5、以1为步长累加到1 000 (2)设计算法计算12+22+32+2 0182,使用For语句描述该算法,并画出算法框图.,探究一,探究二,探究三,思维辨析,当堂检测,(1)答案:D (2)解:用i表示循环次数,用S表示总和,算法步骤如下: 令S的初始值为0,i的初始值为1; i从1开始循环到2 018,S=S+i2; 循环结束后,输出S. 算法框图如图所示. 用For语句表示如下: S=0 For i=1 To 2 018S=S+i*i Next 输出S.,探究一,探究二,探究三,思维辨析,当堂检测,反思感悟利用for语句实现循环结构的三个关键点 (1)确定变量的初值,即进行初始化操作. (2
6、)确定循环的次数. (3)确定循环体的内容. 利用for语句编写算法语句的注意点 (1)循环体要正确,尤其要注意循环体中的变量是否齐全. (2)循环条件要正确,条件与初始值要对应. (3)算法语句的格式要正确,循环结束时要有Next.,探究一,探究二,探究三,思维辨析,当堂检测,变式训练1下列算法语句执行后,输出的结果为 . S=0 For i=1 To 10S=S+i Next 输出S. 解析:由For语句的功能知该算法语句执行后,输出的是式子: 0+1+2+3+10的值,因此S=0+1+2+3+10=55.故输出结果为55. 答案:55,探究一,探究二,探究三,思维辨析,当堂检测,Do L
7、oop语句及其应用 【例2】 (1)下列算法语句: A=2 B=1 Do B=A*B A=A+1 Loop While A1 028的最小自然数n.,探究一,探究二,探究三,思维辨析,当堂检测,(1)解析:由算法语句知,该算法功能是求12345的值并输出. 答案:120 (2)解:由于预先无法确定循环的次数,须用Do Loop语句设计算法.可设计循环变量,令其初始值为1,每次增量为2,再设计累加变量,当其和大于1 028时停止循环. 用Do Loop语句描述为: i=1 sum=0 Dosum=sum+ii=i+2 Loop While sum=1 028 i=i-2 输出i.,探究一,探究二
8、,探究三,思维辨析,当堂检测,反思感悟1.在Do Loop语句中,每一次重复后,都需要检验While后的条件是否满足,一旦不满足条件,循环停止. 2.对于例2(2)中,在循环语句后面有一个赋值语句i=i-2,其作用是正确得到满足1+3+5+n1 028的最小自然数n.因为当前i的取值已经比满足1+3+5+n1 028的最小自然数多出了2.,探究一,探究二,探究三,思维辨析,当堂检测,变式训练2(1)执行下面的算法语句,输出的结果是( ) i=1 S=0 Do S=S*2+1 i=i+1 Loop While i=4 输出S. A.7 B.9 C.15 D.17,探究一,探究二,探究三,思维辨析
9、,当堂检测,(2)下面求1+4+7+2 016的值的算法语句中,正整数m的最大值为 . S=0 i=1 DoS=S+ii=i+3 Loop While im 输出S. 答案:(1)C (2)2 019,探究一,探究二,探究三,思维辨析,当堂检测,循环语句与条件语句的综合应用 【例3】高一(3)班共有54名同学参加了数学竞赛,现在有这54名同学的竞赛分数.请设计一个算法,要求计算竞赛成绩优秀的同学的平均分数并输出(规定90分以上为优秀),画出算法框图,并用基本语句描述该算法.,探究一,探究二,探究三,思维辨析,当堂检测,解:算法框图如图所示. 用基本语句描述算法如下: S=0 m=0 For i
10、=1 To 54输入xiIf xi90 ThenS=S+xm=m+1End If Next a=S/m 输出a.,探究一,探究二,探究三,思维辨析,当堂检测,反思感悟应用循环语句编写算法时应注意的问题 (1)在循环体中一定要改变控制条件的变量的值,否则会出现“死循环”,并且循环体每执行一次,控制条件中的变量就应更逼近满足跳出循环体的条件; (2)与条件语句一样,循环语句也可以嵌套,但应注意内层与外层的对应关系; (3)在编写算法语句时应注意跳出循环时对边界数值的检查,防止漏项或多项,可通过几次循环加以验证.,探究一,探究二,探究三,思维辨析,当堂检测,变式训练3某商场第一年销售平板电脑5 00
11、0台,如果平均每年销售量比上一年增加10%,那么从第一年起,大约几年可使总销售量达到30 000台?写出算法语句,并画出解决此问题的算法框图. 解:算法语句如下: m=5 000 S=0 i=0 Do S=S+m m=m*(1+0.1) i=i+1 Loop While S30 000 输出i-1. 算法框图如图所示.,探究一,探究二,探究三,思维辨析,当堂检测,未处理好累加中的首项而致误 【典例】下面是描述求满足13+24+35+46+n(n+2)4 028的最大自然数n的算法语句,试补充完整. S=0 i=1 Do (1) Loop While S4 028 (2) 输出i,探究一,探究二
12、,探究三,思维辨析,当堂检测,错解根据题意(1)处是循环体,应填 i=i+1 S=S+i*(i+2) (2)处是所求的最大自然数, 所以应填i=i+1. 正解根据题意(1)处是循环体,应填 S=S+i*(i+2) i=i+1 (2)处是所求的最大自然数,即累计变量,在满足条件时i的值已经加上1,所以输出的应是i-2,故应填i=i-2. 答案:(1)S=S+i*(i+2) i=i+1 (2)i=i-2,探究一,探究二,探究三,思维辨析,当堂检测,纠错心得本例错误的根本原因是在(1)处没有很好地明确S=13+24+35+n(n+2)的首项是13,而导致丢失13这一项;(2)处是先计算S后i变成i+
13、1,当S4 028时,此时i=i+1,应减去2后输出才是正确结论.,探究一,探究二,探究三,思维辨析,当堂检测,(1)图中空白的判断框内应填 ,执行框内应填 . (2)写出与算法框图相对应的算法语句.,解:(1)判断框:i2 018或i2 019,探究一,探究二,探究三,思维辨析,当堂检测,1.下列问题可以用循环语句描述其算法的个数为( ) 求1+3+32+39的和; 比较a,b两个数的大小; 对于分段函数,要求输入自变量的值,输出函数值; 求平方值小于100的最大整数. A.0个 B.1个 C.2个 D.3个 答案:C 2.若For i=-10 To 19为某一循环语句中的一个步骤,则循环的
14、次数为( ) A.29次 B.30次 C.28次 D.19次 解析:循环次数为:(终值-初始值)+1=30. 答案:B,探究一,探究二,探究三,思维辨析,当堂检测,3.如图所示,给出的四个算法框图中,满足Do Loop语句格式的是( ),答案:D,探究一,探究二,探究三,思维辨析,当堂检测,4.已知下列语句: i=1 Doi=i+1 Loop While i*i100 i=i-1 输出i. 最后输出的结果是( ) A.i-1 B.100 C.9 D.10 解析:由循环语句及赋值语句可知,当i*i100时跳出循环体,此时i=10,故最后输出的结果为9. 答案:C,探究一,探究二,探究三,思维辨析,当堂检测,5.试分别用For语句和Do Loop语句设计求13599值的算法语句.,探究一,探究二,探究三,思维辨析,当堂检测,解:用For语句描述为: S=1 For i=1 To 99S=S*ii=i+2 Next 输出S. 用Do Loop语句描述为: S=1 i=1 Do S=S*i i=i+2 Loop While i=99 输出S.,