当前位置:文档之家› C程序设计 Turbo_C集成环境简介(哈工大)

C程序设计 Turbo_C集成环境简介(哈工大)

本附录简单介绍Borland公司生产的C语言的集成调试环境Turbo C 2.0的界面的简单操作方法。如图1所示是Turbo C的界面图,该图共分为五个主要区域:菜单区、编辑区、信息区、帮助区、操作显示区。

下面分别对Turbo C2.0集成调试环境进行简单介绍:

1.程序的编辑

编辑区为程序输入区。程序员可以在该区域编辑程序,相当于一张白纸。可以在编辑区实现字符的键入、字符的删除、插入、移动,可以实现程序块的复制、移动、删除、修改。详细的使用方法,请读者阅读有关书籍,或按F1(帮助键)键,集成调试环境将弹出一个对话框,该对话框详细地说明了编辑框的使用方法,这种帮助方式称为“在线帮助”(Help

图1 Turbo C界面图

信息显示区为显示编译时的错误信息或调试时的各变量的运行状态信息,是调试一个程序必不可少的信息内容。F6(Switch键)可以实现编辑区与信息区的切换,(见帮助信息显示区的帮助内容)。F10可以实现编辑区与菜单区的切换。当F10切换到编辑区时,编辑区内将出现一个闪动的光标,表示可以在该位置输入字符。当F10切换到菜单区时,菜单区

如:File菜单反显,按Enter键,将出现一个下拉菜单,如图2所示,该子菜单说明了如何实现对文件的操作,诸如:新建(New)一个空文件、调入(Load)已编辑完成的程序、存储(Save)当前编辑的程序、改变当前程序所在的路径(Change Directory)等。

Turbo C 2.0的“Edit”菜单是空的,但是Turbo C 2.0提供了一套程序编辑的控制命令,命令是通过键盘的组合操作完成的(通常称为热键)。主要包括光标的移动(上移、下移、左移、左移一个字母、左移一个单词、左移到句尾、右移、左移一个字母、左移一个单词、左移到句首等操作)、删除(删除一个字母、删除一行等)、插入(插入一行、插入状态开关等)、块操作(块定义、块移动、块拷贝、块取消等操作)。Turbo C 2.0热键的组合方式可以通过在编程环境下按“F1”键获得,将光标移到编辑区,然后按下“F1”键,屏幕上弹出一个画面,如图3所示:

这个画面是编辑帮助画面中的一个,通过“PageUP”和“PageDown”可以翻页查找其他的帮助信息。每一种编程工具都有一个在线帮助信息,充分了解和利用在线帮助对于程序员来讲是十分重要的。Turbo C2.0除了在编辑程序有在线帮助,对于本身提供的函数也有相应的帮助信息,例如:读者想知道strcat函数的具体使用方法(函数参数、函数值等),可以将光标移到strcat任意一个字符下,按Ctrl+F1,屏幕上将显示strcat函数的使用方法及该函数所在的头文件。这里没有对每一个编辑命令作过多地解释,读者可以在相应的编辑区内,根据在线帮助的提示试探1~2个命令后就可以明白其使用方法。

我们用Turbo C2.0的编辑环境编一个小程序为例,演示一下编程过程。

在“File”菜单下选择“New”子菜单,开始编辑一个新的程序,请读者将如下的程序键入到编辑区。

mian() { float f = 1.234; printf("\n%e",f); }

屏幕现在的情况应如图4所示。选择“FILE ”菜单中的“Save ”菜单,重新为所编程序起个名字存储起来(例如:test.c )。

2. 程序的编译、链接、运行

当程序编完之后,需要对已经编辑完成的程序进行编译和链接操作,操作界面如图5所示。

界面包括几个方面,编译(Compile )程序,检查程序的语法错误、函数的拼写错误,如果编译成功,将生成临时*.obj 文件(例如:test.obj )。生成执行程序(Make )将完成链接功能,生成可执行文件(test.exe )。也可以用(Build all )完成编译和链接双重过程。热键F9同样完成Build all 功能。读者根据帮助按每个功能尝试一下,便可以逐渐理解每部分功能的含义。“尝试”同样是每个计算机操作人员必须有的胆略。

针对上面编好的test.c 程序,选择“Compile ”菜单中的“Build all ”菜单,屏幕上会出现一个窗口,显示编译链接后的“warning ”“Error ”的数量,有一个链接错误,按回车键出现以下画面,如图6所示。

这个错误信息告诉我们,程序缺少’_main’模块。通过对C 语言的学习,读者知道main 函数是程序的入口,每个程序必须有且只能有一个main 函数。但是我们明明有main 函数,

为什么告诉我没有main函数?我们去看一下程序,发现程序中写的是“mian”,显然是编程的时候键入错误。改成“main”以后重新编译和链接一遍,程序的错误消除。对于初学者来讲,很多编译的错误常常是由于编程者在编程序过程中拼写函数或变量名错误造成的,有了一定的调试经验后,这方面的错误非常容易查找和消除。

完成了编译链接后,程序将生成可执行文件,该执行文件有两种可执行方式,一种是在集成环境下运行;一种是脱离开集成环境,回到DOS下执行,即按组合键Alt+x退出集成调试环境,在DOS环境下通过命令行来执行程序。而在集成环境下运行,还有几种运行方式:全速运行、单步运行。全速运行同在DOS下运行的结果基本相同,运行的方法见图7中的菜单。用Run指令即可实现全速运行。但运行结果在DOS界面中,按组合热键“Alt+F5”即可实现DOS界面与Turbo C集成调试环境之间的切换。

图7 程序运行操作界面

3.程序调试方法

程序的语法错误很容易查找和修改,但找出了语法错误并不代表程序已经完成。对于初学者来讲,很难做到编的程序一点儿错误都没有,常常出现运行的结果与预想的结果不一致的现象,也就是说程序中虽然没有了语法错误,但存在逻辑错误或运算错误,我们将检查程序的算法是否正确、程序的逻辑是否正确、程序的执行顺序是否正确的过程称为调试过程。单步运行就是程序员调试程序的最有效的手段。所谓的单步执行,即一条语句一条语句地执行,观察每条语句的运行结果,判断每条语句运行的正确性,是调试程序算法的基本方法。F7、F8为Turbo C集成环境下单步运行的热键,两个热键的操作有一些区别,F7进入函数内部,可调试函数是否与运行正确,F8直接跨过函数,换句话说,函数被全速运行,一般用在某个函数已经调试通过,利用该函数调试其它功能。

还以test.c为例,选择“Run”菜单下的“Run”子菜单,屏幕“闪”一下,似乎没有什么反应。但实际上程序已经运行完成,运行的结果在DOS界面中。选择“Run”菜单下的“User screen”子菜单,就会看到DOS屏幕上的结果:

1.23400e+00

上面的操作是使程序全速运行,但是编程者看不到程序的运行过程,如果程序员想看一下程序的执行过程怎么办?采用“单步跟踪”的方法,即选择“Run”菜单下的“Step over”或“Trace into”子菜单(热键为“F8”“F7”)。按“F8”屏幕上出现一个“亮条”,在main()的位置(如图8所示),即程序从main()函数开始执行,依次按“F8”则亮条按顺序往下走,显示了程序的执行过程。

此时的“F7”与“F8”的操作没有分别,那么“Step over”与“Trace into”的功能有什

么不同?请在集成环境下编辑下列程序。

float multiply (float x, float y) { return x * y; }

main() { float a=2.0, b=3.0, c; c = multiply (a, b); printf(?°\n%f?±,c); }

编译链接后,分别用“F7”或“F8”单步跟踪,你会发现,当采用“F8”(即“Step over ”)时,针对我们自己编的multiply 函数,程序直接执行过,具体在函数中如何执行的,没办法跟踪到;而采用“F7”(即“Trace into ”)时,程序走到c = multiply(a, b);时,自动跳转到multiply 函数中,然后执行multiply 中的语句。

也许你还不满足,因为在单步执行的过程中,虽然你了解了程序是如何执行的,先后顺序是什么,但是每走一步执行的结果是什么?正确还是错误?如果错误,是在哪一句开始出现错误的?也就是说,调试者要如何才能知道每一步的执行结果。

观察程序运行的中间结果,即需要监视在每条语句执行时,与语句相关的变量的变化情

图9 添加观察窗口操作界面

况。观察变量的方法即在信息显示区添加变量,称为加观察窗口(Add Watch),添加观察窗口的方法参见图9所示,热键为“Ctrl+F7”。

在进行单步调试之前,希望能够知道变量f的变化过程,在“Break/Watch”菜单下选择“Add watch”菜单,屏幕上会出现如图10所示的画面,光标在小窗口里闪烁,在这个窗口中输入你想要观察的变量的名称,本例中输入“f”,按“回车”。

屏幕会出现如图11所示的画面。画面下部Watch栏中出现一个提示信息undefined symbol

‘f’,此时的程序还没有运行,所以会有这样的信息(如果你输入错了变量名称,也会有类似的信息)。按“F8”开始单步调试,当指示程序运行的亮条运行到float f=1.234;语句时,请注意观察,此时Watch窗口内的变量内容发生了变化,出现了如图12所示的画面,此时的f值会让初学者感到莫名其妙,其实此时f=1.234这条语句还没有被执行,也就是说计算机知道了程序申请了一个浮点型的变量f,但是并没有为变量赋初值,此时显示的值是一个随机值。

再按“F8”,Watch窗口中的显示f=1.234,即语句f=1.234;被执行,而且执行的结果是正确的。这就完成了一个单步调试的简单过程。

如果程序非常大,有成千上万条语句,而且某一些语句已经通过了单步调试,可以肯定是正确的以后,如果每次调试新的语句前面的语句都单步执行一遍,显然非常浪费时间。为此,Turbo C2.0提供了一个断点调试的功能,即你预计要在程序的那条语句上停下来,将光标移动到该语句处,从“Break/Watch”菜单中选择“T oggle breakpoint”菜单,你会看到在光标所在的语句上会出现一条红色的亮条,表示程序将在此处停下来,即在程序中设置了一个断点。然后,全速运行程序,程序会在运行到你所选择的那条语句处停下来,进入到集成环境中,你可以通过单步运行观察此语句以后的运行情况。在一个程序中可以加入多个断点,当调试完成后,要删除所有的断点,在“Break/Watch”菜单中选择“Clear all breakpoints”则所有的断点被删除。

4.工程文件的使用方法

当一个程序很大、功能很多的时候,将所有的程序集中在一个C语言的源程序中,常常查询困难,不容易维护。为此,Turbo C集成环境提供了一种方法,可以将多个C语言的源程序分别编译,最终链接成一个可执行程序(.EXE文件)。注意虽然是多个源程序,但仍是一个可执行程序,也就是说,只能有一个main函数。每个C语言的源程序分别存储程序的各个函数模块。

为了将多个C语言源程序组合到一起,Turbo C要求编程人员建立一个“工程”(project)文件,project文件的建立方法非常简单,即在一个编辑环境下,建立一个文本类型的文件,存储为(*.prj)文件,扩展名必须为prj。如要将test1.c、test2.c、test3.c三个源文件建立一个工程文件,则需要在Turbo C的编辑环境下(或在其它的编辑器下)键入:

C:\tc\test1.c

C:\tc\test2.c

C:\tc\test3.c

图13 工程文件的调用界面

存储为test.prj,则一个工程文件建立完成。当需要编译链接时,在图13所示的project 菜单下的project name子菜单中,将test.prj键入,则编译时,系统分别对test1.c、test2.c、test3.c分别编译,检查错误,如无错误则系统将三个程序链接成一个可执行文件(test.exe)。只要project name中存在一个工程文件名,则编译链接时就将编译链接工程文件所指定的程序,而并不是当前编辑区内编辑的程序,所以需要读者注意经常清除project name中的内容。5.带参数的main函数的运行方法 

程序的入口main函数也可以带两个参数,在程序的执行过程中,跟随命令行而输入。但命令行操作就离开了集成环境,调试起来十分不方便,因此Turbo C2.0也提供了在集成环境下接受main函数输入参数的调试方法,即在options菜单下选择arguments后,在弹出的框中输入命令行参数,如图14所示,然后选择save options。在编辑区编下列程序(保存为mainpara.c):

main(int argc, char *argv[])

{

if(argc<2)

exit(0);

printf("\n%s",argv[0]);

printf("\n%s",argv[1]);

printf("\n%s",argv[2]);

}

程序要打印命令行的输入参数,第一个输入参数为函数名本身(mainpara.exe),而第二、三个参数需要命令行输入。在options菜单下选择arguments后,在弹出的框中输入命令含参数,例如:Hellow World。然后选择save options,然后全速执行程序,则DOS屏幕上将会出现以下显示结果:

MAINPARA.EXE

Hellow

World

还有一种调试方法即退出调试环境,回到DOS屏幕,从命令行输入命令如下:

c:>mainpara Hellow World↙

屏幕显示如下信息:

MAINPARA.EXE

Hellow

World

需要注意的是,参数使用空格分割,而不是其他符号。

6.图形库的操作方法 

当然,要想完全掌握Turbo C的所有功能,尚需要读者花一番功夫,本书介绍的操作只是非常简单的操作过程。但在图形操作一章中,为了使图形库能够链接到程序中,需要作如下的设置,如图16所示。将主菜单的Options下的子菜单Linker的下层菜单的Graphics library 置成On状态,操作方法为将Graphics library菜单反显,按“PageUp”、“PageDown”键将会出现两种状态“OFF”、“On”,选择“On”即可。

了解集成调试环境是每个程序员必须熟悉的一个过程,对调试环境的熟悉程度关系到调试程序的速度、是否能够找到程序的错误等至关重要的问题。希望读者不要忽视此过程。

相关主题
文本预览
相关文档 最新文档