使用C语言的7个步骤
第1步:定义程序的目标
在动手写程序之前,要在脑中有清晰的思路。想要程序去做什么首先自 己要明确自己想做什么,思考你的程序需要哪些信息,要进行哪些计算和控 制,以及程序应该要报告什么信息。在这一步骤中,不涉及具体的计算机语 言,应该用一般术语来描述问题。
第2步:设计程序
对程序应该完成什么任务有概念性的认识后,就应该考虑如何用程序来 完成它。例如,用户界面应该是怎样的?如何组织程序?目标用户是谁?准 备花多长时间来完成这个程序? 除此之外,还要决定在程序(还可能是辅助文件)中如何表示数据,以 及用什么方法处理数据。学习C语言之初,遇到的问题都很简单,没什么可 选的。但是,随着要处理的情况越来越复杂,需要决策和考虑的方面也越来 越多。通常,选择一个合适的方式表示信息可以更容易地设计程序和处理数 据。 再次强调,应该用一般术语来描述问题,而不是用具体的代码。但是, 你的某些决策可能取决于语言的特性。例如,在数据表示方面,C的程序员 就比Pascal的程序员有更多选择。
第3步:编写代码
设计好程序后,就可以编写代码来实现它。也就是说,把你设计的程序 翻译成 C语言。这里是真正需要使用C语言的地方。可以把思路写在纸上, 但是最终还是要把代码输入计算机。这个过程的机制取决于编程环境,我们 稍后会详细介绍一些常见的环境。一般而言,使用文本编辑器创建源代码文 件。该文件中内容就是你翻译的C语言代码。
第4步:编译
接下来的这一步是编译源代码。再次提醒读者注意,编译的细节取决于 编程的环境,我们稍后马上介绍一些常见的编程环境。现在,先从概念的角 度讲解编译发生了什么事情。 前面介绍过,编译器是把源代码转换成可执行代码的程序。可执行代码 是用计算机的机器语言表示的代码。这种语言由数字码表示的指令组成。如 前所述,不同的计算机使用不同的机器语言方案。C 编译器负责把C代码翻 译成特定的机器语言。此外,C编译器还将源代码与C库(库中包含大量的 标准函数供用户使用,如printf()和scanf())的代码合并成最终的程序(更精 确地说,应该是由一个被称为链接器的程序来链接库函数,但是在大多数系 统中,编译器运行链接器)。其结果是,生成一个用户可以运行的可执行文 件,其中包含着计算机能理解的代码。 44 编译器还会检查C语言程序是否有效。如果C编译器发现错误,就不生 成可执行文件并报错。理解特定编译器报告的错误或警告信息是程序员要掌 握的另一项技能。
第5步:运行程序
传统上,可执行文件是可运行的程序。在常见环境(包括Windows命令 提示符模式、UNIX终端模式和Linux终端模式)中运行程序要输入可执行文 件的文件名,而其他环境可能要运行命令(如,在VAX中的VMS[2] )或一 些其他机制。例如,在Windows和Macintosh提供的集成开发环境(IDE) 中,用户可以在IDE中通过选择菜单中的选项或按下特殊键来编辑和执行C 程序。最终生成的程序可通过单击或双击文件名或图标直接在操作系统中运行。
第6步:测试和调试程序
程序能运行是个好迹象,但有时也可能会出现运行错误。接下来,应该 检查程序是否按照你所设计的思路运行。你会发现你的程序中有一些错误, 计算机行话叫作bug。查找并修复程序错误的过程叫调试。学习的过程中不 可避免会犯错,学习编程也是如此。因此,当你把所学的知识应用于编程 时,最好为自己会犯错做好心理准备。随着你越来越老练,你所写的程序中 的错误也会越来越不易察觉。 将来犯错的机会很多。你可能会犯基本的设计错误,可能错误地实现了 一个好想法,可能忽视了输入检查导致程序瘫痪,可能会把圆括号放错地 方,可能误用 C语言或打错字,等等。把你将来犯错的地方列出来,这份错 误列表应该会很长。 看到这里你可能会有些绝望,但是情况没那么糟。现在的编译器会捕获 许多错误,而且自己也可以找到编译器未发现的错误。
第7步:维护和修改代码
创建完程序后,你发现程序有错,或者想扩展程序的用途,这时就要修 改程序。例如,用户输入以Zz开头的姓名时程序出现错误、你想到了一个更 好的解决方案、想添加一个更好的新特性,或者要修改程序使其能在不同的 计算机系统中运行,等等。如果在编写程序时清楚地做了注释并采用了合理 的设计方案,这些事情都很简单。
编程机制
在UNIX系统上编译
课后复习题
1.对编程而言,可移植性意味着什么?
完美的可移植程序是,其源代码无需修改就能在不同计算机系统中成 功编译的程序。
2.解释源代码文件、目标代码文件和可执行文件有什么区别?
源代码文件包含程序员使用的任何编程语言编写的代码。目标代码文 件包含机器语言代码,它不必是完整的程序代码。可执行文件包含组成可执 行程序的完整机器语言代码。
3.编程的7个主要步骤是什么?
(1)定义程序目标;(2)设计程序;(3)编写程序;(4)编译程 序;(5)运行程序;(6)测试和调试程序;(7)维护和修改程序。
4.编译器的任务是什么?
编译器把源代码(如,用C语言编写的代码)翻译成等价的机器语言 代码(也叫作目标代码)。
5.链接器的任务是什么?
链接器把编译器翻译好的源代码以及库代码和启动代码组合起来,生成一个可执行程序。