1,TURBO C集成开发环境的启动和退出 | 4,程序调试 |
2,集成开发环境的基本使用 | 5,较大程序的实现方法,项目管理 |
3,编程的一般工作过程 | 6,TURBO C系统组成与环境设置 |
这里介绍TURBO C 2.0集成开发环境的基本使用方法。
今天微机上的C语言系统很多,有些新系统的功能更强大。但TURBO C环境有许多特点,在基本的C程序设计课程教学中被广泛使用。本系统既简单又功能完整,开始使用需要理解的概念少,容易入门,特别适合初学者。TURBO C系统对计算机要求低,在任何微机上都能很好运行,编译加工速度快,对于做程序练习和一般的程序开发都很合适。另外,TURBO C的编程和调试环境也很完整,反映了集成化开发环境的特点。掌握了这个程序开发工具的使用方法,不但掌握了一个实用的程序开发工具,也能为进一步学习使用其他编程工具打下很好的基础。
TURBO C 2.0版编程环境的一个主要缺点是不支持鼠标操作,也不能同时编辑多个文件。TURBO系列的后续版本增加了功能,后来还扩充为C/C++语言环境,它们以及Borland C/C++系统的基本使用方式都与TURBO C 2.0系统很类似。
如果读者没用过TURBO C程序开发环境,正式使用前应阅读第1、2、3节,这几节介绍了该系统的基本使用方法和用它编程的基本工作过程。第4节介绍程序调试方面的问题;第5节介绍系统的项目管理功能,主要用于较大程序的开发工作。最后一节介绍TURBO C系统的另一些情况。
1 TURBO C集成开发环境的启动和退出 | BACK TO TOP |
如果所用的计算机上已经安装好TURBO C系统,我们就可以用了。为保证使用中不出现意外,使用同一计算机的人在工作中不互相冲突,应当先做一点准备。
1.1 工作准备
为防止在使用中无意地破坏了TURBO C系统本身(例如不当地删除或改写了系统文件),最好在自己的子目录中使用它。为此,首先要做的工作是:
(1)建立一个自己的工作目录。
(2)将TURBO C系统目录中的TCCONFIG.TC复制到自己的目录中,如找不到该文件,可以在启动TURBO-C后用Options/Save Options菜单命令在自己子目录里建立配置文件TCCONFIG.TC,有关操作见后。TCCONFIG.TC是系统的配置文件,把它复制到自己子目录下,既可以根据需要自己对TURBO C的工作方式做些设定,又不会改变系统的工作方式,不会影响别人使用。
(3)检查操作系统路径变量PATH,保证TURBO C的系统目录在路径中。然后就可以启动TURBO C集成开发环境了。
1.2 集成开发环境的启动
在DOS系统提示符下键入TC并回车,数秒钟后TURBO C开发环境就会启动完毕,屏幕中央将显示系统版权信息。此时按任何键都将使开发环境进入正常工作状态(编辑程序文件的状态)。
以这种方式启动时。,被编辑的程序文件自动定名为NONAME.C。系统进入工作状态后的屏幕情况如图C.1。如果要编辑某个特定文件,可以在启动系统后将该文件装入(方法见后),也可以直接把文件名作为TC命令的参数。如果系统的设定被改动过,启动后的情况也可能与这里介绍的有差别,例如直接装入了某个默认的文件等等。
在集成开发环境正常工作时,屏幕上的整个显示区域被划分成几个部分:在开发环境中工作的按Alt-X键即可退出TURBO C。要求退出时系统可能提问:是否要保存正在编辑的文件(如果文件被修改过),这时应该按照实际需要回答(Y/N)。也可以用菜单命令退出开发环境。
2 集成开发环境的使用 | BACK TO TOP |
在集成环境工作过程中,任何时候都有唯一的一个活动部分,该部分将接受用户的键盘输入(命令等)并做出响应。环境中可能的活动部分有三个,分别是:命令主菜单,编辑窗口,消息(监视)窗口。当某部分处在活动状态时,我们就说开发环境处在这个状态。就是说,集成开发环境的可能状态有三个:主菜单状态,编辑状态和消息(监视)状态。用键盘的功能键可以令系统在不同状态之间转换。图C.2是活动状态转换图,箭头表示状态转换,旁边标出了实现有关转换所用的功能键。
例如,在编辑状态下(编辑窗口活动时)按F10键,系统将转到主菜单状态,再按Esc键可以使系统转回,其余类推。
2.1 编辑状态的命令,编辑器的使用
编辑状态下的集成环境是一个全屏幕的程序编辑器,它提供的编辑命令分成几组。这里只介绍常用编辑命令,这些命令对于编辑程序而言已经足够了。
在下面说明中,^Y表示在按Ctrl键的同时按Y键,^KB表示在按^K之后再按B键。
1)光标移动:光标指明当时的操作点,下面命令移动光标的位置。
→,←,↑,↓ | 向右、左、上、下移光标 |
PgUp,PgDn | 向前、后翻页 |
Home,End | 移光标至当前行首、尾 |
^QR,^QC | 移光标至文件首、尾 |
2)插入删除:输入方式分为插入和改写两种,用功能键切换。
Ins、Insert | 使输入方式在插入/改写方式间切换 |
Enter | 换行符号 |
Del、Delete | 删除光标处的字符 |
BackSpace(←) | 退格键,删除光标前的一个字符 |
^Y | 删除光标所在的行 |
3)块操作命令:一个块就是程序文件里的一段连续字符,块可以整体地复制、搬移、删除、写入到文件等。要进行编辑内容的块操作,首先要定义块:^KB、^KK命令分别把当时的光标位置标记为块的开始和结束位置。
^KB,^KK | 将光标位置标记为块的开始、结束位置 |
^KC | 把被标记的块复制到当前光标位置 |
^KV | 把被标记的块搬到当前光标位置 |
^KY | 将被标记的块删除 |
^KH | 隐去或显示当前的块标记 |
^KW,^KR | 将标出的块写入文件,从文件读入到光标位置 |
4)查找和替换:查找替换操作需要提供其他辅助信息,包括被查找的字符串等,还要指定查找方式。有关方式的信息可以通过功能键F1查询联机帮助信息。
^QF | 查找某一个字符串 |
^QA | 查找一个字符串并用另一个字符串替换 |
^L | 重复前一次查找 |
编辑窗口最上一行是编辑状态信息行,这里显示的不是被编辑程序的内容,而是当时的编辑状态信息,包括:当前光标所处的行列数,输入处于插入状态或改写状态,是否采用自动对齐(Indent)方式等。
自动对齐方式对于写出格式清晰的程序非常有用。系统中可以设定按Tab键一次光标跳的格数,在自动对齐方式下回车,光标将自动与上一行的非空白位置对齐,按退回键(BackSpace,键盘上标←)将使光标退到再前面的一个对齐位置。利用这几个键,可以方便地维持良好的程序格式。
按Tab键的默认跳格数为8个字符,可以自己设置,建议将跳格数设置为4,这样可以避免光标移得太远。设定方式是:依次按键Alt-O、E、T、4及回车,用Esc退出一层菜单后按S命令保存。应该把自己的系统设置存放在自己的子目录里,以免影响别人的使用。按这些键实际上是要求系统执行菜单命令,详情在后面解释。
编辑过程中还可以用功能键向系统发命令,主要功能键在屏幕最下一行提示,包括:
F1 | 查阅系统帮助信息 | F8 | 单步跟踪执行 |
F5 | 扩大/缩小编辑窗口 | F9 | 对当前程序生成可执行代码 |
F6 | 活动窗口转换 | F10 | 转到系统命令菜单 |
F7 | 跟踪执行,用于程序调试 |
按下Alt键并保持几秒钟,提示行将显示出另一组功能键命令,包括:
F1 | 重显示前面最后一次的帮助信息 | F7 | 查找程序中前一个错误的位置 |
F3 | 显示用过的几个文件,供重新装入 | F8 | 查找程序中下一个错误的位置 |
F6 | 活动窗口切换 | F9 | 编译当前文件 |
上述功能键在系统处于消息窗口状态时同样也可以用。除了上面这些之外,在编辑状态下还有一些功能键,常用的有:
F2 | 将当前文件存盘,并继续工作 |
F3 | 装入一个文件,或编辑一个新文件 |
Ctrl-F1 | 关联查询帮助信息,以光标位置的标识符作为查询索引 |
Ctrl-F9 | 运行当前生成的可执行文件 |
2.2 菜单状态的命令
系统菜单用于发各种操作命令。在系统的菜单状态下发命令的方式有两种。在子菜单弹出的状态下,同样可以用这两种方式发子菜单命令:
编程环境的菜单命令很多,在主菜单的每个菜单项下(除了Edit项之外)都有一级或几级子菜单。这里只对其中最常用的一些命令做些简单介绍:
File子菜单包含新文件编辑,编辑文件装入和保存,目录显示与转换,临时转入DOS系统,退出TURBO C环境等命令。
Edit命令使系统转到编辑状态。
Run子菜单命令包括:运行当前程序(子菜单项Run,热键为Ctrl-F9,若源程序修改过,系统将重新编译之后再运行),“User Screen”项(热键Alt-F5)用于查看程序运行的输出屏幕情况(用Esc退回)。本菜单还包括几个用于以调试方式运行程序的命令项,其使用在后面介绍。
Compile子菜单用于要求系统对源程序进行编译加工。包括:编译当前文件,生成目标代码文件(Compile To OBJ项,生成目标文件,.OBJ文件);连接目标模块,生成可执行程序(Link EXE File项,生成可执行的文件),连续完成程序编译和连接(Make EXE File项)等。“Get Info”项用于查看当前文件的有关信息。
Project子菜单用于使用项目管理功能开发较大的程序。有关问题的讨论见C.5。
Options子菜单用于设置和修改与系统工作方式有关的各种参数,它有许多子菜单,分为若干层。初学者对许多选择的意义不清楚,最好不要随便改动系统的原有设置。如果无意中改变了某些设置,只要不执行“Save Options”命令项,系统退出后再启动工作方式不会改变。这里只建议改变Environment 子菜单中Tab 项,将原设置值8改为4,这样在编辑程序时看起来舒服些,也避免了几次退格就使程序正文超出屏幕范围。修改设置后用Esc键退回,并执行“Save Options”项保存。C.6节介绍有关情况。
Debug和Break/Watch菜单用于程序调试,这方面问题见C.4节。
可以看到TURBO C环境的常用命令都可以通过功能热键的方式使用。熟悉一些常用的命令热键可以提高工作效率。
2.3 消息窗口状态
在编辑状态下用功能键F6能使系统转入消息窗口状态。在消息窗口状态下,提示行列出的各功能键仍可以使用。
前面讲过,系统用消息窗口显示程序加工中发现错误的有关信息,在出现错误时系统将自动进入消息窗口状态,窗口里显示出一些错误信息行。用光标移动键可以将消息窗口中的亮条移动到任一个消息行,与此同时,系统将自动对该消息在编辑窗口的源程序中定位,把编辑窗口中的亮条和光标移到产生这个消息的位置,即编译程序发现程序错误的地方。
程序开发过程中利用消息自动定位机制查找程序错误的方法在下面介绍。
3 编程的一般工作过程 | BACK TO TOP |
在TURBO C集成开发环境中编程,一般的工作过程如下:
(1)启动集成环境。一般用:
TC | 被编辑文件自动设为NONAME.C(可以另行设置默认文件)。 |
TC 文件名 | 以指定文件作为被编辑文件。 |
如果指定文件存在,系统自动装入它;否则就按名字建立新文件。若指定文件时未提供扩展名时自动加.C扩展名。
(2)用开发环境的编辑器输入源程序代码或修改已有的代码。
(3)在源程序编辑完成后,用功能键Alt-F9(或通过菜单)发命令,要求系统对当前源程序进行编译。这也要求系统帮助检查源程序中的语法错误。
(4)如果编译中发现问题,错误和警告信息将显示在消息窗口。每行表示一条错误(或警告)信息,包括发现问题的位置和有关说明。这时系统自动进入消息窗口状态,亮条位于一个消息行上,编辑窗口里用亮条和光标指出发现问题的确切位置。
此时应当仔细阅读消息行的文字内容,观察系统所指程序位置及其上下文,分析出现问题的原因。用F6键切换到编辑窗口改正程序中的错误。然后再用F6键切换回消息窗口,把亮条移到下一个消息行,定位和改正下一个错误。
检查程序错误时应注意几点:1)有时程序中一个错误会引发一系列错误信息,工作中不应被这种情况所迷惑,改正了一些错误后应及时对源程序重新进行编译;2)如果修改错误时增删了行,或是一个行里有多个错误,更正前面错误时增删了字符,就可能导致系统对错误定位不准,此时应该重新编译;3)系统给出的警告信息一般都说明程序中有问题,因为系统发现了可疑情况。对于警告信息同样要逐个仔细分析。除非明确认定不是问题,否则绝不能简单地认为不是错误而不予理睬。实际上,很多警告都是因为程序中确实有严重的隐含错误。
重复(3)(4)两个步骤,直到排除了系统发现的所有错误。
(5)源程序能正常完成编译,没有错误时可以进入下一步:用功能键F9(或菜单命令方式)发出连接命令,要求系统建立可执行程序。在连接中发现新错误也需要仔细检查和修改程序。连接时发现的错误一般是由于函数名或外部变量名字写错,或者一些函数、外部变量没有定义引起的。系统不能对连接错误给以自动定位,只能提供有关的名字信息等。对于这类问题,可以借助编辑器的字符串查找命令进行定位。
(6)连接正常完成后,可执行程序已经生成完毕。这时可以启动程序,进行运行和调试。用Ctrl-F9或菜单Run命令发出运行命令,在程序运行中和运行后检查其表现是否正常。用Alt-F5功能键或菜单可以切换到用户屏幕,检查程序输出。如果程序运行中发生运行错误,或者输出结果不正确,则需要进一步检查源程序代码,找出并排除错误,直到得到正确的程序为止。下面要介绍的集成开发环境调试功能可以帮助查找在程序运行中出现的错误。
为能高效地编写出正确程序,除了认真地分析要解决的问题、熟悉程序语言(C 语言)、熟悉编程环境功能之外,还有一些应当注意的事项,主要是:
4 程序调试 | BACK TO TOP |
调试是程序开发过程中一个必不可少的阶段。程序初步完成后要经过调试,试验性地运行,设法确认程序无问题,或者找出程序中潜藏的错误。调试的基本出发点是设法发现程序中的错误,基本方法是选择一些数据实例,令程序用这些数据运行,考查运行过程和有关结果。如果在实例运行中发现错误,则应设法确定出错原因并予以排除。
经过反复调试运行和纠正错误,就可能使程序中的错误变得更少。对小程序,到某个时候有可能认为程序中已经没有错误了。对于大程序,实际软件系统,人们通常不敢说这种话,只说:这个系统已经经过仔细调试,发现的错误大部分已经解决,现存的错误还有……。大软件实在太复杂,以至于可能无法完全把握它们,这是软件世界中一个客观情况。计算机领域的人们都知道一句名言:调试只能说明程序中有错误,不能说明其中没有错误。程序调试有其内在局限性。但即便如此,调试仍然是软件开发过程中必要的一环,需要认真对待。
如果在程序调试中发现了错误,就要设法确定问题原因,确定程序中出错的位置。寻找出错位置的基本方法是对程序本身做进一步分析,另一个常用方法是检查程序的执行流程和运行中各变量的变化情况。为此可以在源程序适当位置插入输出语句,输出有关变量的值检查。这个方法的缺点是比较麻烦,而且对程序的运行过程无法控制。
今天的开发环境都为程序调试和排错提供了强有力的支持。TURBO C 集成开发环境的功能很典型,其他系统的功能都与它类似。TURBO C提供的与调试有关的功能包括两方面:一是能按照源程序中的语句一步步地执行,或者要求它执行到某语句时停在那里;另一功能是能够在运行中直接观察指定变量(或表达式)的值。
(1)单步执行及控制执行,用于指定程序的执行方式。命令有三个,可以通过功能键发命令,也可以通过菜单选择:
F7 | 单步执行。令程序执行一个语句,遇到函数调用时执行进入函数体。 |
F8 | 与F7类似,但执行不进入函数,把函数调用简单地看作一个语句。 |
F4 | 使程序连续执行,直到达到当前光标所在的语句,停在那里。 |
(2)断点(BreakPoint)设置。断点是源程序中标出的位置,程序执行达到断点时将自动停住。可以同时设置多个断点。
Ctrl-F8 | 断点设置与取消。在当时的光标位置设一个断点。如果光标当时放在已设置的断点上,则取消这个断点。 |
在程序中设了断点以后,如果再要求程序连续运行(通过菜单命令或者功能键Ctrl-F9),程序将执行到所遇到的第一个断点并停在那里。此后再命令程序继续,它将执行到下一个断点位置。断点和单步执行等可以混合使用。
(3)设置监视(Watch)表达式。在调试运行时,屏幕下部的消息窗口自动变为监视窗口,用于显示被观察表达式(可以是简单变量)的值。这种表达式称为监视表达式。在程序的执行中止时,例如在单步执行中,或在连续执行遇到了断点时,在监视窗口中将显示被监视表达式当时的值。与监视表达式有关操作包括:
Ctrl-F7 | 增加一个监视表达式,系统弹出一个会话小窗口,要求输入表达式。可以输入变量名或任何表达式。 |
F6 | 转到监视窗口,或由监视窗口转回。 |
在监视窗口状态下,可以用移光标键将亮条上下移动;还可以用Delete键删除亮条所在的监视表达式。
此外TURBO C还提供了执行中断键Ctrl-Break。在程序执行中按这个组合键,可以使程序停止在当时的执行位置,以便进一步检查。利用开发系统的这个功能,我们可以使程序在执行中任何时刻停下来,停在任何地方,查看当时变量的情况;可以一步步执行,观察某些变量或表达式值的变化。通过这些观察,能帮助我们分析认识问题,找出错误的根源。
5 较大程序的实现方法和项目管理 | BACK TO TOP |
当程序复杂时源代码会很长,如果把全部代码放在一个源文件里,写程序,修改、加工程序都会很不方便。程序文件很大时,装入编辑会遇到困难;在文件中找位置也不方便;对程序做了一点修改,调试前必须对整个源文件重新编译;如果不慎把已经调试确认的正确部分改了,又会带来新的麻烦。在实践中人们体会到:应当把大软件(程序)的代码分成一些部分,分别放在一组源程序文件中,分别进行开发、编译、调试,然后把它们组合起来,形成整个软件(程序)。C语言本身支持这种开发方式。当我们写的程序较大时,上述问题就会反应出来,因此应当学习“大程序”的开发方法。
把一个程序分成几个源程序文件,显然这些源文件不是互相独立的。一个源文件里可能使用其他源文件定义的程序对象(外部变量、函数、类型等),这实际上在不同源文件间形成了一种依赖关系。这样,一个源文件里某个程序对象的定义改动时,使用这些定义的源文件也可能要做相应修改。在生成可执行程序时,应该重新编译改动过的源文件,而没改过的源文件就不必编译了。在连接生成可执行程序时,要把所有必要的模块装配在一起。这些管理工作可以由人自己做,但是很麻烦。TURBO C集成开发环境的项目管理功能能帮助我们处理这些问题。利用这种功能,开发大程序的工作将更加方便。今天的各种程序开发环境都提供了类似的管理功能。
用C语言写大程序,应当把源程序分成若干个源文件。其中有:
(1)一个或几个自定义的头文件,通常用 .h 作为扩展名。头文件里一般放:
#include预处理命令,引用系统头文件和其他头文件;
用#define定义的公共常量和宏;
数据类型定义,结构、联合等的说明;
函数原型说明,外部变量的extern说明;等等。
(2)一个或几个程序源文件,通常用 .c 作为扩展名。这些文件中放:
对自定义头文件的使用(用#include命令);
源文件内部使用的常量和宏的定义(用#define命令);
外部变量的定义;
各函数的定义,包括main函数和其他函数。
不提倡在一个 .c 文件里用#include命令引入另一个 .c 文件的做法。这样往往导致不必要的重新编译,在调试程序查错时也容易引起混乱。应该通过头文件里的函数原型说明和外部变量的extern说明,建立起函数、外部变量的定义(在某个源程序文件中)与它们的使用(可能在另一个源程序文件中)之间的联系,这是正确的做法。
使用TURBO C项目管理功能的方法是:
6 TURBO C系统组成与环境设置 | BACK TO TOP |
正常的TURBO C系统的有关文件都存在一个目录下,目录名通常是TC,下面称之为TURBO C系统目录或系统目录。系统目录下存放着一组可执行程序,包括编译、连接程序,开发环境,一些其他工具程序。这里还有一些程序实例,其中的.c文件、.h文件及.PRJ文件等都与程序实例有关。此外还存储着TURBO C系统的一些其他功能模块文件。
系统目录里有两个子目录:INCLUDE目录里存放着系统的所有头文件,包括标准库头文件和一些扩充头文件;LIB子目录里存放与函数库、运行系统有关的一组代码文件。所有头文件都是普通文本文件,可以用编辑器观看,但切记不要修改。
TURBO C系统的编译程序(TCC.EXE)、连接程序(TLINK.EXE)都可以作为单独的工具,通过命令方式使用。在这种使用时需要提供许多参数,用起来不大方便。有关的参数和意义需要查阅有关手册。如果以不带参数的形式运行这两个程序,它们将显示使用方式的信息。通过开发环境可以更方便地使用它们。其他工具软件的情况请参考有关手册。
系统目录下的文件README(可以用编辑程序或系统目录下的README.EXE阅读)和几个.DOC文件提供了系统的一些信息。
开发环境的设置
TURBO C开发环境在启动时将设法寻找名字为TCCONFIG.TC的配置文件,若发现就按照文件指定方式工作,否则就按默认方式工作。系统启动时首先在当前目录里找这个文件,这也是前面说应当自己复制该文件的理由。下面介绍如何通过开发环境改变配置文件中的设置。
开发环境的Options菜单用于改变系统工作方式,改变设置后可用Save Options命令把新设置保存到配置文件里,以便以后使用。Options菜单有许多项目,大部分都有分层的子菜单。下面做些介绍,对其中在基本程序设计中可能涉及的东西解释得详细一点,其他只做简单解释,有的完全忽略。把亮条移到一个菜单项上按F1键,将能够看到有关的帮助信息。
1)Compiler。与编译有关的选项,包括:
Model | 选择编译模式,这是一个与DOS系统有关的选项; |
Defines | 定义编译中使用的一些符号常量,与用预处理命令在源文件中定义的作用相同,在这里定义可以避免修改源程序。 |
Code generation | 指定编译生成代码的各种选择方式。 |
Optimization | 指定对编译结果的优化方式。 |
Source | 对源程序形式的选择,包括:最大标识符长度(超过这个长度的部分将被忽略,默认值为32);是否允许嵌套形式的注释(默认值是off);是否只允许ANSI C的标准关键字。 |
Errors | 与错误检查有关的各种设置。可以设定编译过程的停止条件(发现了多少错误或警告时停止处理),是否显示警告信息,对一些情况是否进行检查等等。通过后面几个子菜单个项目的on/off可以对各种问题的检查加以控制。 |
2)Linker。包含一些连接方式开关,如连接时遇到重复标识符是否给出警告,连接时是否区分名字的大小写等等。
3)Environment,设置开发环境本身的工作方式,包括:
Message Tracking | 怎样追踪错误信息:不追踪;只对当前文件;对所有文件。 |
Keep message | 前次的错误信息是否保留。 |
Config auto save | 是否自动保存系统设置。 |
Edit auto save | 是否自动保存当时编辑的文件。 |
Backup files | 文件保存时是否建立备份文件(以.BAK为扩展名)。 |
Tab size | 设置Tab键的跳格数。 |
Zoom windows | 扩大/缩小编辑窗口, F5键。 |
Screen size | 选择屏幕方式,分25行方式和43/50行方式。 |
4)Directiries。目录设置。有关目录必须正确设置,否则系统可能无法正常工作。这些目录包括:Include目录,其中至少应包含系统的头文件目录;Library目录,应包含系统的库文件目录;Output目录指定程序加工的输出(目标文件、可执行文件等)放在哪里,不指定则放在源文件同一目录里;TURBO C目录,指定系统目录的位置。前两个选项可以指定多个目录,目录名之间用分号分隔。所有指定都应该采用完整的路径描述。后面还有两项与方便编程的Pick file有关。
5)Arguments,程序运行的命令行。填入这里的信息将作为程序命令行,例如为程序提供命令行参数(参看《从问题到程序》的第7.3.2节)。
该菜单最后的Save options项用于把当前设置保存到文件,Retrieve options项用于装入以前保存的设置文件。
本页由裘宗燕建立和维护(2001年2月18日) | BACK TO TOP |