第3课时循环结构、程序框图的画法下面是国际奥委会选择奥运会举办城市的操作程序:首先进行第一轮投票,如果有一个城市得票超过一半,那么这个城市取得主办权;如果没有一个城市得票超过一半,那么将其中得票最少的城市淘汰;然后重复上述过程,直到选出一个城市为止.第一步,投票.第二步,统计票数.如果有一个城市得票超过一半,那么这个城市取得主办权,转入第四步.第三步;否则淘汰得票数最少的城市,转入第一步.第四步,宣布主办城市.奥运会主办权投票过程的算法结构:问题:你能利用算法语言叙述上述过程吗?开始投票有一个城市得票数超过总票数的一半?输出该城市结束淘汰得票数最少的城市是否在一些算法中,经常会出现从某些地方开始,按照一定条件,反复执行某一步骤的情况,这就是本节课所要学习的内容——循环结构.1.会用两种循环结构画程序框图.(重点)2.能进行两种循环结构的程序框图间的转化(难点)3.能正确设计程序框图,解决简单的实际问题(难点)算法的循环结构在一些算法中,经常会出现从某处开始,按照一定的条件反复执行某些步骤的情况,这就是循环结构,反复执行的步骤称为循环体.【课堂探究1】(1)一些循环结构用程序框图可以表示为:循环体满足条件?是否这种循环结构称为直到型循环结构.特征:在执行了一次循环体后,对条件进行判断,如果条件不满足,就继续执行循环体,直到条件满足时终止循环.例1.设计一个计算1+2+3+…+100的值的算法,并画出程序框图.算法分析:通常,我们按照下列过程计算1+2+…+100的值.第一步,0+1=1.第二步,1+2=3.第三步,3+3=6.第四步,6+4=10.……第一百步,4950+100=5050.我们用一个累加变量S表示每一步的计算结果,即把S+i的结果仍记为S,从而把第i步表示为S=S+i,其中S的初始值为0,i依次取1,2,…,100,由于i同时记录了循环的次数,所以也称为计数变量.开始i=1i100?是输出S结束S=0i=i+1S=S+i否(2)还有一些循环结构用程序框图可以表示为:循环体满足条件?是否这种循环结构称为当型循环结构.在每次执行循环体前,对条件进行判断,当条件满足时,执行循环体,否则终止循环.问题:(1)两种循环结构的区别是什么?提示:直到型循环结构先执行循环体,而当型循环结构先判断条件。第一步,令i=1,S=0.第二步,如果i≤100成立,则执行第三步,否则,输出S,结束算法.第三步,S=S+i.第四步,i=i+1,返回第二步.(2)能否将例1中的问题改为当型循环结构?试设计出算法,并画出程序框图?上述算法的程序框图表示为:当型循环结构.开始i=1结束输出S否是S=0S=S+ii≤100?i=i+1设计算法求的值,并画出程序框图.分析:这是一个共有100项的累加求和题,需要设计一个计数变量,一个累加变量,用循环结构实现这一算法.1111112233499100100101+++++创创?L【变式练习】注意循环结构的三要素:循环变量、循环体、循环的终止条件解:算法如下:第一步,令S=0,k=1.第二步,若k≤100成立,则执行第三步;否则,输出S,结束算法.第三步,第四步,k=k+1,返回第二步.程序框图如图所示.()1SS.kk1=++?利用循环结构表示算法的步骤:利用循环结构表示算法,第一要准确地表示累计的变量;第二要注意在哪一步开始循环,满足什么条件不再执行循环体.(3)条件结构和循环结构的程序框图各有两种形式,相互对立统一.条件结构和循环结构的基本特征:(1)程序框图中必须有两个起止框,穿插输入、输出框和处理框,一定有判断框.(2)循环结构中包含条件结构,条件结构中不含循环结构.例2.某工厂2005年的年生产总值为200万元,技术革新后预计以后每年的年生产总值都比上一年增长5%.设计一个程序框图,输出预计年生产总值超过300万元的最早年份.算法分析:第一步,输入2005年的年生产总值.第二步,计算下一年的年生产总值.第三步,判断所得的结果是否大于300.若是,则输出该年的年份;否则,返回第二步.循环结构:(1)确定循环体:设a为某年的年生产总值,t为年生产总值的年增长量,n为年份,则循环体为t=0.05a,a=a+t,n=n+1.(2)初始化变量:n=2005,a=200.(3)设定循环控制条件:当“a300”时终止循环.开始n=2005a=200t=0.05aa=a+tn=n+1a300?结束输出n是否程序框图:程序框图的画法用“二分法”求方程x2-5=0(x0)的近似解的算法,如何设计?第一步,令f(x)=x2-5,给定精确度d.第二步,确定区间[a,b],满足f(a)·f(b)0.第三步,取区间中点m=(a+b)/2.【课堂探究2】第四步,若f(a)·f(m)0,则含零点的区间为[a,m];否则,含零点的区间为[m,b].将新得到的含零点的区间仍记为[a,b].第五步,判断[a,b]的长度是否小于d或f(m)是否等于0.若是,则m是方程的近似解;否则,返回第三步.思考1:该算法中哪几个步骤可以用顺序结构来表示?这个顺序结构的程序框图如何?f(x)=x2-5输入精确度d和初始值a,babm2思考2:该算法中第四步是什么逻辑结构?这个步骤用程序框图如何表示?f(a)f(m)0?a=mb=m是否思考3:该算法中哪几个步骤构成循环结构?这个循环结构用程序框图如何表示?第三步第四步|a-b|d或f(m)=0?输出m是否思考4:根据上述分析,你能画出表示整个算法的程序框图吗?开始结束f(a)f(m)0?a=mb=m是否|a-b|d或f(m)=0?输出m是否f(x)=x2-5输入精确度d和初始值a,ba+bm=2【解析】选B。第1次循环;z=2,x=1,y=2;第2次循环:z=3,x=2,y=3;第3次循环;z=5,x=3,y=5;第4次循环;z=8,x=5,y=8;第5次循环;z=13,x=8,y=13;第6次循环;z=21,x=13,y=21;第7次循环;z=34,x=21,y=34;第8次循环;z=5550.所以输出z=55.2.阅读下面的流程图填空.(1)最后一次输出的i=___________;(2)一共输出i的个数为_________.答案:(1)57(2)83.执行如图所示的程序框图,如果输入a=1,b=2,则输出的a的值为______.解:第一次循环:a=3;第二次循环:a=5;第三次循环:a=7;第四次循环:a=9.因为9>8,所以输出a的值为9.答案:9【解析】根据判断条件2-4+30,13xxx得,输入x=1第一次判断后循环,=+1=2,=+1=1xxnn,第二次判断后循环,=+1=3,=+1=2xxnn,第三次判断后循环,=+1=4,=+1=3xxnn,第四次判断不满足条件,退出循环,输出=3n.答案:3第一步:P=0;第三步:t=0;第四步:p=p+i;第五步:t=t+1;第六步:i=i+t.第七步:如果i不大于46,返回重新执行第四、五、六步;否则,跳出循环结束程序.算法如下:第二步:i=1;5.设计一个求1+2+4+7+…+46的算法,并画出相应的程序框图.开始i46?否是输出p结束P=0i=1t=0p=p+it=t+1i=i+t116.设计一个算法求12+22+32+…+992+1002的值,并画出程序框图.解:程序框图如图:开始S=0i=i+1i=1S=S+i*ii≤100?输出S结束否是设计一个算法的程序框图的基本思路:第一步,用自然语言表述算法步骤.第二步,确定每个算法步骤所包含的逻辑结构,并用相应的程序框图表示.第三步,将所有步骤的程序框图用流程线连接起来,并加上两个终端框.修凿可以使道路平直,但只有崎岖的未经修凿的道路才是天才的道路.