2.1.6 程序的两大任务描述数据与处理数据
每个人都会问自己人生的目的是什么?我的人生目的是什么?人们编写程序的目的是用程序解决现实世界中的问题。人们观察发现,这些问题都是以数据作为输入,然后对这些数据进行处理,最后得到问题的结论的。所以,我人生的目的是描述数据并处理数据,最终解决现实世界的问题,如图2-8所示。
人们用公式给我下了一个定义:
- 程序 = 数据 + 算法
其中数据可以看成是对现实世界中的各个事物的抽象。例如:在数学中用到的整数、小数,
|
| 图2-8 我的人生目的 |
我用数值数据来表示;在生活中用到的地名、人名等,我用字符串数据来表示。当然,还有其他的数据,我都有相应的表示方式。用数据描述现实世界中的事物,是我的人生目的之一。
现实世界是由这些事物组成的,同时各个事物又是变化的,各个事物之间还有各种关系。如果说数据只是现实世界的静态反映,那么对数据的处理就反映了事物的变化,表达了事物之间的关系,让整个世界运转起来。对数据处理的抽象,人们称为算法。通过设计算法,我可以帮助人们解决很多现实生活中的问题,实现我的另一个人生目的。例如,我可以处理学生成绩,得到平均成绩;我也可以处理长方形的长和宽,得到这个长方形的面积。
数据和算法伴随我的一生。在小小的HelloWorld.exe中,也同样有数据和算法的存在。例如,向屏幕输出"Hello World!"的语句:
- cout<<"Hello World!"<<endl;
其中"Hello World!"是要向屏幕输出的数据,它是一个字符串数据。整个语句则代表了对这个字符串数据的处理:将字符串显示到屏幕上。数据和算法总是这样形影不离,成为我一生的目的。