1.3 编写第一个C语言程序
根据笔者多年的程序语言教学经验,对一个语言初学者来说,学习C语言就是赶快让他“从无到有”,实际设计出一个程序,许多高手都是在积累了许多程序编写经验后才变得越来越厉害的。
早期要设计C语言程序时,首先必须找一个文字编辑器来编辑,例如Windows操作系统下的“记事本”,或是Linux操作系统下的vi编辑程序,接着再选一种C语言的编译器(如Turbo C/C++、MINGW、GCC等)来编译执行。不过现在不用这么麻烦了,只要找个可将程序的编辑、编译、执行与调试等功能集于同一操作环境下的集成开发环境(Integrated Development Environment,IDE),就可以轻松完成了。
C语言的目标市场非常庞大,市面上较为知名的IDE有Dev-C++、C++ Builder、Visual C++和GCC等。目前市面上几乎没有单纯的C语言编译器,它通常是与C++编译器兼容,称为C/C++编译器。本书使用的是Dev-C++,它不仅方便好用,还免费。
原本的Dev-C++已停止开发,改为发行非官方版。Orwell Dev-C++是一个功能完整的程序编写IDE和编译器,也开放源码,专为C/C++语言设计。在这个环境中,程序员能够轻松编辑、编译、调试和执行C语言的各种功能。这套免费且开放源码的Orwell Dev-C++的安装包(本书下载的安装程序是Dev-Cpp 5.11TDM-GCC 4.9.2 Setup.exe),读者可自行在网上搜索下载。
当安装包下载完毕后,双击该程序就可以启动安装。首先会要求选择语言,此处先选择“English”,如图1.3所示。
图1.3
接着单击“I Agree”按钮,如图1.4所示。
图1.4
进入图1.5所示的界面,选择要安装的插件,单击“Next”按钮。
图1.5
之后进入选择安装路径界面,单击“Browse...”按钮可更换路径。如果采用默认安装路径,则直接单击“Install”按钮,如图1.6所示。
图1.6
接着开始复制要安装的文件,如图1.7所示。
图1.7
当进入图1.8所示的界面时,表示安装成功。
图1.8
安装完毕后,在Windows操作系统中的“开始”菜单中执行“Bloodshed Dev C++→Dev-C++”命令或直接双击桌面上的Dev-C++图标,进入主界面。如果你的软件是英文版,可以执行“Tools→Environment Options”命令,并将图1.9所示界面中的“Language”设定为“简体中文/Chinese”。
图1.9
更改完毕后,就会出现简体中文的界面,如图1.10所示。
图1.10
在计算机中安装好Dev C++后,就可以在工作界面中执行操作,并且会出现图1.11所示的工作界面。
图1.11
1.3.1 编写程序
从编写一个C语言程序到让计算机运行出结果,一共要经过“编辑”“编译”“链接”“载入”“执行”5个阶段。看起来有点麻烦,实际上却很简单,因为这些阶段都可以在Dev C++中进行,只需要进行简单的操作就行了。
程序代码的内容必须根据想要得到的结果进行编写,因为现在读者可能对C语言的语法不够了解,所以我们就写个简单的程序,执行结果是在屏幕上显示一行字。在菜单栏中执行“文件→新建→源代码”命令创建一个新的源码文件,如图1.12所示。
图1.12
接着在Dev C++的程序代码编辑区中输入如下程序代码。
01 #include <stdio.h> 02 #include <stdlib.h> 03 04 int main(void) 05 { 06 07 printf("我的第一个C语言程序!");/*调用printf()函数 */ 08 09 return 0; 10 }
Dev C++拥有视觉化的窗口编辑环境,而且还会将程序代码中的字符串(蓝色)、语句(黑色)与注释(深蓝色)标示成不同颜色,如图1.13所示。在此要提醒大家,C语言程序代码的输入有如下两点注意事项。
1. C语言程序语句有大小写的区分,每行语句以“;”作为结尾,中间的空白字符、Tab键操作、换行操作都算是一种“白色空白”,也就是一个语句可以拆成好几行,或可将好几个语句放在同一行。
2. 每行代码之前的行号只是为了方便解说,编写代码时不要输入。
图1.13
1.3.2 程序代码的编译
接下来执行编译过程。单击工具栏中的“编译”按钮或执行“运行→编译”命令,如果编译成功,程序就会在“编译日志”中显示出最后的编译结果,如图1.14所示。
图1.14
这个编译阶段其实包括了“编译”和“链接”两个步骤,如果没有语法错误,编译器就会把编译结果存成一个目标文件。这个目标文件再经由链接程序链接到其他目标文件和函数库,形成可执行文件。因为在Dev C++中默认使用完这个目标文件后会将其删除,所以一般是看不到这个文件的。
Tips
目标文件其实是一种二进制文件,此文件的扩展名为“.obj”,也就是使用者开发的原始程序代码在经过编译器编译后所产生的机器码。
目标文件和可执行文件中虽然都是机器码,但是目标文件里的机器码只是使用者所撰写的原始程序内容,而执行文件中的机器码还包括函数库中所用到的函数码。
1.3.3 程序代码的执行
可执行文件的扩展名在Windows操作系统下是“.exe”,当C语言程序成了可执行文件后,就可直接在操作系统中执行,不再需要依靠Dev C++环境。
Tips
任何程序执行前都必须载入存储器中,而“载入程序”会将可执行文件与相关的函数库元件从硬盘载入存储器中,以准备执行。
接下来执行“运行→执行”命令或单击“执行”按钮,将会看到图1.15所示的执行结果,此时按下任意键都会回到Dev C++的编辑环境。
图1.15
1.3.4 程序代码的调试
由于这个是范例程序,因此不会出现错误信息。如果出现错误信息,也千万不要大惊小怪。因为写完一个程序,出现错误是很正常的。调试是进行程序设计时必做的工作。错误通常可以分为语法错误与逻辑错误两种。
语法错误是设计者未依照程序语言的语法与格式编写,造成编译器在编译时产生错误。大家可以发现Dev-C++在编译时会自动检错,并提供了视觉化的检错功能,会直接在下方呈现出错误信息,以便大家知道错误所在。对于语法错误只需加以改正,再重新编译即可,如图1.16所示。
图1.16
如果是逻辑错误,那就比较麻烦了,常见的情况是执行结果与预期的结果不符合。因为程序代码完全符合语法,所以Dev C++也没有办法直接显示错误所在,这就很考验程序设计者的功力了,通常是让程序一步一步地执行,抽丝剥茧地找出问题所在。