第 2 章 算法 --程序的灵魂
-
程序 = 算法 + 数据结构 (沃思,计算机科学家)
-
一个程序应该包括两方面:
- 对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。
- 对操作的描述: 即操作步骤,也就是算法(algorithm)。
-
数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。
-
程序设计人员需具备知识:
-
算法
-
数据结构
-
程序设计方法
-
语言工具
-
1.算法的概念
-
广义来说,为解决一个问题而采取的方法和步骤,就称为“算法”。
-
同一问题有不同的解题方法和步骤,方法有优劣之分。因此,不仅需要保证算法正确,还要考虑算法的质量。
-
算法分为 数值运算算法 和 非数值运算算法
-
数值运算:目的是求数值解,如求方程根、函数定积分等。
-
非数值运算:包括面十分广泛,最常见的是用于事务管理领域,如图书馆检索、人事管理等。
-
-
数值运算有现成的模型,可以应用数值分析方法。故常将这些算法汇编成册(写成程序形式),供用户调用。如 数学程序库 等。
2.简单算法举例
-
例2.1 求 1x2x3x4x5
-
设两个变量,一个代表被乘数,一个代表乘数。直接将每一步的乘积放在被乘数变量中
-
设 p 为被乘数 , i 为乘数。
1. 使 p =1; 2. 使 i = 2; 3. 使 p x i,乘积放在 p 中,可表示为 p x i ⇨ p; 4. 使 i 的值加 1 ,即 i + 1 ⇨ i; 5. 若 i 的值不大于5,返回重新执行 S3 以及 之后的 S4 和 S5,否则,算法结束。最后得到的 p 的值就是 5!的值。 -
-
例2.2 将50个学生中成绩在80分以上的学号和成绩输出。
- 用 n 表示学生号,n1代表第一个学生,ni代表第i个学生;
- 用 g 代表学生成绩,g1代表第一个学生的成绩。
1. i =1; 2. 如果 g1>80,则输出 n1 和 g1 ;否则不输出。 3. i = i + 1; 4. 如果 i<=50,返回S2,继续执行;否则,结束算法。 -
例2.3 判定 2000-2500年中的每一年是否为闰年,将结果输出。
-
闰年的条件 :
-
能被4整除,但不能被100整除的年份;
-
能被100整除,又能被400整除。
-
-
设 y 为被检测的年份
1. y = 2000; 2. 若 y 不能被 -