作为学习面向对象的C++的第一步,学习的重点是算法,必须避免用户图形界面的干扰,这时可采用控制台应用程序进行练习。
下面是一个控制台应用程序实例,该程序要求用户从键盘输入3个整数,然后按照从小到大的顺序在屏幕上输出。
【步骤一】 进入和退出Visual C++集成开发环境。
启动并进入Visual C++集成开发环境至少有3种方法:
(1)选择开始菜单的“程序”,然后选择Microsoft Visual Studio 级联菜单,再选择Microsoft Visual Studio菜单項,以版本6.0为例 如图1.1 所示。
图1.1 进入Microsoft Visual C++集成开发
(2)在桌面上创建Microsoft Visual C++ 6.0 的快捷方式,直接双击该图标。
(3)如果已经创建了某个Visual C++ 工程,双击该工程的扩展名为.dsw的文件图标,也可进入集成开发环境,并打开该工程。
选择 【文件|退出】菜单,可退出集成开发环境。
【步骤二】创建一个控制台应用程序工程
(1)进入Microsoft Visual C++ 6.0集成开发环境后,选择【文件|新建】菜单項,弹出新建对话框。单击【工程】标签,
打开其选项卡,在其左边的列表框中选择【Win32 Console Application 】工程类型,
在【工程名称】文本框中输入工程名EXP1_1,在【位置】文本框中输入工程保存的位置,单击【确定】按钮,如图1.2 所示。
【步骤三】程序的编辑、编译、生成和执行。 (1)选择【文件|新建】菜单項,弹出新建对话框。单击【文件】选项卡,
在列表框中选择C++ Source File ,在【文件名】文本框中输入文件名Exp1_1.cpp,选中【添加到工程】复选框,如图1.5所示。
然后单击【确定】按钮,打开源文件编辑窗口,在其中输入源代码:如图1.6所示。
对于已经存在的源文件,选择【工程|添加到工程|文件】菜单项,在随后打开的插入文件对话框中选择待添加文件,单击【确定】按钮即可将其添加到工程。
(2)源代码输入完后,选择【组建】|【编译】菜单项,即可编译源文件exp1_1.cpp。系统会在输出窗口显示出错(error)信息以及警告(warning)信息。
当错误为0时。可以得到目标文件(Exp1_1.obj)。
编译器在(output)输出窗口给出语法错误和编译错误信息。
语法错误处理: 鼠标双击错误信息可跳转到错误源代码位置处,然后进行修改,一个语法错误可能引发系统给出很多条error信息,
因此,发现一个错误并修改后最好重新编译一次,以便提高工作效率。
警告错误处理
: 一般是触发了C/C++的自动规则,如将一个单精度(浮点)型数据赋给整型变量,需要系统将单精度型数据自动转换为整型,
此时小数部分会丢失,因而系统给出警告信息,警告信息不会影响程序执行,本例可以通过强制转换去掉警告信息。
(3)编译完成后选择【组建】|【组建】菜单项,连接并建立工程的.EXE文件,得到可执行文件Exp1_1.exe。这时编译器可能给出连接错误(linking error)。
产生连接错误的原因可能是缺少所需的库文件或目标文件,或程序中调用的外部函数没有定义等,只要补充相应文档再重新建立即可。
(4)组建完成后选择【组建】|【执行】菜单项,执行工程文件,会出现一个类似DOS的窗口,按要求输入3个不等的整数后按Enter键,屏幕上由大到小输出这3个整数,如图1.7所示。
【步骤四】程序的调试 运行程序时,可能发现程序没有编译错误,而且也能执行,但执行结果不对,此时除了仔细分析源程序,还可借助调试工具进行跟踪调试。
例如,若在exp1_1.cpp 的B行中else后面多加一个分号,即: ……..else ; {max=b; min=a; } 使用 88、 45、67 这组数据测试此程序,发现输出结果为67 45 88 ,显然结果不对。
此时需要对源程序进行调试,下面介绍调试过程。 首先,在源程序中可能出现错误的行上设置断点,方法是将光标移至该行,然后按F9键,或单击工具栏上的手形按钮(再按一次F9键或单击手形按钮将取消断点)
,此时该行左侧出现一个红色圆点,断点设置成功,如图1.8就是在A行设置了断点。
然后选择【组建】|【开始调试】|【GO】菜单命令(也可直接单击工具栏上的
图标),程序开始执行,但执行到断点处停止,这时选择【查看】|调试窗口|子菜单的Watch 和Variables两个菜单项,
打开监视窗口和变量窗口来观察变量的值,分析并查找出错原因。 在Watch窗口加入max和min两个变量,进行监视。Watch窗口的每一行可以显示一个变量,其中左栏显示变量名,双击它可进行编辑;
右栏显示变量的值。接下来可按F10键(不跟踪进入函数内部)或F11键(跟踪进入函数内部)从断点位置处单步执行。通过单步执行(一条一条语句执行)可以看出我们所观察的变量的变化以及程序执行流程是否正确,
如果不正确是由那条语句引起的,因而有针对性的检查错误原因。例如在本例中,尽管a>b,在执行了if后面的{max=a; min=b; }后,通过单步执行发现仍然执行了else后面的 {max=b; min=a; }
所以当程序执行到箭头所指位置时,max=45, min=48,如图1.8所示,与预期结果不相符,说明程序的流程有问题。此时再仔细分析源程序,
发现问题
在于else后多余的分号。
图1.8 Visual c++程序的调试
调试过程中,Variables窗口动态显示各变量值随程序执行而变化的结果。在面向对象程序设计中,若程序中有类的对象,Variables窗口的this页可显示当前this指针所指向对象的各个值。 经过反复的修改和调试,
使程序中所有问题得到改正后,可得到正确的执行结果。