一、前言
什么是计算机程序?计算机程序与算法是什么样的关系?
有人这样给计算机程序进行定义:
计算机程序是一个指令的集合;
计算机程序是一个问题的解决方案;
计算机程序是一个产品;
计算机程序是数据结构加算法。
从程序内部组成来说,计算机程序是一个指令集合。
编写程序的过程是写指令集的过程,它能过告诉计算机怎样实现特定的功能。
而指令集是用计算机能够理解的语言编写的,因为计算机无法读懂人类的语言。
计算机程序是一个问题的解决方案,主要包括:找出问题,理解问题,找出解决问题的备选方案,找出最佳方案,使用选择的方案,列出帮助解决问题的指令,评估解决方案多个步骤。
例:
求1+2+3+……+10的和的解决方案如下。
1)找出问题:
求1~10的和。
2)理解问题:
求1~10的自然数的和。
3)列出备选方案。
备选一:
将各项依次相加求和。
备选二:
凑10法求和。
备选三:
等差数列求和。
备选四:
逆序求和。
4)选择最佳方案。
备选一:
适合计算机运算,寻找规律,不难发现可以采用循环累加的办法,而且每次的加数都比前一个数多一。
备选二:
适合口算,如果求1~10000自然数的和,这种算法就不太适合了。存在着一定的局限性。
备选三:
不符合人们的运算规律。
所以,备选一为最佳方案。
5)C语言代码(指令)如下:
#includevoid main() {
int i, s = 0; for (i = 1; i <= 10; i++) {
s += i; } printf("s=%d\n", s);}
分析:
首先是载入头文件。
然后是主函数。
先定义一个变量i,用于循环计数;再定义一个变量s,用于保存相加的结果。
然后通过for循环进行重复相加。
最后通过输出语句进行输出。
运行结果:
6)评估方案
通过运行程序,发现该方案具有通用性。
如果求200~500的和,只需要将for (i = 1; i <= 10; i++)改成for (i = 200; i <= 500; i++)即可。
计算机程序包括对数据的描述和对操作的描述。
前者为数据结构,包括数据类型与数据的组织形式;后者为算法,即操作步骤,主要解决“做什么”和“