vc++60上机指导.docx

上传人:b****2 文档编号:12926408 上传时间:2023-04-22 格式:DOCX 页数:37 大小:552.26KB
下载 相关 举报
vc++60上机指导.docx_第1页
第1页 / 共37页
vc++60上机指导.docx_第2页
第2页 / 共37页
vc++60上机指导.docx_第3页
第3页 / 共37页
vc++60上机指导.docx_第4页
第4页 / 共37页
vc++60上机指导.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

vc++60上机指导.docx

《vc++60上机指导.docx》由会员分享,可在线阅读,更多相关《vc++60上机指导.docx(37页珍藏版)》请在冰豆网上搜索。

vc++60上机指导.docx

vc++60上机指导

上机指导1:

VisualC++集成开发环境

能够调试C/C++程序的编译系统和开发环境种类很多,如TurboC(Borland公司20世纪80年代推出的C语言集成开发环境,曾在国内高校教学中风靡一时)、GCC(功能强大、性能优越的编译器,能用于Windows、Unix、Linux等不同平台,属于自由软件)、C++Builder(Borland公司的一种主要基于Windows平台的C++集成开发工具)以及VisualC++等,其中VisualC++是Microsoft公司推出的C/C++可视化集成开发环境,现在已成为专业程序员进行软件开发的首选工具。

一、DeveloperStudio窗口简介

当VisualC++启动后,一个名为DeveloperStudio的窗口即被打开,如图1-1所示。

除了具有一般Windows应用程序的标题栏、菜单栏和工具栏等部件以外,它还包含其他3个独有的子窗口:

工作区窗口、编辑窗口、输出窗口。

图1-1典型的DeveloperStudio窗口

上述各种部件,包括子窗口、菜单栏和工具栏的位置不是一成不变的,可以根据个人

的喜好用鼠标移动来重新安排。

1.工作区窗口

工作区窗口可以显示当前工程项目所包含的类、文件和资源。

由图1-1中可见.对于一般Win32控制台应用程序而言,它会有两个显示页面。

ClassView页面用于显示当前项目中的函数和全局变量,以及类和类成员的图标和名称;FileView页面用于显示当前项目所包含的所有文件列表,包括源文件、头文件和资源文件等。

2.编辑窗口

又称文档窗口或代码窗口,用于显示和编辑程序代码。

VisualC++的程序文本编辑器功能非常强大.除了具备剪贴、复制、粘贴、删除、查找和替换等常用编辑功能.可以编辑程序、一般文本文件和网页外,还能与调试器等其他开发工具一起配合,具有断点设置、提供编程指导信息等高级功能,从而使应用程序的编辑修改和调试工作集成一体,非常方便。

3.输出窗口

输出窗口又称消息窗口,用于显示编译调试结果或错误信息。

二、编辑、调试和运行程序

在VisualC++中.系统通过Project(工程项目)来管理存放在后缀为cpp文件中的源程序,所以要编写和运行程序,首先必须建立一个Project。

1.创建工程项目

(1)启动VisualC++6.0.如图1-2所示。

图1-2VisualC++6.0启动

(2)选择File→New选项,在弹出的对话框中(当前页面为Projects选项卡)选择Win32ConsoleApplication(Win32控制台应用程序)。

(3)为应用项目取一个名字,填写在选项卡右上方的ProjectName(项目名称)编辑框中.并检查下面的Location(位置)中列出的路径是否合适正确,该路径可更改到任何编器者希望的目录位置,如图1-3所示,然后单击OK按钮。

图1-3新建一个项目

(4)这时会出现一个对话框,提问要生成的项目类型,如图1-4所示。

选择AnEmptyProject(空项目),单击Finish按钮。

会弹出一个显示所生成新项目信息的对话框,如图1-5所示。

在检查无误后单击OK按钮。

图1-4确定项目类型

(5)这时屏幕上会显示一个空项目,同时系统会在所指定的磁盘路径下创建一项目同名的文件夹,并在该文件夹下自动生成两个文件名与工程项目相同、扩展名分别为dsp(工程项目文件,用于存储当前项目的设置及其他相关信息)和dsw(工作区文件,包含工作区的定义和项目所包含文件的信息)的文件,以及一个名为Debug的子文件夹存放编译、链接过程中生成的中间文件和最终生成的可执行文件)。

图1-5项目相关信息

2.向工程项目添加源文件

(1)再次选择File→New选项,在弹出的对话框中(当前页面为Files选项卡)选择C++SourceFile(C++源程序)。

(2)为程序取一个名字(可与项目名相同,也可以不同)填写在选项卡右边的File编辑框中,如图1-6所示,然后单击OK按钮。

图1-6建立文件

(3)此时会在集成开发环境右侧的编辑窗口中出现一个空文件,如图1-7所示,在这里可以输入源程序代码。

-

(4)程序输入完成后,应仔细检查一遍,然后就可以编译调试了。

图1-7代码编辑界面

3.编译和链接

(l)通过编译,能够将源程序转换为用机器指令表示的目标程序代码。

选择Build菜单的Compile选项(或直接按CtrI+F7键).就开始了对源程序的编译过程。

编译结束后,如果源程序中有语法错误,则出错信息会在屏幕下方的输出窗口中显示出来,如图1-8所示。

根据该提示对程序进行修改后,再重新编译。

编译成功后,会在Debug子目录中生成一个目标文件(后缀为obj)。

1-8编译器的出错报告

(2)程序通过编译后,还要进行链接操作,它负责将目标代码与系统或用户类库链接并生成可执行的程序。

选择Build菜单的Build选项(或直接按F7键)来链接目标文件。

链接结果及链接错误信息也会在输出窗口显示。

链接成功后.生成可执行文件(后缀为exe)。

4.运行程序

程序经编译、链接成功后,选择Build菜单的Execute选项(或直接按Ctrl+F5键),

就可运行程序,结果会在弹出的字符界面窗口中显示,如图1-9所示。

图1-9程序运行结果

注意:

(1)对于初学者而言,在编译、链接和运行过程中总会出现或多或少的错误。

因此,程序调试就成为编程中必不可少的环节。

图1-8仅给出了一种最为简单的语法错误的调试方法,其他相关内容将在稍后几章的上机指导部分逐步展开。

(2)一个工程项目可以包含多个源文件,但含有main()函教的源文件只能有一个,也就是说一个工程文件只能有一个main()函数,否则会发生编译错误。

因此,在编辑、调试和运行完一个程序后,如果要开始编写另一个新的程序,必须关闭原工程并重新建立一个工程项目。

三、VisualC++项目文件说明

.dsp

项目参数配置文件,这个文件太重要,重点保护对象。

.dsw

工作区文件,重要性一般,因为它信息不多,容易恢复,双击它可以启动DeveloperStudio。

以下文件在项目中是可丢弃的,有些文件删除后,VC会自动生成的。

.clw

ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下。

有时候ClassWizard出问题,手工修改CLW文件可以解决。

如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重建。

.ncb

无编译浏览文件(nocompilebrowser)。

当自动完成功能出问题时可以删除此文件。

build后会自动生成。

.opt

工程关于开发环境的参数文件。

如工具条位置等信息;(可丢弃)

.aps

(AppStudioFile),资源辅助文件,二进制格式,一般不用去管它。

.plg

是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大。

在Tools->Options里面有个选项可以控制这个文件的生成。

.hpj

(HelpProject)是生成帮助文件的工程m用microsfotHelpCompiler可以处理。

.mdp

(MicrosoftDevStudioProject)是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的DSP格式。

.bsc

是用于浏览项目信息的,如果用SourceBrower的话就必须有这个文件。

如果不用这个功能的话,可以在ProjectOptions里面去掉GenerateBrowseInfoFile,可以加快编译速度。

.map

是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着。

.pch

(Pre-CompiledFile)是预编译文件,可以加快编译速度,但是文件非常大。

.pdb

(ProgramDatabase)记录了程序有关的一些数据和调试信息,在调试的时候可能有用。

.exp

只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息。

一般也没什么用。

四、更有效地管理:

在一个工作区窗口容纳多个工程项目

在上面的注意事项

(2)中有:

一个工程项目可以包含多个源文件,但含有main()函教的源文件只能有一个,也就是说一个工程文件只能有一个main()函数,否则会发生编译错误。

因此,在编辑、调试和运行完一个程序后,如果要开始编写另一个新的程序,必须关闭原工程并重新建立一个工程项目。

但是在实验过程中,编辑的程序一般都很小,关闭原工程并重新建立一个工程项目不太方便,也不利于管理。

在VisualC++的DeveloperStudio窗口的工作区中允许同时存在多个项目。

1.创建工程项目

首先必须建立一个Project。

如图1-2到图1-5。

2.添加新的项目

(1)选择Project→AddToProject→New选项,如图向项目添加新的内容。

在弹出的对话框中选择Projects选项卡,选择Win32ConsoleApplication(Win32控制台应用程序)。

图1-10向项目添加新的内容

(2)为应用项目取一个名字,填写在选项卡右上方的ProjectName(项目名称)编辑框中.Location(位置)中列出的路径一般应与第一个创建的项目在同一路径下。

(3)重复

(2)的步骤,可以添加多个项目到第一个创建的项目的工作区中。

(4)用鼠标选中第一个创建的项目,将其删除,如图1-11。

这样做的好处是不在这个项目中创建源程序文件,在项目的文件夹中不会出现相应的.CPP文件,后来创建的项目的源程序文件都在各自相应的文件夹中,便于查看和管理。

图1-11删除第一个创建的项目

3.向工程项目添加源文件

选择Project→SetActiveProject出现单选子菜单,选择当前要操作的工程项目,如图1-12所示,然后就可以向工程项目添加源程序文件了。

以后就可以通过切换不同的当前项目,进行程序的编译、运行和管理了。

图1-12设置当前项目

五、源代码编辑器介绍及应用

VisualC++IDE的源代码编辑器是一个功能强大的文本编辑器,可用于编辑多种类型的文件,如C/C++头文件、C++源文件、Text文本文件和HTML超文本文件等。

当打开或建立上述类型文件时,该编辑器将自动打开。

VisualC++IDE源代码编辑器除了具有一般的复制、查找和替换等功能外,还具有一些便于编程的特色功能。

如在编辑C++源程序时,在编辑窗口中根据C++语法规则对不同的语句元素用不同的颜色显示,换行时能自动缩进合适的长度。

1.源代码编辑器具有自动提示功能

当用户输入源程序代码时,编辑器会显示对应类的成员函数和变量,如图1-13所示。

用户可以在成员列表中选择需要的成员,就减少了手工输入量,也避免了用户手工输入错误。

当输入函数调用语句时,编辑器会自动提示函数的参数个数和类型,如图1-14所示。

用户还可以将光标指向变量、函数或类,此时编辑器将给出对应的变量类型、函数声明或类的信息。

在编辑状态下发现成员变量或函数不能显示,删除该项目扩展名为.ncb文件,重新打开该项目。

图1-13源代码编辑器的自动提示功能

图1-14自动提示函数的参数个数和类型

2.自动补全单词功能

在输入较长的标识符时,单击鼠标右键,从弹出的下拉菜单中选择CompleteWord命令可以自动补全单词的其余部分。

为了更方便地使用自动补全单词功能,最好为CompleteWord命令设置一个快捷键。

执行Tools|Customize|Keyboard命令,在Category栏选择AllCommands项,在Editor栏选择Text项,在Commands框中找到命令项CompleteWord,将光标置于Pressnewshortcut框中,按下需要的快捷键组合,如Alt+Space组合键,然后单击Assign按钮。

设置快捷键后,在输入标识符、关键字和变量时,按下设置的快捷键如Alt+Space键就可以自动补全单词的其余部分,如图1-15所示。

图1-15源代码编辑器的自动补全单词功能

3.括弧的输入

这是上机编程的一个良好习惯。

C++编程中用到的括弧有()和{},在源程序代码的输入过程中如果有括弧要先打上一对括弧()或{},然后再在其中输入代码。

这样做的好处是打了开始的括弧’(’或‘{’,后不会忘了打结束的括弧’)’或‘}’。

尤其是对于多个括弧嵌套的情况,尤为重要。

不然的话程序在编译时可能会由于少了一个括弧而出现的大量语法出错警告。

也可以去下载一个VC助手插件安装,它会在打上一个’(’后,自动添加一个’)’。

4.检测程序中的括号是否匹配

把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”。

如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。

5.格式化一段乱七八糟的源代码

当程序代码格式乱七八糟的时候怎么办?

可以慢慢的用TAB,SPACE,去调整,如果是一个成千上万行的可就够受的了.其实可以先选中你想调整的代码,然后在"edit->advanced->formatsecetion",马上乱糟糟的代码就看上去清爽多了.当然也可以选中后用"altf8",也有同样的效果。

上机指导2:

语法错误

虽然C\C++语言在书写程序时比较自由、随意,但仍有一些严格的语法规定,加之编程者对问题的理解难免会有或多或少的偏差,在编写程序过程中出现某些错误一般是不可避免的。

常见的编程错误主要分为两类:

(1)语法错误:

这类错误是在编译和链接过程中就能发现的语法错误或函数调用错误,例如语句结尾缺少分号、变量名或函数名的拼写错误、括号个数不匹配等。

(2)运行错误:

这类错误是在程序运行期间出现的逻辑错误,主要表现在程序输出结果不正确或程序运行会造成计算机死机、重启、应用进程死锁或者输出信息混乱等问题。

这种错误一般比较难以跟踪定位,其根源大多为算法设计有缺陷。

解决语法错误的方法比较简单,主要是通过VisualC++的编译和链接功能来完成。

1.查看和修改编译错误

编译可以将编程者输入的源程序转换为计算机能够执行的机器指令代码。

如果编译成功,会生成目标文件;否则,即在编译的过程中发现了语法错误,则系统进入编辑查错状态。

这时在VisualC++集成开发环境底部的输出窗口中会显示出错误的类型、错误发生的位置以及错误的原因,提示编程者修改程序。

错误信息的格式为:

源程序路径(行):

错误代码:

错误内容

表示源程序的某一行有一个错误,并给出了错误代码和内容。

例如:

D:

\E010I\E01.CPP(9):

errorC2146:

syntaxerror:

missing’;’beforeidentifier’sum’

就说明错误位于计算机D盘E0101目录下E01.CPP文件的第9行错误代码是C2146:

标识符sum之前的某个语句结尾少写了一个分号“;”。

上例错误代码前面的Error表示这是一个严重错误,它必须被改正,否则程序无法运行。

除此以外,有时编译器可能还会给出一种Warning(警告)信息,表示源程序里有可能是错误的,也有可能不是错误,但这种错误并不违反语法规则。

例如:

D:

\E0101\E01.CPP(l0):

warningC4700:

localvariable'i'usedwithouthavinginitialized

就说明计算机D盘E0101目录下E01.CPP文件的第10行有一个错误代码是C4700的警告,即局部变量i未经初始化就被使用。

一般来说,如果只出现警告信息,还是可以继续链接、运行程序。

于是,有些编程者就经常忽视这些编译警告,继续链接、运行程序,直到出现了某种运行错误后才再回过头来检查这些警告信息。

这是非常糟糕的工作习惯,因为运行错误比编译错误更难于检查和修改。

因此,建议在出现编译警告时最好还是仔细检查一下.设法消除引起警告的原因。

用鼠标双击一条错误信息提示可使程序文本编辑器作出反应,在其左框上会显示一个箭头指出对应的出错语句,以便修改源程序。

由于VisualC++编译程序的能力所限,很多情况下,虽然它能够查出错误,但对错误的说明可能并不十分准确,而且指出的错误条数一般偏多,常常是由于一处出错而引发了一系列错误提示信息,让人不容易搞清楚到底错在什么地方。

而真正错误的原因也许很简单,例如少写了一个括号、分号或拼错了一个单词,都可能引起一连串的错误提示。

因此.在检查程序时要细心,一般从第一个错误查起。

首先查看这个错误出现的地方及其前面的一小段程序(很多情况下真正的错误之处都在报错语句之前的某个语句)。

在查出并改正这个错误之后,可以看一看后面的几个错误说明中的错误位置是否和第一个错误的位置相邻近。

如果是,则有可能反映的还是那一个错误,这时可以再编译一次,往往会发现错误的散目已经大为减少。

重复这个过程直到所有的错误均已纠正,然后再次链接、运行该程序。

一般来说,一段源程序从输入编辑到通过编译,往往要重复若干次编译、修改、再编译的过程。

2.查看和修改链接错误

在程序的链接阶段,如果无法将目标代码与系统或用户类库链接并生成可执行的程序,也会在VisualC++集成开发环境底部的输出窗口中显示错误提示。

与编译错误提示信息不同的是,链接错误一般不会指出错误发生的详细位置。

这是因为链接的对象是目标程序,和源程序格式有很大差别,不易确定错误的准确位置。

一般而言,链接阶段出现的错误比较少。

如果出现,大多数是因为在程序中调用了某个函数,而链接程序却找不到该函数的定义。

这时最有可能的原因是拼写错了函数的名称,如将主函数main()写成了mian()。

另外,如果程序的规模较大,需要分为若干个源程序文件分别编译然后链接时,则也可能出现全局变量重复定义或找不到等错误现象,

在找到链接错误的原因并改正以后,一定要返回去重新编译后方能再次链接.否则,虽然源程序已经修改,但进行链接的目标程序还是以前有错误的目标程序,再次链接仍然会产生同样的错误。

上机指导3:

运行错误

运行错误是在程序运行期间出现的错误,一般是由于编程者在程守设计上的逻辑错误所导致。

出现运行错误的程序,虽然能够通过编译和链接检查,但程序的实际运行结果和编程者对程序结果的期望不符,或者会在运行时造成计算机死机、自行重启、应用进程死锁或者输出信息混乱等问题。

相对于编译和链接错误来说,运行错误的查找和判断比较困难。

这是因为编译和链接错误分别是由编译程序和链接程序检查,尽管有时它们报告的出错信息和错误的实际原因之间有一些差距,但总还可以作为查错时的一种参考。

而运行错误就不同了,一般很少或根本没有提示信息,只能依靠编程者的经验来判断错误的性质和位置。

下面介绍一些常见运行错误。

程序算法设计的错误或缺陷是大多数逻辑错误产生的原因。

严重的算法设计.错误来自于编程者对原问题的理解出现偏差,很容易识别。

算法考虑不周全在实践中出现的很多,例如.编程者忘记了处理边界和极端条件等特殊情况,如下面的循环:

while(count)

{

.

.

.

count--;

}

编程者的本意是进行count次循环后跳出,看似没有问题。

但是,如果在进入循环前count的值是负数的话(还记得吗?

所有非0整数都对应的是true),以上的循环就成了一个“死循环”。

对于这种类型的错误,由于它在语法上没有任何问题,因此编译程序根本无法查出.只有到了程序运行之后才有可能发现。

再如,在图1-1中利用海伦公式计算三角形面积的例子实际上是不严密的,应该首先确认用户输入的三条边长是否能够构成一个三角形后,方可进行后面的计算,否则计算结果是没有意义的。

诸如此类的问题之所以发生是缘自人们解决问题的传统习惯。

通常人们在用手算时不用事先考虑得十分清楚、复杂,因为随时可以在发生了问题以后再提出解决的办法。

但是程序是为计算机设计的,而计算机并没有自行应变的能力,编程者必须事先将一切可能遇到的情况都考虑到。

还有一种常见的逻辑错误是由于编程者在输入程序时出现的打字错误所造成。

例如.将判断条件中的“>=”误输入为“>”,将相等判断的两个等号“==”误输入为只有一个等号的赋值号“=”,甚至将“+”误输入为“一”等,这些看似幼稚的错误在以往学生上机实践中都曾多欢发生。

另外.在编程时必须保证对数组下标的引用是介于0和数组大小减1之间的,否则会导致数组下标越界问题。

因为C/C++语言本身并没有提供数组下标越界检查,一旦编程者不小心出现下标越界,编译器不会报告错误,而程序将试图读写那些由下标所指定元素(实际并不存在)所处位置的内存单元,结果可能会导致程序在运行时出现一些意想不到的错误。

例如:

inta[5];

for(inti=l;i<=5;i++)

a[i]=0;

由于数组下标从0开始,所以a[l]实际上是数组的第2个元素,a[5]应该是数组的第

6个元素。

但该数组总共只有5个元素,所以a[5]并不存在。

因此,上述程序段试图将数

据存放到一个并不存在的数组元素中。

后面将要学到的指针和动态存储分配等环节使用不当也会引起的一些运行错误。

上机指导4:

基本调试方法

一般程序中总是存在各种各样的错误,有人甚至认为“出错”是程序的基本特性,一个错误也没有的程序反倒是罕见的意外。

因此,在编程过程中出现错误并不可怕,只要能够准确迅速的找到出错点并进行修改就可以了。

同时,要想作为一个合格的编程者,具备查找并修改程序的调试能力是必不可少的。

相对于运行错误而言,语法错误仅仅是很初步的错误。

经过一段时间的上机实践,编程者一般都能掌握利用编译、链接所提供的出错信息进行检查的方法,能够很快的定位并修正程序中的语法错误。

而由编程逻辑错误所导致的运行错误则比较复杂,要找到错误位置也非易事,需要编程者具备一定的编程调试技巧并借助一定的调试工具才能发现,本节先介绍几种基本的调试方法t标准数据检验、程序跟踪、边界检查和简化。

(1)标准数据检验

运行调试的一般方法就是用若干组已知结果的标准数据对程序进行检验。

标准数据的选择非常重要,首先要有代表性,要接近实际数据;其次还要较为简洁,容易对其结果的正确性进行分析。

另外,某些重要的临界数据也必须单独进行检验。

(2)程序跟踪

程序跟踪是一种最重要的调试手段。

程序跟踪的基本原理是让程序一句一句地执行,编程者通过观察和分析程序执行过程中的数据和程序执行流程的变化来查找错误。

就VisualC++而言,程序跟踪可以采用两种方法,一种是直接利用开发系统提供的分步执行、断点设置、变量内容显示等功能对程序进行跟踪,这种方法将在5.9节的上机指导部分介绍;另一种是传统的方法,通过在程序中直接设置停顿点、打印重要变量内容等来掌握程序的运行情况。

例如,可以在程序中的关键部位插入这样的代码段:

//调试代码段

cout<<"BreakPoint10:

line120---count>100’’<

cout<<"Variablecount=¨<

_getch();

//调试代码段结束

其中的变量可以根据程序的实际情况进行设计。

_getch()函

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1