- 0
- 0
- 约6.84千字
- 约 43页
- 2020-01-13 发布于辽宁
- 举报
3、编译程序 编译程序对源程序进行翻译的方法相当于“笔译”,是把用高级程序设计语言书写的源程序,翻译成等价的汇编语言或机器语言的目标程序的翻译程序。 编译程序广泛地用于翻译规模较大、复杂性较高,且需要高效运行的高级语言(如C语言、Java等)书写的源程序。 经过翻译程序的处理后,连接程序将多个翻译过的目标程序和库文件进行组合;装入程序将目标程序装入内存并启动执行 。 * 3.4 算法 3.4.1 算法的概念 3.4.2 算法的描述 3.4.3 算法设计举例 3.4.4 算法的分析 3.4.1 算法的概念 在日常生活中,人们所做的任何事情,都有一定的方法和步骤: 上楼可以走楼梯或者坐电梯; 出行可以选择骑自行车、坐公交车或者打车等; 评定奖学金,需要先收集每个同学相应课程的成绩,然后按照学分加权求和,最后根据成绩高低评定奖学金级别等。 计算机解决问题也有相应的方法和步骤,即算法 简单地说,算法就是解决问题的方法和步骤。 * 例1 交换两杯墨水 问题:有两个杯子A和B,分别装满了红墨水和蓝墨水。现在要将两个杯子中的墨水交换过来,问如何实现? * A B C 请思考? 其交换步骤如下: ① 将杯子A中的红墨水装入杯子C中; ② 将杯子B中的蓝墨水装入杯子A中; ③ 将杯子C中的红墨水装入杯子B中。 例2 求和 问题:用计算机求1到100之间的自然数的和,如何实现? 我们用变量Sum来存储要求的和,可以设计如下过程: ① 令Sum的初值为0; ② 读取一个需要累加的数据; ③ 将该数据累加到Sum中; ④ 重复步骤②和③,直到把1~100之间的所有数都累加到Sum中; ⑤ 输出累加结果Sum。 * 反复进行加运算 算法的特征 1、能行性,算法中的每一步操作都必须是能实现的,即在计算机的能力范围之内。 如在算法中不允许出现分母为0的情况,在实数范围内不能求一个负数的平方根等。 2、有穷性,一个算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 3、确定性,算法中的每一步必须有确切的含义,不允许有模棱两可的解释和多义性。 4、输出,一个算法有一个或多个(=1)输出,以反映对输入数据加工后的结果,没有输出的算法是毫无意义的。 另外,一个算法还应该有零个或多个输入,以描述运算对象的初始情况。 * 3.4.2算法的描述 描述算法有多种不同的工具。采用不同的算法描述工具,对算法描述的质量有很大的影响,常见的算法描述工具有: 描述工具 自然语言 流程图 伪代码 * 1、自然语言 前面交换两杯墨水和求和都是使用自然语言对算法进行的描述。 用自然语言描述算法通俗易懂,使用简单,人们可以根据自己的思路快速地将算法描述出来。 但使用自然语言描述算法,尤其是比较复杂的算法时,一般会比较冗长,并且容易出现歧义,而且也不便于翻译成计算机程序设计语言。 这种方法一般不作为正式的算法描述方式。 * 2、流程图(1) 流程图风行于20世纪五六十年代,它采用几何图形来描述问题,是一种图形表示方法。流程图简明直观、便于交流,至今仍在使用。 流程图常用的符号包括: 起止框表示算法的起始或终止; 输入输出框表示输入数据或输出计算结果,框内应填写需要输入或输出的量; 处理框表示执行计算表达式和赋值操作,框内用文字或符号表明具体实现的操作; 判断框根据条件判断算法继续执行的走向,框内应填上条件; 流程线表示算法中某操作的流向。 * 2、流程图(2) 求和的算法用流程图描述,如右图 在流程图中可以清晰地看出程序的整体结构和数据流向。 使用流程图描述算法,让人感到流程的描述清晰简洁,容易表达分支结构。 它不依赖于任何具体的计算机和计算机程序设计语言,从而有利于不同环境的程序设计。 * 3、伪代码 伪代码是用介于自然语言和程序设计语言之间的文字和符号来描述算法的工具。 它书写方便,格式紧凑,易于理解,便于向计算机程序设计语言(即通常所说的程序)过渡。 伪代码描述算法不需要让计算机接收,又吸取了编程语言代码表达精练的特点,容易转换为程序设计语言。 * 算法:辗转相除法求最大公约数 BEGIN input m,n; /*输入正整数m和n*/ do { r←m mod n; m ← n; n ← r; } while r≠0; print m; /*输出最大公约数*/ END 3.4.3算法设计举例 使用计算机求解问题通常包括如下几个步骤: (1)理解和确定问题; (2)寻找解决问题的方法和规则,并表示成算法; (3)编程,即使用程序设计语言描述算法; (4)运行程序,获得问题的解答; (5)对算法进行评估。 * 算法设
原创力文档

文档评论(0)