Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36196
  • 博文数量: 16
  • 博客积分: 389
  • 博客等级: 一等列兵
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-14 02:44
文章分类
文章存档

2012年(16)

我的朋友

分类: C/C++

2012-08-14 20:04:26

C语言程序的结构

1.4.2 程序的三要素:数据输入、数据处理与数据输出

在上一小节中见识过几个C语言中最简单的程序之后,在接下来的这个小节中,谭老师向我们介绍了C语言程序的结构,从而让我们对C语言程序有一个整体的认识和把握。

谭老师将一个C语言源程序主要分成三个部分:预处理指令、全局声明和函数定义。这三个部分有机地组合起来,就形成了一个完整的程序。谭老师这样的划分虽然非常清晰,但是没法在我们头脑中形成一个比较形象的概念,我们虽然知道一个C语言程序包含这三个部分,但可能还是不会组织编写一个完整的C语言程序。

事实上,正如谭老师所讲,“一个C语言程序是由一个或者多个函数组成的,其中必须包含一个main函数(且只能有一个main函数)”。我们只要牢牢把握了这一点,就可以自己来组织编写一个完整的C语言程序了。更形象地说,一个C语言程序中的预处理指令、全局声明和函数定义就像是一个个的积木方块,而我们编写一个C语言程序,就是将这些积木方块,按照一定的顺序搭建在一个C语言的源文件中。比如在上一个小节的例子程序中,它就包含了预处理指令、max函数和main函数这三个积木方块。而整个写程序的过程,就是将这三个积木方块按照一定的顺序规则搭建成一个完整的C语言程序的过程。明白这个流程之后,实际上我们写一个程序的过程,就变成了寻找合适的积木方块(使用合适的头文件、编写需要的函数、编写解决问题的main()函数等等),然后将这些积木方块按照一定的顺序规则组织起来的过程。写程序,就是搭积木。

clip_image002

写程序就是搭积木

一个完整的C语言程序是按照搭积木的方式来组织的,而在最重要的main()函数内部,也同样是以这种方式来组织代码实现具体功能的。

因为main()函数的特殊性——一个C语言程序总是从main()开始执行,整个main()函数执行完毕之后,程序就结束执行而退出。可以说,main()函数就是一个C语言程序短暂而光辉的一生。正是因为一个C语言程序是以一个main()函数来贯穿始终的,所以我们就在这个函数中获取数据的输入、对数据进行处理然后将数据输出,这几乎是每一个C语言程序的三部曲。如果其中的某些步骤比较复杂或者相对比较独立,我们还需要将其提取出来,成为单独的函数,比如我们将实现比较功能的代码提取出来形成单独的max()函数,也就是一个单独的模块(积木)。再加上一些库函数,比如实现输入输出功能的scanf()函数和printf()函数,这些都是我们可以在main()函数中使用的积木方块。而main()函数,就是合理地组织这些函数(积木方块),以完成对数据的处理或者是对某个过程的控制。这就是我们编写C语言程序的整个过程。

clip_image004

C语言程序的结构

无论是整个C语言程序的编写,还是main()函数的编写,都可以看成是一个利用积木方块(预处理指令、全局声明以及函数等)来搭建一个解决某个问题的完整程序的过程。我们之所以能够像玩积木一样地来写C语言程序,归根结底,是因为C语言采用的是面向过程的编程思想,它总是将一个比较复杂的问题,采取“自顶向下,逐步求精”的策略将其分解成多个小问题。而每一个小问题,就是我们所说的模块,也就是我们这里的积木方块。这些模块常常表现为某个函数,而main()函数就是这些模块函数组织起来的一个解决某个问题的过程。例如,我们要解决“比较三个整数的大小”这个问题,在main()函数中,我们就首先需要使用库函数scanf()来获得用户输入,然后使用我们自己定义的max()函数来比较获得最大的一个整数,最后使用库函数printf()将结果输出,从而完美地解决了这个问题。概括起来,编写C语言程序,实际上就是利用各个不同功能的函数(如果没有现成的函数可用,我们就需要自己定义实现某个功能的函数),将它们在main()函数中组织成一个解决某个问题的流程,而我们最终得到的是一个解决了某个问题的main()函数,它就是一个C语言程序的实质。如果将一个个库函数(例如scanf()函数)或者是自定义函数(例如max()函数)看成是一个个积木方块,那么整个main()函数就是由这些积木搭建而成的美丽城堡。

阅读(702) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~