1 / 20
文档名称:

程序设计基础课件.pptx

格式:pptx   大小:196KB   页数:20页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

程序设计基础课件.pptx

上传人:3321568027 2021/7/16 文件大小:196 KB

下载得到文件列表

程序设计基础课件.pptx

文档介绍

文档介绍:2012/9/13
程序设计基础
Programming Fundamentals
编写大型程序与编写小型程序有很大的不同。
前面的例子和实验程序都只有一个源文件(实际上也牵涉到多个文件,因为每个程序都用到了头文件)。
编写大型程序通常不可能采用一个源文件开发一个程序的方式,因为存在许多无法解决的困难,一般采用多个文件开发一个程序的方式。
编写大型程序需要详细计划和仔细设计,需要有正规的文档和一致的程序设计风格,因为一个大型程序通常是几个、几十个甚至更多人组成的开发团队共同工作的结果。
C语言不是专门用来编写大型程序的,但很多大型程序都是用C语言编写的,如Unix/Linux操作系统。在设计C语言时已经考虑到了这个问题,提供了一些支持编写大型程序的机制。
引言
2012/9/13
模块
解决复杂问题的基本方式就是设法把它分解为若干个较为简单的子问题,子问题还可以进一步分解为更小的、更易处理的问题,逐一解决这些子问题,然后用各个子问题的解去构造复杂问题的解。这种“分而治之”的方法,被称为结构化程序设计。
可以采用结构化程序设计的思想,将大程序分解成若干个相对独立、功能单一且便于阅读和理解的模块。
模块是一组服务的集合,这些服务可以被程序的其他部分调用。每个模块都有一个接口来描述所提供的服务,这些服务是如何完成的细节则封装在模块的实现中。
模块(续)
在C语言中,这些服务就是函数。
模块的接口就是头文件,;模块的实现就是源文件,。头文件中主要包含了可以被程序中其他部分调用的函数声明(函数原型),源文件中主要包含了函数定义。
结构化程序设计的过程就是确定程序应该分解成哪些模块,每个模块应该提供哪些服务,各个模块之间的关系是什么。
模块(续)
C语言标准库就是一些模块的集合。标准库中每个头文件都是一个模块的接口。

头文件的作用就是为在C程序里使用标准库函数以及其他功能提供必要的信息。
如果需要在C程序里使用标准库函数,只要在源文件前面包含对应的头文件,并正确调用这些函数就可以了。
编译器在程序编译过程中会对源文件中这些函数调用进行相关处理,至于这些函数是如何实现的,都封装在C语言标准库文件中,用户无需知道。这就是所谓的信息隐藏,将标准库函数的使用和实现分离。
分块开发
组成一个C程序的文件主要分为两类,一类是源文件,其中一个源文件必须包含main函数;另一类是为源文件提供必要信息的头文件。
采用多个源文件开发一个程序的过程通常称为分块开发。当程序规模比较大时,可以按照结构化程序设计方法将程序划分成多个源文件,每个源文件包含程序的部分内容。分块开发使一个程序可以同时有多人进行开发,为大型程序的团队开发提供了有力的支持。
分块开发(续)
程序物理组织
将一个大型程序划分为一组物理上独立的源文件,并通过头文件设法保证这些源文件之间的正确逻辑关系,使这些源文件的最终编译结果能链接成一个正确的程序。
一般将相互之间存在较密切的逻辑关系,具有一定整体性的功能放在一个源文件中。main函数通常单独放在一个源文件中。
头文件使得在任意数量的源文件中共享信息成为可能。如果想让几个源文件能够访问相同的信息,可以把此信息放在一个头文件中,然后利用#include指令把头文件的内容带进每个源文件中。如果源文件比较复杂,可能需要为每个源文件设计一个头文件。
分块开发(续)
#include指令
在程序编译前,#include指令告诉预处理器打开指定的文件,并把此文件的内容插入到当前文件中。
只用#include指令包含头文件,而不用它包含其他文件。
#include指令主要有如下两种书写格式:
#include <头文件名>
这种格式主要用于包含标准库头文件。例如,#include <>。
#include "头文件名"
这种格式主要用于包含自己定义的头文件。
两种格式的差别在于程序编译时查找头文件的方式。
分块开发(续)
头文件的内容
头文件里可以包含标准库头文件和其他自己定义的头文件。
把多个源文件共享的宏定义、类型定义以及结构类型、联合类型、枚举类型声明等放在一个公共头文件中供这些源文件使用。
通过头文件解决在一个源文件中定义而在另一个源文件中使用的函数共享问题。 通常把函数声明(函数原型)放在一个头文件里。使用这些函数的源文件需要包含这个头文件。含有这些函数定义的源文件也需要包含这个头文件。
可以通过头文件解决多个源文件之间的全局变量共享问题。