第一章
算法初步
§1.1.2 程序框图与算法的基本逻辑结构
课前复习 算法
在数学中,按照一定规则解决某一类问题 的明确和有限的步骤称为算法.
知识探究(一):算法的程序框图
1:复习“判断整数n(n>2)是否为质数”的 算法。
第一步,给定一个大于2的整数n;
第二步,令i=2;
第三步,用i除n,得到余数r;
第四步,判断“r=0”是否成立.若是,则n不是
2. 我们将上述算法如下表示:
开始
输入n
i=2
是 是
否 求n除以i的余数
i的值增加1,仍用i表示
图形符号
名 称 终端框 (起止框) 输入、输出框 处理框 (执行框) 判断框
功 能 表示一个算法的起始和结束 表示一个算法输入和输出的 信息 赋值、计算 判断某一条件是否成立,成立 时在出口处标明“是”或“Y”; 不成立时标明“否”或“N” 连接程序框,表示算法步骤的 执行顺序
流程线
算法的基本逻辑结构:
开始 输入n i=2 求n除以i的余数 i的值增加1,仍用i表示 i>n-1或r=0? 是 r=0?
顺序结构
循环结构
否 否
条件结构
是
知识探究(二):算法的顺序结构
1: 任何一个算法各步骤之间都有明确的顺序 性,在算法的程序框图中,由若干个依次执 行的步骤组成的逻辑结构,称为顺序结构, 用程序框图可以表示为:
例1 若一个三角形的三条边长分别为a,b, c,令p=(a+b+c)/2,则三角形的面积
S ? p( p ? a )( p ? b)( p ? c )
试用这个公式设计一个计算三角形面积的算 法步骤. 第一步,输入三角形三条边的边长a,b,c. a + b+ c 第二步,计算 p = . 2 第三步,计算 S = p( p - a )( p - b)( p - c) .
第四步,输出S.
3. 将上述算法的用程序框图表示
a + b+ c p= 2
开始
S = p( p - a )( p - b)( p - c)
输入a,b,c
4.练习:已知下图是“求一个正奇数的平方 加5的值”的程序框图,若输出的数是30, 求输入的数n的值.
开始 输入正整数n x=2n-1 y=x2+5 输出y
小
结
顺序结构的程序框图的基本特征:
(2)各程序框从上到下用流程线依次连接. (1)必须有两个起止框,穿插输入、输出框和 处理框,没有判断框.
知识探究(三):算法的条件结构
1.在某些问题的算法中,有些步骤只有在 一定条件下才会被执行,算法的流程因条 件是否成立而变化.在算法的程序框图中, 由若干个在一定条件下才会被执行的步骤 组成的逻辑结构,称为条件结构,用程序 框图可以表示为下面两种形式:
满足条件?
否
满足条件?
否
是
步骤A 步骤B
是
步骤A
2.例2: 判断“以任意给定的3个正实数 为三条边边长的三角形是否存在”的算 法步骤如何设计?
第一步,输入三个正实数a,b,c. 3.请画出这个算法的程序框图。
开始
输入a,b,c
a+b>c,b+c>a,c+a>b 是否同时成立?
3.练习题
? x ( x ? 0) 画出求函数y ? ? 的 函数值的程序框图. ? ? x ( x ? 0)
理论迁移
例3 设计一个求解一元二次方程ax2+bx+c=0 算法分析: 的算法,并画出程序框图表示. 第一步,输入三个系数a,b,c.
第二步,计算△=b2-4ac.
第三步,判断△≥0是否成立.若是,则计算
开始
输入a,b,c
程序框图:
否
△= b2-4ac
△≥0?
是
是
p ?? b 2a
q ?
? 2a
练习题
? 0 ( x ? 0) ? 画出求函数y ? ?1 (0 ? x ? 1)的函数值的程序框图. ? x ( x ? 1) ?
小
结
条件结构的程序框图的基本特征:
(2)条件结构的程序框图各有两种形式.
(1)程序框图中必须有两个起止框,穿插 输入、输出框和处理框,一定有判断框.
知识探究(四):算法的循环结构
思考1:在算法的程序框图中,由按照一 定的条件反复执行的某些步骤组成的逻 辑结构,称为循环结构,反复执行的步 骤称为循环体,那么循环结构中一定包 含条件结构吗?
思考2:某些循环结构用程序框图可以表 示为:
循环体
满足条件?
否
是
思考2:某些循环结构用程序框图可以表 示为:
循环体
满足条件?
否
是
思考2:某些循环结构用程序框图可以表 示为:
循环体
满足条件?
否
是
思考3:还有一些循环结构用程序框图可 以表示为:
循环体 满足条件?
是
否
思考3:还有一些循环结构用程序框图可 以表示为:
循环体 满足条件?
是
否
思考3:还有一些循环结构用程序框图可 以表示为:
循环体 满足条件?
是
否
思考4:计算1+2+3+…+100的值可按如下过程 进行:
第1步,0+1=1. 第2步,1+2=3. 第3步,3+3=6. 第4步,6+4=10. …… 第100步,4950+100=5050.
思考4:计算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,S=0.
第二步,计算S+i,仍用S表示.
第三步,计算i+1,仍用i表示.
思考5:用直到型循环结构,上述算法的 程序框图如何表示? 开始
i=1 S=0
S=S+i
i=i+1
否
i>100?
是
输出S
结束
思考6:用当型循环结构,上述算法的程 序框图如何表示? 开始
i=1 S=0 i=i+1 S=S+i
i≤100?
否 输出S 结束
是
例4:某工厂2005年的年生产总值为200万元, 技术革新后预计以后每年的年生产总值都比上 一年增长5%. 设计一个程序框图,输出预计年 生产总值超过300万元的最早年份.
算法分析: 第一步, 输入2005年的年生产总值. 第二步,计算下一年的年生产总值.
循环结构:
(1)循环体:设a为某年的年生产总值, t为年生产总值的年增长量,n为年份,则 (2)初始值:n=2005,a=200. t=0.05a,a=a+t,n=n+1. (3)控制条件:当“a>300”时终止循环.
开始
程序框图:
n=2005 a=200 t=0.05a a=a+t n=n+1 否
a>300?
是 输出n
结束
小
结
循环结构的程序框图的基本特征:
(2)循环结构的程序框图各有两种形式.
(1)循环结构中包含条件结构,条件结构 中不含循环结构.