- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
裘宗燕 从问题到程序(2003 年修订),第十章 程序开发
第十章 程序开发技术
本章是这本书实质性内容的最后一章,这里要通过一些程序实例,综合性地总结本书中
所讨论的各方面内容,包括 C 语言里的一些主要机制以及写程序的各种基本技术,讨论一
些在编写较大程序时需要考虑的问题,同时介绍一些有用的编程技术。
10.1 分别编译和C 程序的分块开发
随着学习的不断深入,我们在编程序时要处理的问题变得越来越复杂,写出的程序也越
来越长了。应该看到,教科书里的问题都做了许多简化,任何实际问题通常都比书里的例子
和习题中提出的问题更复杂得多。随着程序变得越来越大,许多新问题也随之出现了。
最明显情况的是源程序文件越来越大。大文件处理起来很麻烦,屏幕只能显示其中很小
一部分,翻阅查找信息都更费精力,更费时间。大的源文件总是慢慢建立起来的,建立过程
中经常需要编译调试其中的某个或者某些小部分,做起来就非常麻烦。
一个可能的方法是把不关心的部分 “注释”起来。但这一方法很难系统化地采用,因为
新的临时性注释可能与程序中原有的注释冲突,改起来常常需要做许多变动。大型源文件的
另一个缺点是,哪怕你只改动了其中的一个字符,为了后面的程序调试,也需要把整个文件
重新加工一次,这又会浪费许多时间。此外,这种做法也相当危险。由于许多东西都放在一
个大文件里,如果开发或调试新加入部分时无意改动了已经做好的部分,那就又会带来无穷
无尽的烦恼。另一方面,一个大的软件系统通常是几个、几十个甚至更多人共同工作的结果。
许多人怎样用一个源文件工作?我们根本无法想象许多人一起改动一个大地程序文件时会
发生什么事情。
总之,实际程序开发通常不可能采用一个文件写一个程序的方式 (除非程序很小,就像
我们开始学习时遇到的例子,实际上那些例子也牵涉到多个文件,因为每个程序都用到系统
的头文件),因为存在许多无法解决的困难,为此人们考虑了采用多个源文件开发一个程序
的方式。C 语言的设计本身就考虑了这个问题,并提供了一些支持机制。这里我们将以前一
章的程序实例为例,介绍这方面的情况。
10.1.1 分块开发的问题和方法
采用多个源程序文件开发一个程序的过程通常称为分块开发。分块开发得到 C 语言程
序加工过程的支持,因为C 语言允许加工对象不是完整的程序,而是一个个的源程序文件。
分块开发出的各个源文件可以分别进行预处理和编译,得到一组程序目标文件;最后可以用
连接程序把这些目标文件和系统库函数、程序基本运行系统等连接起来,形成最后的可执行
文件。第五章的图 5.5 描述了这种开发过程的基本情况。
预处理的对象通常是一组源程序文件,得到的是一组新的源文件,其中不再包含任何预
处理命令 (所有文件包含命令都用相应文件的内容取代,所有的宏都已替换掉,所有条件编
译的效果都已体现在作为预处理结果的源文件中,应该清除的代码段均已除去)。编译程序
处理的就是一组这样的源程序 (人们通常将称它们为编译单位,translation units ),将它们分
别编译为一组目标代码模块。只有到了连接时才需要一个程序的全部信息 (程序的所有目标
代码模块)。连接系统将所有有关的 目标代码模块装配到一起,解决这些模块里所有的定义
和使用之间的关联问题,并将必要的运行支持模块和系统库函数代码也连接到程序里,最终
1
裘宗燕 从问题到程序(2003 年修订),第十章 程序开发
得到一个可执行程序。
分块开发中最重要工作就是程序结构的“物理”组织。在 C 语言里做分块开发,需要
借助于 C 系统的预处理功能,以达到对源程序的适当物理划分,并设法保证组成同一个程
序的不同部分之间的一致性,以便使编译之后的目标代码模块能组合成一个具有内在一致性
的完整的可执行程序。
在一般性地讨论分块开发中的问题之前,让我们先看一个工作实例。
10.1.2 程序实例:学生成绩处理
这里还用读者已熟悉的例子:学生成绩文件的处理。这个例子也作为本章后面许多讨论
的公用实例。我们对这个实例做一些扩充,假定成绩文件给出了每个学生一门课程的期中考
试成绩,平时成绩和期末考试成绩
您可能关注的文档
- 第十二讲公共产品.ppt
- 第3讲PremiereProCC的基本操作.PDF
- 第3讲STEP7编程软件介绍.ppt
- 第十二讲国际法不成体系问题国际法多样化和.PDF
- 第3讲VHDL基础.ppt
- 大准铁路书写运输生产新章章.PDF
- 方志重修第一章,.PDF
- 第十二讲红外吸收光谱法.PDF
- 第3讲WSN拓扑控制与覆盖技术.PDF
- 第十二讲华中旅游区第一节概述.PDF
- 2025年春人教版道德与法治七年级下册全册课件.ppt
- 2025年春人教版历史七年级下册全册课件.ppt
- 新科粤版化学九年级上册全册课件(2025年5月修订).ppt
- 新人教版七年级上册道德与法治全册教学课件(2024年新版教材).ppt
- 新人教版七年级上册道德与法治全册课件(2024年新版教材).ppt
- 新外研剑桥(Join In)版(三起)英语三年级上册全册教学课件(新版教材).ppt
- 新外研剑桥(Join In)版(三起)英语三年级上册全册课件(新版教材).ppt
- 2025年春新北师版数学一年级下册全册教学课件.ppt
- 2025年春新北师版数学一年级下册全册课件.ppt
- 青岛版数学四年级上册全册教学课件.ppt
原创力文档


文档评论(0)