文档介绍:无论使用人工解题还是使用计算机解题,都必须在正确理解题意地基础上寻找或设计正确的解题方法。
使用人工解题最后需验算,而使用计算机解题则不需要。
从问题到算法
问题:在一次班级联欢会上,同学们玩了一个猜商品价格的游戏。A同学出191页。
指令区
数据区
地址
指令内容
1
显示“输入价格:”
2
输入价格到变量T
3
比较输入价格T和商品价格S,如果T<S,转到7
4
比较输入价格T和商品价格S,如果T>S,转到9
5
显示“猜对了!”
6
结束
7
显示“猜小了!”
8
转到1
9
显示“猜大了!”
10
转到1
11
商品价格变量S
12
输入价格变量T
图中的每行代表了内存中的一个存储单元,每个存储单元可以存放一条指令或一个数据。每个存储单元都有唯一的编号,称为地址。
指令是依次逐条执行的,如果遇到转移指令,会按指令要求选择下一条要执行的指令。
遇到结束指令,整个程序终止运行。
第九页,共191页。
输入价格:
500
地址
指令内容
1
显示“输入价格:”
2
输入价格到变量T
3
比较输入价格T和商品价格S,如果T<S,转到7
4
比较输入价格T和商品价格S,如果T>S,转到9
5
显示“猜对了!”
6
结束
7
显示“猜小了!”
8
转到1
9
显示“猜大了!”
10
转到1
11
商品价格变量S
12
输入价格变量T
375
250
500
250
375
猜大了!
输入价格:
猜小了!
输入价格:
猜对了!
375
第十页,共191页。
输入价格:
地址
指令内容
1
显示“输入价格:”
2
输入价格到变量T
3
比较输入价格T和商品价格S,如果T<S,转到7
4
比较输入价格T和商品价格S,如果T>S,转到9
5
显示“猜对了!”
6
结束
7
显示“猜小了!”
8
转到1
9
显示“猜大了!”
10
转到1
11
商品价格变量S
12
输入价格变量T
375
375
猜小了!
输入价格:
猜小了!
输入价格:
猜对了!
375
...
第十一页,共191页。
算法的概念
算法是在有限步骤内求解某一个问题所使用的具有精确定义的一系列操作规则。每条规则都必须是确定的、能行的、不能有二义性的。
算法要有一个清晰的起始步骤,且每一个步骤都只能有一个确定的后继步骤,从而组成一个有限步骤序列。步骤终止时也给出了问题的解答。
解决问题的过程就是实现算法的过程。
算法是程序设计的“灵魂”,算法+数据结构=程序。算法独立于任何具体程序设计语言,一个算法可以用多种程序设计语言实现。
1、算法的概念
2、算法的特点
(1)有穷性
一个算法必须保证它的执行步骤是有限的,即它是能够终止的,操作步骤不能无限。算法可以有重复执行的步骤,只要这些步骤的执行能够终止。
广义地说,“有穷性”是指操作步骤的数目或完成操作的时间在合理的范围内,如果一个算法虽然在操作步骤的数目是有限的,但它所花费的时间超过了合理的限度,这种算法并不是有效的算法。
第十二页,共191页。
(3)可行性
算法中的每一个步骤都要是实际能做的,而且必须在有限的时间内可以完成。例如:步骤“输出:L/d”在d=0的情况下就不可以做。
(4)有0个或多个输入
所谓输入就是指算法在执行时要从外界获得数据,其目的是为算法建立某些初始状态;如果建立初始状态所需的信息已经包含算法中,那就不需要输入了。
(5)有一个或多个输出
算法的目的是用来求解问题,问题的结果应以一定的方式输出,以便用户知道。在数学中的”无解“对于算法来说也是一个输出,没有输出的算法是毫无意义的。
(2)确定性
算法的每个步骤必须有确切的含义,而不应当是含糊的、模棱两可的。
例如:步骤“输出:L/正整数”是无法执行的,因为没有指定L除以哪一个正整数,这个步骤是不确定的。
问题:步骤“输入一个正整数”是否是确定的?
第十三页,共191页。
算法的表示
我们可以采用多种方法来描述一个算法,流程图是一种比较直观易用的、用图形来描述算法的方法。
用流程图来描述算法要遵循一定的标准,这套标准中最常用的符号有:
处理框
输入、输出框
判断框
流程线
开始、结束符
在一般情况下,输入、输出框可以用处理框代替。
开始
结束
开始
结束
第十四页,共191页。
开始
T > S
结