循环结构
算法初步
步骤1
步骤2
(1)顺序结构-----是由若干个依次执行的处理步骤组成的.这是任何一个算法都离不开的基本结构.
(2)条件结构---在一个算法中,经常会遇到一些条件的判断,算法的流向根据条件是否成立有不同的流向.条件结构就是处理这种过程的结构.
满足条件?
步骤A
步骤B
是
否
满足条件?
步骤A
是
否
练习巩固
1 看下面的程序框图,分析算法的作用
(1)
开始
结束
输入x
y=3*x*x+4*x+5
输出y
(2)
开始
结束
输入a,b
a否
是
输出a,b
输出a,b
循环结构
i=i+1
i>n-1,或r=0?
否
是
求n除以i的余数r
循环结构---在一些算法中,也经常会出现从某处开始,按照一定条件,反复执行某一步骤的情况,这就是循环结构.
反复执行的步骤称为循环体.
是
循环体
满足条件?
否
Until(直到型)循环
循环结构分为两种------当型和直到型.
当型循环在每次执行循环体前对循环条件进行判断,当条件满足时执行循环体,不满足则停止;(当条件满足时反复执行循环体)
直到型循环在执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时执行循环体,满足则停止.(反复执行循环体,直到条件满足)
循环体
满足条件?
是
否
While(当型)循环
(2)注意:循环结构不能是永无终止的“死循环”,一定要在某个条件下终止循环,这就需要条件结构来作出判断,因此,循环结构中一定包含条件结构.
第一步:给定一个大于2的整数n
第二步:令i=1
第三步:用i除n,得到余数r
第四步:判断“r=0”是否成立;若是,则输出“i”
第六步:判断“i>n”是否成立,若是,结束算法;否则,返回第三步.
设计一个算法,求出n(n>2) 的所有因数。
第五步:i的值增加1,仍用i表示
例1设计一算法,求和:1+2+3+…+100
第一步:确定首数a,尾数b,项数n;
第二步:利用公式“总和=(首数+尾数)×项数/2”求和;
第三步:输出求和结果。
算法1:
开始
结束
输入a,b,n
S=(a+b)*n/2
输出S
例3:设计一个计算1+2+3+……+100的值的算法,并画出程序框图.
算法分析:
第1步:0+1=1;
第2步:1+2=3;
第3步:3+3=6;
第4步:6+4=10
…………
第100步:4950+100=5050.
第(i-1)步的结果+i=第i步的结果
各步骤有共同的结构:
为了方便有效地表示上述过程,我们引进一个变量S来表示每一步的计算结果,从而把第i步表示为 S=S+i
S=0
S=S + 1
S=S + 2
S=S + 3
…
S=S + 100
例1 设计一算法,求和:1+2+3+…+100
S=S+ i
怎么用程序框图表示呢?
3、i有什么作用?S呢?
i = i + 1
S=S + i
S=0
S=S + 1
S=S + 2
S=S + 3
…
S=S + 100
累加变量S来表示每一步的计算结果,从而把第i步表示为 S=S+i
S的初始值为0,i依次取1,2,…,100,
由于i同时记录了循环的次数,所以i称为计数变量.
i = i + 1
S=S + i
解决方法就是加上一个判断,判断是否已经加到了100,如果加到了则退出,否则继续加。
试分析两种流程的异同点
直到型结构
当型结构
S = S + i
i=i+ 1
是
否
S= S+ i
i=i + 1
否
是
i<=100?
i>100?
请填上判断的条件。
结束
S= S + i
i=i + 1
i<=100?
输出S
否
是
i=1,S=0
开始
步骤A
步骤B
思考:将步骤A和步骤B交换位置,结果会怎样?能达到预期结果吗?为什么?要达到预期结果,还需要做怎样的修改?
答:达不到预期结果;当i = 100时,没有退出循环,i的值为101加入到S中;修改的方法是将判断条件改为i<100
程序框图:
开始
i=1
S=0
S=S+i
i=i+1
i>100?
是
输出S
结束
否
直到型循环结构
开始
i=1
S=0
i≤100?
是
S=S+i
i=i+1
否
输出S
结束
当型循环结构
若将“i=1”改成“i=0”,则程序框图怎么改?
结束
输出Sum
否
是
S=0
开始
结束
输出S
S=0
开始
否
是
i=0
i=0
S=S + i
S=S + i
i = i + 1
i = i + 1
i>=100?
i<100?
说明:一般地,循环结构中都有一个计数变量和累加变量.计数变量用于记录循环次数,同时它的取值还用于判断循环是否终止,这个变量的取值一般都含在执行或中止循环体的条件中。
累加变量用于输出结果.累加变量和计数变量一般是同步执行的,累加一次,记数一次.
结束
输出S
i=0,S=0
开始
i = i + 1
S=S + i
i>n?
否
是
输入n
改进上面的算法,表示输出1,1+2,1+2+3, …,
1+2+3+…+(n-1)+n( ) 的过程。
练习巩固
1、设计一算法,求积:1×2×3×…×100,画出流程图
结束
输出A
i=0,A=1
开始
i = i + 1
A=A*i
i>=100?
否
是
思考:该流程图与前面的例3中求和的流程图有何不同?
例5 某工厂2005年的年生产总值为200万,技术革新以后每年的年生产总值比上一年增长5%。设计一个程序框图,输出预计年生产总值超过300万元的最早年份。
算法分析:
第一步,输入2005年的年生产总值。
第二步,计算下一年的年生产总值。
第三步,判断所得的结果是否大于300.若是,则输出该年的年份;否则,返回第二步
由于“第二步”是重复操作的步骤,所以可以用循环结构来实现。我们按照“确定循环体” “初始化变量” “设定循环控制条件”的顺序来构造循环结构。
(2)初始化变量:若将2005年的年生产总值堪称计算的起始点,则n的初始值为2005,a的初始值为200.
(3)设定循环控制条件:当“年生产总值超过300万元”时终止循环,所以可通过判断“a>300”是否成立来控制循环。
(1)确定循环体:设a为某年的年生产总值,t为年生产总值的年增长量,n为年份,则循环体为
程序框图:
开始
n=2005
a=200
t=0.05a
n=n+1
a>300?
是
输出n
结束
否
a=a+t
小结
1、循环结构的特点
2、循环结构的框图表示
3、循环结构有注意的问题
避免死循环的出现,设置好进入(结束)循环体的条件。
当型和直到型
重复同一个处理过程
作业:
课本P20页A组2;