高级语言程序设计(C语言版):基于计算思维能力培养
上QQ阅读APP看书,第一时间看更新

1.6 C语言程序开发步骤

如前所述,在执行C程序之前,必须创建程序并进行编译,产生可执行文件(.exe文件)。大多情况下,这个过程需要反复。如果程序有编译错误(通常这类错误称为语法错误),必须修改程序来纠正错误,然后重新编译它,直到程序没有语法错误为止。

成功编译产生可执行文件并不意味着程序就完全正确,如果程序有运行错误或者不能产生正确的结果(这种错误通常称为逻辑错误),则必须重新修改这个程序,重新编译,然后重新执行。如此反复,直到程序运行出正确的结果。

C语言程序开发步骤如图1-23所示。

图1-23 C程序开发步骤

作为实验,读者可以尝试将1_1.c中的程序语句printf("Welcome to C!\n");后面的“;”删除,编译时将出现如图1-24所示的错误提示。

图1-24 编译错误提示界面

从图1-24可见,光标停留在第5行,并且在Massages窗口显示以下错误提示信息:

d:\c\ch1\1_ 1.c    5   error: expected ';' before printf

根据提示可知,编译器提示在第5行的printf前面需要增加一个";"号。这时,可以根据提示修改程序,再进行编译,直到问题得到解决。

编程是一项复杂的工作,所以难免出错。据说,有这样一个典故:早期的计算机体积都很大,有一次一台计算机不能正常工作,工程师们找了半天原因最后发现是一只虫子(Bug)钻进计算机中造成的。此后,程序中的错误就被叫做Bug,美国人Grace Murray Hopper(见图1-25)是第一位发现并排除程序错误的人。

图1-25 Grace Murray Hopper

后来人们把发现和排除程序错误的过程称为调试(Debug)。调试是一项非常复杂的工作,要求程序员概念明确、逻辑清晰,有时还要有些运气。调试的技能我们在后续的学习中慢慢培养。

程序中常见的错误分为以下三类。

• 语法错误

语法错误又称编译时的错误,编译器只能翻译语法正确的程序,否则将导致编译失败,无法生成可执行文件。编译器对程序语法要求非常严格,诸如缺少一个分号这样很小的语法错误,编译器也会在输出一条错误提示后罢工。初学者首先会遇到的问题就是编程时的语法错误,从而严重打击编程热情。在开始学习的几周,读者可能需要花大量的时间来纠正语法错误。实际上,语法错误是最简单最低级的错误。快速掌握程序语言语法的有效途径是多加练习,积累经验,假以时日,则可熟能生巧,根据编译器错误提示就能快速修改程序的语法错误。

• 运行时错误

运行时错误是指程序在运行过程中发生的异常情况,例如,CPU执行到0作除数的除法时,将停止程序的运行。编译器在编译时检查不出这类错误,但在运行时会出错,从而可能导致程序崩溃。

• 逻辑错误

第三类错误是逻辑错误。逻辑错误是指程序没能正确地实现问题求解而导致程序运行结果不正确的程序错误。例如,在银行利息计算中,若编程时错误地将利率由0.05写成了0.005,虽然程序能执行,但结果显然将是不正确的。

编程时真正具有挑战性的工作是快速排除程序中的逻辑错误。如果程序有逻辑错误,编译时可能不会产生任何错误信息,但是程序没有干它该干的事情,而是干了别的事情。找到逻辑错误在哪需要十分清醒的头脑,要通过观察程序的运行结果回过头来判断它到底在做什么。

调试是编程最重要的技巧之一,调试的过程可能会让初学者感到一些沮丧,但调试也是编程中最需要动脑的、最有挑战性和最有乐趣的部分。CB、VC++ 6.0和Visual C++ 2013都提供了强大的程序调试功能,借助于调试器,可以大大提高程序调试效率。做为教材的辅助资料,读者可以在出版社网站下载我们提供的有关CB调试程序方法的相关文档。

在程序设计方法学的指导下,循序渐进,培养自身的程序设计逻辑思维能力是提高程序正确性的有效途径。作为程序设计的初学者,应该记住“冰冻三尺,非一日之寒”,在学习时既要有战胜困难的热情,又不能操之过急。

下面,就让我们进入C语言程序设计的奇妙之旅吧!