在过程化思维下编写程序描述问题求解思路,即过程化编程,需要描述数据以及数据的加工处理过程,包括:
(1)描述数据:说明求解问题需要哪些数据,这些数据的规格是什么样的;
(2)描述数据处理过程:说明数据如何输入、如何加工处理、以及如何输出处理结果的过程,包括输入数据、处理数据和输出结果三个环节。
因此,C++语言应该为描述数据和数据处理过程提供相应的语法工具和设施。
描述数据
针对描述数据,C++语言首先提供了变量的概念,用来记住数据所在的存储空间的地址,通过变量我们可以方便地对数据进行存取访问。
同时,C++语言提供了丰富的数据类型,用以约定数据的规格,包括数据的存储空间大小、编码和解码方式、以及数据可接受的运算处理行为。其中,
(1)内置数据类型:描述常用的整型、字符型、浮点型数据;
(2)复合数据类型:描述常变量、数组、指针、引用等复合数据;
(3)定制数据类型:定制我们自己的数据类型,约定数据的规格,包括存储空间大小、编码和解码方式、及其可接受运算处理行为。
内置数据类型、复合数据类型、以及定制数据类型的语法工具,构成了C++语言的类型系统,是C++语言最为核心的内容。
描述数据处理
C++语言为描述数据处理过程提供了丰富的语法工具,包括:
(1)描述最基本的数据运算行为:运算符和表达式语句;
(2)描述数据处理的控制流程:流程控制语句;
(3)描述数据的输入和输出:输入输出流类库;
(4)描述复杂的数据处理过程:复合语句和函数。
其中,函数是C++语言核心的语法工具,用于将一个数据处理过程包装成一个逻辑独立的、可重复使用的语法单元。本质上,函数就是一种数据处理的机器,它把数据处理过程封装到机器内部,对外提供一个入口和一个出口。如果需要使用函数处理数据,那么,只需要把我们的数据放到机器入口,则机器就会自动运转对数据进行加工处理,最后,在机器的出口我们就可以拿到数据处理的结果。
通过函数,我们可以比较轻松地应付规模较大问题的编程求解。譬如,在求解一些较大的问题时,往往会遇到其中一些环节或者子问题暂时难以处理,此时,我们就假设存在函数(机器)可以解决这些子问题,即使它们实际上并不存在;然后通过调用这些函数完成问题的整体编程求解。之后,再在合适的时机给出这些函数的实现。
这种自上而下将复杂问题不断细分,产生一系列更易于求解的子问题,然后再针对这些子问题进行求解的思维,就是结构化的编程思想(Structured Programming,SP),或者说,自顶向下、逐步求精的编程思想。

