§1.2.3 循环语句
授课
时间
第 周 星期 第 节
课型
新授课
主备课人
学习
目标
1.正确理解循环语句的概念,并掌握其结构;
2.会应用循环语句编写程序.
重点难点
两种循环语句的表示方法、结构和用法;用循环语句表示算法.
理解循环语句的表示方法、结构和用法,会编写程序中的循环语句.
学习
过程
与方
法
自主学习:
一、复习回顾:
循环结构的流程图: ②条件语句的适用条件及一般格式:
二、认真自学课本29-32,完成下列问题:
1. Until 语句的含义及一般形式为:
2.While语句的含义及一般形式为:
合作探究:
1.课本例8(体会Until 语句的用法)
语句描述为:
2.与自然语言相比,基本语句描述的算法有何优点?
3、While语句与Until语句的适用条件及语句格式分别为:
达标训练
1.练习1;
2.练习2;
3.设计计算的一个算法,并画出流程图,然后用适当的语句描述该算法.
作业
布置
学习小结/教学
反思
1.2.3循环语句
整体设计
教学分析
通过前面的学习,学生学会了输入语句、输出语句、赋值语句和条件语句的基本用法,本节将介绍循环语句的用法. 程序中的循环语句与程序框图中的循环结构存在一一对应关系,这种对应关系对于学生理解循环语句的结构,进一步理解算法中的循环结构都是很有帮助的.我们可以给出循环语句的一般格式,让学生自己画出相应的程序框图,也可以给出程序框图,让学生写出算法语句,提高学生的应用能力.
三维目标
1.理解学习基本算法语句的意义.
2.学会循环语句的基本用法.
3.理解算法步骤、程序框图和算法语句的关系,学会算法语句的写法.
重点难点
教学重点:循环语句的基本用法.
教学难点:循环语句的写法.
课时安排1课时
教学过程
导入新课
思路1(情境导入)
一位同学不小心违反了学校纪律,班主任令其写检查,他写完后交给班主任,班主任看后说:“认识不深刻,拿回去重写,直到认识深刻为止”.这位同学一想,这不是一个循环结构吗?可惜我还没学循环语句,不然可以写一个算法语句输入计算机了.同学们,今天我们开始学习循环语句.
思路2(直接导入)
前面我们学习了程序框图的画法,为了让计算机能够理解算法步骤、程序框图,上一节我们学习了输入语句、输出语句、赋值语句和条件语句,今天我们开始学习循环语句.
推进新课
新知探究
提出问题
(1)试用程序框图表示循环结构.
(2)指出循环语句的格式及功能.
(3)指出两种循环语句的相同点与不同点.
(4)揭示程序中的循环语句与程序框图中的条件结构存在一一对应关系.
讨论结果:
(1)循环结构
循环结构有两种形式:当型循环结构和直到型循环结构.
1°当型循环结构,如图(1)所示
2°直到型循环结构,如图(2)所示,
(1)当型循环结构 (2)直到型循环结构
(2)循环语句
1°当型循环语句
当型(WHILE型)语句的一般格式为:
WHILE 条件
循环体
WEND
功能:计算机执行此程序时,遇到WHILE语句,先判断条件是否成立,如果成立,则执行WHILE和WEND之间的循环体;然后返回到WHILE语句再判断上述条件是否成立,如果成立,再执行循环体,这个过程反复执行,直到一次返回到WHILE语句判断上述条件不成立为止,这时不再执行循环体,而是跳到WEND语句后,执行WEND后面的语句.因此当型循环又称“前测试型”循环,也就是我们经常讲的“先测试后执行”“先判断后循环”.
2°直到型循环语句
直到型(UNTIL型)语句的一般格式为:
DO
循环体
LOOP UNTIL 条件
功能:计算机执行UNTIL语句时,先执行DO和LOOP UNTIL之间的循环体,然后判断“LOOP UNTIL”后面的条件是否成立,如果条件不成立,返回DO语句处重新执行循环体.这个过程反复执行,直到一次判断“LOOP UNTIL”后面的条件成立为止,这时不再返回执行循环体,而是跳出循环体执行“LOOP UNTIL条件”下面的语句.
因此直到型循环又称“后测试型”循环,也就是我们经常讲的“先执行后测试”“先循环后判断”.
(3)相同点:都是反复执行循环体语句.
不同点:当型循环语句是先判断后循环,直到型循环语句是先循环后判断.
(4)下面为循环语句与程序框图中的条件结构的一一对应关系.
1°直到型循环结构:
2°当型循环结构:
应用示例
思路1
例1 修改前面编写过的求函数y=x3+3x2-24x+30的值的程序,连续输入11个自变量的取值,输出相应的函数值.
算法分析:与前面不同的是,本例要求连续输入11个自变量的取值.并输出相应的函数值,先写出解决本例的算法步骤:
第一步,输入自变量x的值.
第二步,计算y=x3+3x2-24x+30.
第三步,输出y.
第四步,记录输入次数.
第五步,判断输入的次数是否大于11.若是,则结束算法;否则,返回第一步.
显然,可以用计数变量n(1≤n≤11)记录次数,通过循环结构来实现算法.
程序框图如下图:
程序:
n=1
DO
INPUT x
y=x︿3+3*x︿2-24*x+30
PRINT y
n=n+1
LOOP UNTIL n>11
END
例2 教材中的用“二分法”求方程x2-2=0(x>0)的近似解的程序框图(见教材图1.120)包含了顺序结构、条件结构和循环结构.下面,我们把这个程序框图转化为相应的程序.
解:程序为:
INPUT “a,b,d=”;a,b,d
DO
m=(a+b)/2
g=a︿2-2
f=m︿2-2
IF g*f<0 THEN
b=m
ELSE
a=m
END IF
LOOP UNTIL ABS(a-b)<d OR f=0
PRINT m
END
点评:ABS()是一个函数,用来求某个数的绝对值,即ABS(x)=|x|.
例3 设计一个计算1×3×5×7×…×99的算法,编写算法程序.
解:算法如下:
第一步,s=1.
第二步,i=3.
第三步,s=s×i.
第四步,i=i+2.
第五步,如果i≤99,那么转到第三步.
第六步,输出s.
程序如下:(“WHILE型”循环语句)
s=1
i=3
WHILE i<=99
s=s*i
i=i+2
WEND
PRINT s
END
点评:前面我们已经学过“求和”问题,这是一个“求积”问题,这两个问题都是典型的算法问题,注意它们的联系与区别.
例4 编写一个程序,求1!+2!+…+10!的值(其中n!=1×2×3×…×n).
分析:这个问题可以用“WHILE+ WHILE”循环嵌套语句格式来实现.
程序结构要做到如下步骤:
①处理“n!”的值;(注:处理n!的值的变量是一个内循环变量)
②累加“n!”的值.(注:累加n!的值的变量是一个外循环变量)
显然,通过10次循环可分别求出1!、2!、…、10!的值,并同时累加起来, 可求得S的值.而求T=n!,又可以用一个循环(内循环)来实现.
解:程序为:
s=0
i=1
WHILE i<=10
j=1
t=1
WHILE j<=i
t=t*j
j=j+1
WEND
s=s+t
i=i+1
WEND
PRINT s
END
思考:上面程序中哪个变量是内循环变量,哪个变量是外循环变量?
解答:内循环变量:j,t.外循环变量:s,i.
上面的程序是一个的“WHILE+WHILE”型循环嵌套语句格式.这是一个比较好想的方法,但实际上对于求n!,我们也可以根据求出的(n-1)!乘上n即可得到,而无需重新从1再累乘到n.
程序可改为:
s=0
i=1
j=1
WHILE i<=10
j=j*i
s=s+j
i=i+1
WEND
PRINT s
END
显然第二个程序的效率要比第一个高得多.第一程序要进行1+2+…+10=55次循环,而第二程序进行10次循环.如题目中求的是1!+2!+…+1 000!,则两个程序的效率区别会更明显.
点评:解决具体的构造循环语句的算法问题,要尽可能地少引入循环变量,否则较多的变量会使得设计程序比较麻烦,并且较多的变量会使得计算机占用大量的系统资源,致使系统缓慢.另外,也尽可能使得循环嵌套的层数少,否则也浪费计算机的系统资源.
变式训练
某种蛋白质是由四种氨基酸组合而成.这四种氨基酸的相对分子质量分别是57,71,97,101.实验测定蛋白质的相对分子质量为800.问这种蛋白质的组成有几种可能?
分析:该问题即求如下不定方程的整数解:设四种氨基酸在蛋白质的组成中分别各有x,y,z,w个.则由题意可得57x+71y+97z+101w=800,(x,y,z,w是非负整数)
这里0≤x≤14,0≤y≤11,0≤z≤8,0≤w≤7,利用穷取法,考虑一切可能出现的情况.运用多层循环嵌套处理即可.
解:编写程序如下:
w=0
WHILE w<=7
z=0
WHILE z<=8
y=0
WHILE y<=11
x=0
WHILE x<=14
IF 57*x+71*y+97*z+101*w=800 THEN
PRINT x,y,z,w
END IF
x=x+1
WEND
y=y+1
WEND
z=z+1
WEND
w=w+1
WEND
END
知能训练
设计算法求的值.要求画出程序框图,写出用基本语句编写的程序.
解:这是一个累加求和问题,共99项相加,可设计一个计数变量,一个累加变量,用循环结构实现这一算法.程序框图如下图所示:
程序如下:
s=0
i=1
Do
s=s+1/(i*(i+1))
i=i+1
LOOP UNTIL i>99
PRINT s
END
拓展提升
青年歌手电视大赛共有10名选手参加,并请了12名评委,在计算每位选手的平均分数时,为了避免个别评委所给的极端分数的影响,必须去掉一个最高分和一个最低分后再求平均分.试设计一个算法解决该问题,要求画出程序框图,写出程序(假定分数采用10分制,即每位选手的分数最高分为10分,最低分为0分).
解:由于共有12位评委,所以每位选手会有12个分数,我们可以用循环语句来完成这12个分数的输入,同时设计累加变量求出这12个分数的和,本问题的关键在于从这12个输入分数中找出最大数与最小数,以便从总分中减去这两个数.由于每位选手的分数都介于0分和10分之间,我们可以先假设其中的最大数为0,最小数为10,然后每次输入一个评委的分数,就进行一次比较,若输入的数大于0,就将之代替最大数,若输入的数小于10,就用它代替最小数,依次下去,就能找出这12个数中的最大数与最小数,循环结束后,从总和中减去最大数与最小数,再除以10,就得到该选手最后的平均分.
程序框图如右图:
程序如下:s=0
i=1
max=0
min=10
DO
INPUT x
s=s+x
IF max<=x THEN
max=x
END IF
IF min>=x THEN
min=x
END IF
i=i+1
LOOP UNTIL i>12
s1=s-max-min
a=s1/10
PRINT a
END
课堂小结
(1)学会两种循环语句的应用.
(2)熟练应用两种循环语句编写计算机程序,巩固算法应用.
作业
习题1.2A组3.
设计感想
本节的导入符合学生心理要求,能够激发学生的学习兴趣.算法像一个故事,循环语句就是故事的高潮,它以前面的内容为基础,是前面内容的总结和发展.本节选用了大量的精彩例题为故事高潮的到来作好了铺垫,精彩的点评把本节推向了高潮,所以本节教案值得期待.
1.2.3 循环语句
双基达标 ?限时20分钟?
1.下列的程序执行后输出的结果是 ( ).
A.-1 B.0 C.1 D.2
解析 当S=5+4+3+2=14时,n=2-1=1,此时S<15继续执行循环体,则S=5+4
+3+2+1=15,n=1-1=0,此时S=15,循环结束,输出0.
答案 B
2.在循环语句中,下列说法正确的是 ( ).
A.UNTIL型循环可以无限循环
B.WHILE型循环可以无限循环
C.循环语句中必须有判断
D.WHILE型循环不能实现UNTIL型循环的功能
解析 UNTIL型循环和WHILE型循环实现的功能是一样的,只是看不同条件下哪种方
便而已.
答案 C
3.下面的程序:
执行完毕后a的值为 ( ).
A.99 B.100 C.101 D.102
解析 a=99+1=100.
答案 B
4.运行下面的程序,输出的值为________.
解析 由于循环体是先执行S=S+i,再执行i=i+1,然后进行判断,当S=1+2+3+
4+5=15时,执行i=5+1=6,这时15<18成立,再循环一次S=15+6=21,i=6+1
=7,这时再判断21<18不成立,于是执行“PRINT i”,即i=7.
答案 7
5.下面的程序运行后第3个输出的数是________.
解析 该程序中关键是循环语句,
第一次输出的数是1,
第二次输出的数是x=1+=,
第三次输出的数是x=1++=2.
答案 2
6.设计一个计算1×3×5×7×…×199的算法,并写出程序,画出程序框图.
解 算法步骤如下:
第一步:S=1;
第二步:i=3;
第三步:S=S×i;
第四步:i=i+2;
第五步:判断i是否大于199,若是转到第六步;否则返回第三步,继续执行第三步,
第四步,第五步;
第六步:输出S;
第七步:算法结束.
相应的程序框图如图所示: 程序如下所示:
7.下列程序执行后输出的结果是________.
解析 该程序是求s=1×11×10×9=990.
答案 990
8.运行下面的程序,执行后输出的s的值是 ( ).
A.11 B.15 C.17 D.19
解析 当i=3时,s=7,当i=5时,s=11,
此时仍满足条件“i<6”,因此再循环一次,
即i=7时,s=15,此时不满足“i<6”,
所以执行“PRINT s”,即s=15.
答案 B
9.运行下面的程序,输出的结果为________.
A=1
B=1
WHILE B<15
A=A+B
B=A+B
WEND
C=A+B
PRINT“C=”;C
END
解析 循环结构中,循环体的作用是将前两个数相加,得到后一个数;如果没有循环条件的限制,程序中的循环结构将依次给A,B赋值为:1,1,2,3,5,8,13,21,34,…
其中第1,3,5,…个数为A的值,第2,4,6,…个数为B的值,可见B=21时,循环结束,此时,A=13,所以C=A+B=34.
答案 C=34
10.(2012·银川联考)下列程序运行的结果为________.
i=1
S=0
WHILE S<=20
S=S+i
i=i+1
WEND
PRINT i
END
解析 第一次循环:S=0+1=1,i=1+1=2;第二次循环:S=1+2=3,i=2+1=3;第三次循环:S=3+3=6,i=3+1=4;第四次循环:S=6+4=10,i=4+1=5;第五次循环:S=10+5=15,i=5+1=6;第六次循环:S=15+6=21>20,i=6+1=7,故输出i的值为7.
答案 7
11.设计算法求+++…+的值,并画出程序框图及编写程序.
解 算法如下:
第一步:令S=0,i=1;
第二步:若i≤99成立,则执行第三步;
否则,输出S,结束算法;
第三步:S=S+;
第四步:i=i+1,返回第二步.
程序框图:
法一 当型循环程序框图: 程序如下:
法二 直到型循环程序框图:
程序如下:
12.(创新拓展)某商场第一年销售计算机5 000台,如果平均每年销售量比上一年增加10%,那么从第一年起,大约几年可使总销售量达到30 000台?画出解决此问题的程序框图,并写出程序.
解 程序框图如下图所示:
程序:
m=5 000
S=0
i=0
WHILE S<30 000
S=S+m
m=m*(1+0.1)
i=i+1
WEND
PRINT i
END
课件22张PPT。【课标要求】
1.理解循环语句的两种格式及功能.
2.应用两种循环语句将具体问题程序化,会求程序执行
后的结果.
【核心扫描】
1.循环语句的格式和功能.(重、难点)
2.搞清当型循环和直到型循环的区别和联系.(难点)
3.直到型与当型循环中的条件.(易混点)
1.2.3 循环语句循环语句
循环语句与程序框图中的_________相对应,一般程序设计语言中都有_______________和______________两种循环语句结构,分别对应于程序框图中的直到型和当型循环结构.
自学导引1.循环结构直到型(UNTIL)当型(WHILE)2.循环语句的格式、功能及程序框图的对应关系LOOPUNTILWENDDOUNTIL执行循环体执行循环体条件符合UNTIL条件符合条件仍符合条件不符合WEND 因为循环结构中包含条件结构,所以在循环语句中也包含“IF—THEN”这样的语句,这句话对吗?
提示 不对.语句都有其固定的格式,循环语句的格式为DO-循环体-LOOP UNTIL条件.或者WHILE条件-循环体-WEND.UNTIL语句
(1)循环语句的作用就是重复执行某些步骤,这是计算机编程中一个非常重要的功能.人们往往害怕机械重复,但计算机却擅长重复,可以说,如果没有循环,计算机将几乎什么也干不了.
(2)DO语句只是循环的开始标记,遇到DO语句,程序只是记住这个标记,其他什么也不做,接着执行后面的循环体,在执行一次循环体后,再检查LOOP语句中的条件是否成立.如果不成立,就重复执行循环体,直到条件符合时退出循环.
(3)在循环体内,应注意务必有相应的“条件”使语句改变,保证能终止循环,否则循环将无休止地进行下去.名师点睛1.WHILE语句
(1)当型循环以WHILE开头,以WEND作为结束标志.WEND是WHILE END的缩写,表示“WHILE循环到此结束.”
(2)一般来讲,WHILE语句与UNTIL语句可以相互转化.
(3)执行WHILE语句时,先判断条件,再执行循环体,然后再条件,再循环体,反复执行,直至条件不满足.
(4)WHILE语句中的条件是指循环体的条件,满足此条件时,执行循环体,不满足时,则执行循环结构后面的语句.
(5)WHILE语句由于先条件,再循环体,因此,循环体可能一次也不执行就退出循环结构.
2.题型一 直到型循环语句 画出计算1+3+5+…+999的程序框图,并写出程序.【例1】解 由题意知各项指数相同,底数相差2,可以借助于循环设计算法.
①程序框图: ②程序为:S=0
i=1
DO
S=S+i
i=i+2
LOOP UNTIL i>999
PRINT S
END
规律方法 一般地,累加变量的初始值为0,而累乘变量的初始值为1.
解决此类问题应注意以下两个方面的问题:
(1)循环终止的条件,在设置结束循环的条件时最好做“边界的检验”,注意是用“>”还是“≥”等问题,防止多循环一次或少循环一次.
(2)直到型循环语句中先执行一次循环体,再判断条件是否满足,以决定继续循环还是退出循环.
设计一个计算1×3×5×7×…×999的算法.
解 程序框图如图所示: 程序:【变式1】S=1
i=3
DO
S=S*i
i=i+2
LOOP UNTIL i>999
PRINT S
END
给出的30个数1,2,4,7,11,…,其规律是第1个数是1,第2个数比第1个数大1,第3个数比第二个数大2,第4个数比第3个数大3…依次类推,要求计算这30个数的和,先将右面所给出的程序框图补充完整,再依据程序框图写出程序.(1)把程序框图补充完整:①________ ②________;
(2)写出程序
[思路探索] 本题是一个累加求和的问题,设计数变量为i,累加变量S=S+P,P=P+i,通过循环结构实现算法.题型二 当型循环语句【例2】解 (1)①i<=30? ②P=P+i
(2)程序:i=1
P=1
S=0
WHILE i<=30
S=S+P
P=P+i
i=i+1
WEND
PRINT S
END规律方法 1.(1)计算机执行当型循环语句时,先判断条件的真假,若条件为真,执行循环体,若为假则退出.这是确定是否应用当型语句的关键.
(2)当型循环语句中WHILE和WEND成对出现.
(3)判断条件往往是控制循环次数的变量.
2.注意事项:
(1)本题首先确定的是循环结构,然后在循环中有关于不同变化的选择,所以需要用到条件结构,这样我们就把条件结构嵌入到循环结构中.
(2)在程序框图和程序的绘制与书写中,都需要“由干到支”逐步细化. 运行下面的程序,执行后输出的s的值是 ( ).
A.11 B. 15 C.17 D.19【变式2】i=1
WHILE i<6
i=i+2
s=2*i+1
WEND
PRINT s
END
解析 当i=3时,s=7,当i=5时,s=11,
此时仍满足条件“i<6”,因此再循环一次,
即i=7时,s=15,此时不满足“i<6”,
所以执行“PRINT s”,即s=15.
答案 B (缺29-30页)题型三 直到型、当型循环语句的相互转换【例3】【变式3】误区警示 忽视等价转化而致误【示例】单击此处进入 活页规范训练