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