#中山大学09级C++实验10教材_第1页
#中山大学09级C++实验10教材_第2页
#中山大学09级C++实验10教材_第3页
#中山大学09级C++实验10教材_第4页
#中山大学09级C++实验10教材_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+面向对象技术课程实验指导用书课程名称:程序设计 / 31、目的与要求:通过上 机实 验理解 C+程 序的 执行过程,掌 握 C+语言 的语 法特征;熟练掌握在 Visual C+ 开发环境下独立编写和调试C+ 程序 ; 掌握面向对象程序和泛型程序设计思想和技术,建立起用面向对象思维 和泛型思维进行问题分析和程序设计的习惯;掌握用C+语言解决 实 际问题的方法,建立优秀的面向对象编程和泛型编程风格,为进行大型 程序设计和科研编程打下基础。、学时分配6 个实验共 36学时实验名称学时 分配实验一、 C+程序设计基础与开发环境4实验二、类与对象6实验三、运算 符重 载6实验四、继承机制、虚基类、

2、虚函数与运行时多态8实验五、模板、 STL 与泛型编程8实验六、异常处理、 C+ I/O 流4、实验目的和实验内容实验一、 C+程序设计基础与开发环境实验目的】1通过 实验体 会 C+在面向 过程程序 设计方 面与 C 的异同2初步 了解 C+的程序设计 风格3掌握函数重载和命名空间4进一 步熟悉 Vi sual C+集成开发 环境实验内容】1编写 一个完 整的面向 过程风格的 C+程序 ,满足 以下条件 :1 三个 重载 函数,分 别接收 两个整 数、两 个浮点 数和两 个字 符 串做参数 (引 用类型,实现两个数互相交换。2 在主 函数中 输入交换 前和输 出交换 后的两个 数,实现两数

3、值交换 。3 主函 数应给 出必要的 输入提 示。2 有以下 name space 定 义,namespace myn space1 / 31 const in t SIZE = 100。int A SIZE。int mo de(in t , int 。mode 函数的功能是输出数组中的众数,及其出现的次数 ,其返回值 是众数的个数。完成 myn space 的定义,并在 main 函数中写出完整 程序,演 示函数的功能 (将 myn space:A 作为实 参传给 mo de函 数。3分别写 C 和 C+程序,将文本文件 old.txt 中的所有内容拷贝到新文 件 new. tx t 中 。

4、4输入下面的程序,用编译器的单步调试功能观察其输出,说明为什么?如 果把注释语句中的注释符号“/”去掉,程序能运行吗?试解释原因。#include using name space std 。namespace alipint ai= 16, aj= 15, ak= 23。int aj= 0 。void ma in ip( /cout ai:ai endl。using name space al ip。+ ai 。cout ai:ai endl。/+aj 。+ :a j 。cout :aj:aj endl 。+ ali p:a j 。cout alip:aj: ali p:aj endl。co

5、ut ak: akendl 。int ak=97。cout ak: akendl 。+ ak 。cout ak: ak/ 31cout output startin gendl。 /coutbi: biendl。using blip :bi。+bi。cout bi:bi endl。cout bj:bj endl。 using blip :bj。+bj。cout bj:bj endl。int bk 。cout bk: bkendl 。/usin g blip :bk。 cout output sta rtin g 。 return 0 。实验二、类与对象实验目的】1学习类的定义和使用方法2学习对

6、象的声明和使用3学习对象构造中,默认构造函数、拷贝构造函数、类型转换构造函数和普 通多参数构造函数的定义和使用4类静态成员的定义和使用5体会深拷贝和浅拷贝的区别6使用 Vis ual C+的 Debug 功能,观 察程序 流程,观察类 的构造函 数、析 构函数的执行顺序和过程7体会基于对象程序设计方法和面向过程程序设计方法的区别实验内容】1完成以下类定义:class serie sComp int n。 /n 大 于或等于 1seriesComp (in t n。int sum( 。int fib ( 。double tayl or(double x。/ 31。其中 sum( 计算 1+2+3

7、+ + n;fib(计算斐波纳契(Fi bonacci数列前 n 项和;. ( 1)nn x n!2tayl or( 计 算 1 x x 1! 2!2定义一个类,确保该类实例化的对象数目最多只能有一个(提示,使用 static 数据成 员和成员 函数。3Josephus 问题: n 个人 围坐在一 圈,现从指定 的第 s 个人 开始报数 ,数到 第 m 个人出列, 然后从出 列的下 一个人 重新开始 报数,数到第 m 个 人又出 列,如此重复,直到所有的人全部出列为止。定义一个链表类和 Josephus 类。编制应用程序,给出人数 n,起始位置 s 和数人数 m,解决 Josephus 问题

8、。仔细体会你的 方法与面向过程 的解决 方法的区别。4定义 一个名 为 Date 的 类,用 于输入 并验证日 期,类 中的数 据成员和 成员函 数应满足下面的规则;在主函数中编写相应代码验证这些规则是否正确地 实现了;并用 Debug 功能仔细体会程序的运行过程。1 日期 包括 年(year、月(month 、日(day ,均为整型数据,以及一个布 尔数据成员 pass 用来判断输入日期是否正确。2 布尔类型 private 成员函数 checkFo rmat(,有一个字符串引用形参,验 证读入的日期格式是否正确yyyy:mm: dd 格式)?3 void 类型 private 成员函数 v

9、a lidate(,没有形参。判断输入的日期是 否合法。4 默认 构造函 数,没 有形参, 将 year, month,day 分别 初始化 为 2006, 1,1;在构造函数中要调用 valid ate)。5 定义 拷贝构造函数6 定义类型转换构造函数,能从字符串转换成 Date 对象。7 使用带默认参数的构造函数,三个整形形参 in t y,int m= 2,in t d=29, 分别对 year,month,day 赋值;注意要调用 validate)验证。8 void 类型 public 成员函数 setD ate(,有一个字符串引用形参,负责设 置新日期,首先调 用 checkFo

10、rmat(判断日 期数据 格式是否正确,如正 确,继续调用 valid ate(验证输入日期9 void 类型 publi c 成员函数 prin tD ata(,没有形参,根据 pass值决定是 否打印设置的日期,如果打印,要按照”yyyy 年 mm 月 dd 日”的格式。实验三、运算符重载/ 31【实验目的】1掌握常用运算符重载的定义方法2掌握运算符重载的两种方式:成员函数和友元函数3体会 运算符 重载对构 建 A DT 的 作用【实验内容】1参考 教材第 11 章 的例子。 实现数 学中的 复数类 Comp lex ,它能实现 普通 的 +、 -、* 、 /数学 运算, =、 +=、 -

11、=、 *= 、 /= 赋值运 算, 前 后序 的 自增 自 减,(三个运 算符。试 完 成类 定义, 使得类 vecto rConta iner 的对 象 V C 表 现出以下行为 :V Ci 。 / 打 印 V C 中 第 i 个 向 量 的 所 有 元 素 , i 为 整 数 , 下 同VC-outp ut(。 /打印 VC 中某个 向量所 有元素及 其元素 和,该向 量的元素和在所有向量元素和中是最大的V C(。/把 VC 中的 向量按 照其元 素和大 小排序, 然后顺 序输出向量及其元素和V C(i 。/把 VC 中的向 量按照其 元素和 由小到 大排序, 然后输 出第 i 个向量所有

12、元素及其元素和V C(i, j 。/输出 第 i 个向 量的第 j 个元素 。思考以下问题:Ve ctor 类 和 vectorContai ner 类有 良好的“封装 性”吗?如果 vecto rContai ner 不是 Vector 的友 元,代码应如何 改动? cla ss Ve cto rfloat v4 。/fri end class vecto rContain er。public:Vector(flo at ve for ( int i= 0。 ivi=vei 。/ 31Vector(for ( int i= 0。 ivi=0。Ve ctor( voi d outp ut(。c

13、lass vectorContain erVector* _v 。int _size。/public:vectorContain er(Vector *v e, int siz e_v = new Ve ctorsiz e。_size = siz e。for ( int i= 0。 i_vi =vei。vectorContain er (。vectorContain er( 。Vector& operator(in t idx。Vector* operato r-(。voi d operator( (。Vector& operator(in t i 。float& operator(int i

14、, int j 。 实验四、继承机制、虚基类、虚函数与运行时多态 实验目的】1学习类的继承关系,声明派生类2熟悉不同继承方式下派生类对基类成员的访问限制3学习多继承的原理,虚基类的用途及其使用方法4虚函数的功能,虚函数支持面向对象多态机制的工作原理5学习纯虚函数与抽象基类的定义以及其作用,理解抽象基类和具体类的区 别。6基类与派生类构造函数和释构函数的调用顺序。7理解基本的设计模式实验内容】/ 311 编 写 一 个 基 类 , 声 明 有 publ ic 、 prote cted、 pri vate 成 员 , 然 后 使 用 public 继承 ,prote cted 继 承,pri va

15、te 继承 分别生 成派生 类,观察 派生类 对基类不同类型成员的访问,验证以下继承规则:1A publ ic me mb er is accessib le from anyw here wi thin a program.2A private me mber can be accessed onl y by the memb er functio ns and f ri ends of i ts cla ss.3A pro tected memb er behaves as a public me mb er to a deri ved cla ss, and behaves as a p

16、riva te memb er to th e rest of the program.2有类定义class basepublic:virtual voi d iam( cout 输出 派生类 的名字。创建 这些类的 对象, 并分别 通过这些 对象调 用 i am( 。把 指 向 两 个 继 承 类 对 象 的 指 针 分 别 赋 值 给 base* 指 针 , 通 过 这 些 指 针 调 用 iam( 。3防真农场,一个哺乳动物类如下所示:#include class M amma lpublic:M amma l(:itsAge(2,i tsWeight(5cout cout const

17、return itsAge。 voi d SetA ge(int age itsAge=age。int GetWe ig ht( const retu rn its We ight。 / 31void SetWe ight(int weight it sWeight=weight。void Move( const cout const cout const cout 狗属 哺乳动 物,且它的属 性有品 种之分在 哺乳类基 础上 增加品种 数据成 员),叫声区别于其它动物,输出”Woof!”),还会摇尾巴 (增 加成 员函 数,输 出”Tail wagging”,乞讨食 物(增加成 员函 数,输

18、 出” bagging for food”。2 驴、马、猪也属哺乳动物,其叫声分别为:“Meow!”,”Win nie!”,” Oin k! ” 。3 骡既是驴,也是马,叫声为”mu le”。4 编 程分别使各个动物表现为不一样的行为, 并观察 基类与 派生类的构造 函数与释构函数的调用顺序。5 把 Mamma l 中的非 构造、非释构成 员函数 改为虚函数, 然后派生 不同的 动物类,编写程序说明虚函数的作用 如果 M amal 中的非构造、非释构成员函数中有纯虚函数,派生不同的动 物类、选课 select(等成员函数;派生出软件学院学生类 ssStu dent,管理学院学生类 msStud

19、ent;从 ssStu dent 和 msStudent派生出双学位学生 ddStu dent。它 们都定 义了 reg(和 select(成员函 数,编写 程序体 验虚基类、虚函 数的作 用。5*定义类,满足以下基本需求:1 该类主 要功能是对数组 进行排 序;2)排序的算法有简单选择排序、冒泡排序等,可选;3)类设计尽量满足“良好的可扩展性”要求,也就是类功能有良好的可扩 充性,比如排序算法还可以添加插入排序、快速排序等。6*某市某产鞋乡镇企业,需要开发一套管理软件,对企业的产鞋过程进行管 理。在该企业中,生产一种鞋需要一条生产线(比如皮鞋需要一种生产线, 运动鞋需要另一种。该企业随着业务

20、的不断发展,会不断引进新生产线, 生产新品种的鞋,所以企业希望开发的软件能够不断适应这个需求。你能/ 31用面向对象的程序设计思想,模拟该软件的核心功能实现吗?实验五、模板、 STL 与泛型编程实验目的】1掌握 C+中 的模板机制对泛型编程 思想的 支持 2掌握泛型函数、泛型类的定义及其使用方法3熟悉 STL Sequence 和 STL A ssociative容器类的使用方法4练习 STL 通用算 法、函数对象和 函数适 配器的使 用 实验内容】1用模板机制实现泛型函数,重写实验一的第一题,功能要求不变。 2泛型化实验三的 complex 类,使其能处理不同的数据类型的数据。 3下面 的源

21、代 码是模拟 STL list 的实现 ,试仔 细体会链表的 性质和 Iterator的实现方法请补充完成未定义的成员函数)。并编写程序比较这个实现和 标准 STL list 实现 的异同。* * * * * /#include #include using name space std 。class li st public:struct listelem。 /f orward declarations class ite rator 。friend iterato r。lis t(:h(0, t(0 /construct the emp ty listlis t(siz e_t n_ele

22、ments, char c 。lis t(const lis t& x。lis t(iterato r b, iterator e。l is t( rel ease(。 ite rator begin(const retu rn h。 iterator end(const retu rn t。 vo id push_f ront( char c。vo id pop_front( 。char& front( return h - data。 char& back( return t - data。 bool emp ty( const return h = 0。 vo id rele ase(。

23、friend ostream& operato r。 struct listelem / list cell/ 31 char data。li ste lem* next, *p rev 。li ste lem( char c, li stel em* n, liste lem* p:d ata(c, next(n, prev(p 。/scoped with in class li stclass ite ratorpublic :iterato r(listelem* p = 0:ptr(p iterato r operator+(。iterato r operator-(。iterato

24、r operator+(in t 。iterato r operator-(i nt。li ste lem* operator-( retu rn ptr。 。char& operator*( retu rn ptr - data。 operato r l is t ele m*( return ptr。 /c onversion private:li ste lem* ptr。/c urrent listele m or 0。private:lis tele m* h, *t 。 /head and tail。list:l ist(siz e_t n_elements, char casse

25、r t(n_eleme nts 0。h = t = 0。for(size_t i = 0。 i push_front(c。list:l ist(const lis t& xlis t:i terato r r = x. begin ( 。h = t = 0。 /n eeded for empty l istwhi le (r != 0push_front(*r + 。void l ist:rele ase(wh ile (h != 0pop_front(。ostream& operato r/ 31 lis t:i terato r p = x. begi n(。 /gets x. hout

26、out *p ,。 /g ets a char&+p。 /advances iterator using nextcout n 。retu rn out 。void l ist:push_front(char clis telem* temp = new li stelem( c, h, 0。 if (h != 0 /was a nonemp ty list h - prev = te mp 。temp - next = h 。h = temp 。else /was an emp ty l isth = t = te mp。void l ist:pop_f ront( lis tele m*

27、temp = h。if (h!= 0 /wa sa nonemp ty listh=h- next 。dele tetemp 。else/was anemp ty l istcout emp ty list! asser t(ptr != 0 。ptr = ptr - next。retu rn *t his。list:i terator lis t:iterator:operator+(int asser t(ptr != 0 。ite rator temp = *t hi s。ptr = ptr - next。retu rn temp 。int ma in(/ 31list l1。l1.pu

28、sh_front(A 。l1.push_front(F 。l1.push_front(C 。l1. push_front( z 。l1.push_front(l 。cout l1。return 0 。4理解 教材给 出的 Sequence 容器成 员类型 ,Sequence 容器 成员函数 用法。 分别编 写程序,演示 Sequence 容器 ve ctor、list、 deque 的构造、 插入、 删除、访问、赋值、交换操作。5理解 教材给 出的 A ssociative 容器 成员类 型,Associative 容器成员 函数功 能。 分别编写 程序,演示 Associative 容器 s

29、et、map、multiset、 mu ltimap 的构造、插入、 删除、 访问、 赋值、 交换操作 。6Using a random numb er generator, generate 10, 000 integers between 0 and 9,999. Place them in a list container. Comp ute and print the median valu e. What was expected? Comp ute th e frequencies of each valu e。 in other words, how many 0s were g

30、enerate d, how ma ny 1s were generated, and so forth. Prin t the valu e with greatest frequency. Use a vector to store th e frequencies. Be noticed that yo u should use al gor i t hm, f unct i on obj ect and f unct i on adapt er.实验六、异常处理、 C+ I/O 流实验目的】1理解 C+语 言的异常抛出处理机制2学习异常处理的声明和执行过程3学习 C+中 的格式化 I/

31、O4掌握 C+文件 I/O 流实验内容】1编写计算整数阶乘的程序,用异常抛出处理机制进行输入、溢出时异常的 处理。在主程序中设置不同条件,观察程序的处理流程。2 Suppose yo u are given lin e-oriented data in a file formatted as follows:Austral ia5E56,7667230284,La ngler,Tys on,31.2147,0./ 31 2B97,7586701,Oneill,Zeke,553. 429,0. 56065 4D75,7907252710,Nic kerson,Ke ll y,761.612,0.

32、010276276 9F2,6882945012,Hartenbach,Neil, 47.9637,0.0006471644 A ustria480F,7187262472,Oneill,Dee,264.012,0. 013 1B65,4754732628,Haney, Ki m, 7.33843,0.8475 DA1,1954960784,Pascente,Le ster,56.5452,0.0007629529 3F18,1839715659,Elsea,Chelsy, 801. 901,0. 5 Belg iu mBDF,5993489554,Oneill ,Meredith,283.4

33、04,0.0038239127 5A C6,6612945602,Parisienne,Bi ff,557.74,0.0075254727 6AD,6477082,Pennington,Li zanne,31.0807,0. 0004193544 4D0E,7861652688,Sisca,Fr ancis,704.751,0.Bahama s 37D8,6837424208,Parisienne,Samson,396. 104,0. 0053445 5E98,6384069,Willis ,Pam,90.4257,0.059246 1462,1288616408,Stover,Hazal,

34、583.939,0. 1 5FF3,8028775718,Stroms tedt,Bunk,39.8712,0.000537974 1095,3737212,Stover,Denny, 3.05387,0.8883 7428,2019381883,Parisienne,Shane,363. 272,0.00490155The heading of each section is a region, and every line under that heading is a seller in that region. Each comma-separated field represents

35、 the data about each seller. The first field in a line is the SELLER_ID which unfortunately was written out in hexadecimal format. The second is the PHONE_NUMBER (notice that some are missing area codes. LAST_NAME and FIRST_NAME then follow. TOTAL_SALES is the second to the last column. The last col

36、umn is the decimal amount of the total sales that the seller represents for the company. You are to format the data on the terminal window so that an executive can easily interpret the trends. Sample output is given below.A ustralia*La stName* *Fi rstName* *ID* *P hone* *S ales* *P ercent* La ngler

37、Tys on 24150 766-723-0284 31.24 4. 21E-02Oneill Zeke 111 59 XXX-758-6701 553.43 7.47E-013有磁盘文件 stu dent.txt,文件记录格式为:学号 姓 名 性别 出 生年月 生源地 高 考成绩修改实验五(3的链表结构,使其结点能存储 student. txt 的记录。并在相应成 员函数 里加入 异常抛出处理代 码。用 student.txt 的 所有数据初始化 列表。 列表能实现按照高考程序排序,排序后的所有学生纪录输出到 student_sort. txt 中 。/ 31附录 VC 程序调试 ( 本部分

38、录自网上资料在开发程序的过程中,经常需要查找程序中的错误,这就需要利用调试工 具来帮助你 进行程 序的调 试,当然 目前有 许多调 试工具, 而集成 在 VC 中 的调试 工具以其强 大的功 能,一 定使你爱 不释手 。下面 我们先来 介绍 VC 中的调 试工具 的使用。VC 调试工具1 1 调试环境的建立在 VC 中 每 当 建 立 一 个 项 目 (Pr oj ect 时 , VC 都 会 自 动建 立 两个 版 本 : Rel ease 版本, 和 Debug 版本, 正如 其字面 意思所 说的,Rel ease 版本是 当程序 完成后, 准备 发行时用 来编译 的版本, 而 Debug

39、 版 本是用 在开发 过程中进 行调试 时所用的版本。DEBUG 版 本当中 ,包含 着 MI CROSOFT 格式的 调试信 息, 不 进行任 何 代码 优化,而在 RELEASE 版本 对可执 行程序 的二进制 代码进 行了优 化,但是 其中不 包含任何的调试信息。在新建 立的项 目中, 你所看到 是 DEBUG 版本,若 要选择 RELEASE 版 本,可 以 选 择 菜 单 PROJ ECT 中 的 SETTI NG 命 令 , 这 时 屏 幕 上 面 弹 出 PROJECT SETTEI NG 对话框 ,在 SETTI NG FOR 下拉列表 中选择 RELEASE,按 OK 退 出

40、, 如 图 4. 1 。图 4. 1在调试 程 序 的时候必 须使用 DEBUG 版本, 我们可以 在 Pr oj ect Set t i ng 对话框的 C/ C+页 中设置 调试选 项。/ 31图 4. 2各个选项的含意如下:Program Dat abase 表示产生一个存储程序信息的数据文件(. PDB, 它 包含了类型信息和符号化的调试信息;Li ne Number s Onl y 表示程序经过编译和链接产生的. OBJ 或. EXE文 件仅仅包含全局和外部符号以及行号信息;C7 Compat i bl e 表示产生一个. OBJ 或. EXE 文件行号信息以及符号化 的调试信息;N

41、one 表示 不产生 任何调 试信息。12 调试的一般过程调试,说到底就是在程序的运行过程的某一阶段观测程序的状态,而在一般 情况下程序是连续运行的,所以我们必须使程序在某一地点停下来。所以我们 所做的第 一项工作就是设立断点。其 次, 再运行程序, 当程序在设 立断点处停下 来时,再利用各种工具观察程序的状态。程序在断点停下来后,有时我们需要按 我们的要求控制程序的运行,以进一步观测程序的流向,所以下面我们依次来 介绍断点的设置,如何控制程序的运行以及各种观察工具的利用。1 3 如何设置断点在 VC 中,你 可以设置 多种类 型的断 点,我们 可以根 据断点 起作用的方式把 这些断点分为三

42、类: 1、与位 置有关 的断点;2、与 逻辑条 件有关的断点 3、与 WI NDOWS 消息有 关的断 点下面我 们分别 介绍这三 类断点 。首先我们介绍与位置有关的断点。/ 311、最简单的是设置 一般位置断点, 你只要 把光标移到你要 设断点 的位置, 当然这一行必须包含一条有效语句的;然后按工具条上的 add/r emove br eakpoi nt 按钮或按 快捷键 F9; 这时你将会在 屏幕上看 到在这 一行的 左边出现一个红 色的圆点表示这 二设 立了一个断点。图 4. 32、有的时候你可能并不需要程序每次运 行到这儿都停下来,而是在满足一 定条件的情况下才停下来,这时你就需要设置

43、一种与位置有关的逻辑断点。要 设置这种断点我们只需要从 EDIT 菜单中选中 breakpoint 命令, 这时 Br e ak poi nt 对 话 框 将 会 出 现 在 屏 幕 上 。 选 中 Br eak poi nt 对 话 框 中 的LOCATI ON 标签,使 LOCATION 页 面弹出 ,如图 4. 4图 4. 4单击 condi t i on 按钮,弹出 Br eakpoi nt 对话 框,在 Expr essi on 编辑框中写出你的 逻辑表 达式, 如 X=3 或 a+b25, 最后 按 OK 返回 。图 4. 5 这种断点主要是由其位置发生作用的,但也结合了逻辑条件,

44、使之更灵 活。3、有 时我 们需要 更深入 地调试 程序,我 们 需 要进入程 序 的汇 编代码 ,因此 我们需要在 在汇编 代码上 设立断点 :要设 立这种 断点我们 只需从 Vi ew 菜单中选 Debug wi ndow 命 令 ,图 4. 6再选 Di sassembl y 子命令 ,这时 汇编窗 口将会出现在屏 幕上。图 4. 7在 图 4. 7 中 的 汇 编 窗 口 中 你 将 看 到 对 应 于 源 程 序 的 汇 编 代 码 , 其 中 源 程 序 是用黑体字显示,下面是且对应的汇编代码。要设立断点,我们只需将光标移 到你想设断 点处然 后点击 工具条上 的 I nser t

45、 / Remove Breakpoi nt s 按钮,此 后你将会看到一个红圆点出现在该汇编代码的右边。/ 31图 4. 8上面所讲的断点主要是因为其位置发挥作用的,即当程序运行到设立断点的 地方时程序将会停下来。但有时我们设立只与逻辑条件有关的断点,而与位置 无关。所以下面介绍一下与逻辑条件有关的断点。图 4. 11最后按 OK 返回。 其他几种断点的设置的方法都与之类似。我们一一加以说明。2)监视表达式发生变化断点:从 EDI T 菜单中选 中 br eakpoi nt 命令, 这时屏幕上将 会出现Br eakpoi nt 对话框 。选中 Breakpoi nt 对话框中的 DATA 标签

46、,对应的页面将会弹出 在 Expr essi on 编 辑框中写出你 需要监视 的表达式 最后按 OK 键返回。3)监视数组发生变化的断点:从 EDI T 菜单中选 中 br eakpoi nt 命令, 这时屏幕上将 会出现Br eakpoi nt 对话框 。选中 Breakpoi nt 对话框中的 DATA 标签,对应的页面将会弹出 在 Expr essi on 编 辑框中写出你 需要监视 数组名; 在 Number of El ement s 编 辑框输 入你需要 监视数 组元素的个 数;/ 31 按 OK 键 返 回 。4)监视由指针指向的数组发生变化的断点:从 EDI T 菜单中选 中

47、 br eakpoi nt 命令, 这时在屏幕上 将会出现Breakpoint 对话框。选中 Br eakpoi nt 对话框 中的 DATA 标签;在 Expr es si on 编 辑框中 输入形 如* poi nt name, 其中* poi nt name 为指针变量名;在 Number of El ement s 编 辑框输 入你需 要监视数 组元素 的个 数;按 OK 键 返 回 。文件名 ; 按 OK 键关闭 Advanced Br eakpoi nt 对 话框。按 OK 键 关 闭 Br eakpoi nt s 对话 框。 。/ 31在 VI EW 菜单 ,Debug wi n

48、dow 选 Var i abl es wi ndow。 变量窗口 将出现 在屏幕上。其中显示着变量名及其对应的值。你将会看到在变量观察窗口的下AUTO , LOCAL,THIS 选中不同的标签,不同类型的变量 将会显部有三个标签: 示在该窗口中。图 4. 16观察窗口(WATCH WI NDOW:Wat ch wi ndow 子命令 。这时图 4. 17在 VI EW 菜 单 , 选择 Debug wi ndow 命 令 , 变量窗口将出现在屏幕上。/ 31在图 4. 17 的 观察窗 口中双击 Name 栏的某一空行, 输入你要查看的 变量名 或表达式。图 4. 18 回车后你将会看到对应的

49、值。观察窗口可有多页,分别对应于标签 Wat ch1, Wat ch2, Wat ch3 等 等 。 假如 你 输 入 的 表达 式 是 一 个 结构 或 是 一 个 对 象 ,你可 以用鼠 标点取表 达式右 边的形 如 + ,以 进一步 观察其 中的成员 变量的 值 如 图 4. 19 。图 4. 19快速 查看变 量对话 框( qui ck wat ch;在快速查看变量对话框中你可以象利用观察窗口一样来查看变量或表达式的值。但我们还 可以利用它来该变运行过程中的变量,具体操作如下:(1) 在 Debug 菜 单,选择 Qui ck Wat ch 命 令,这 时屏幕上将会出 现 Qui ck

50、 Wat ch 对话 框;/ 31图 4.20在 Expr essi on 编辑框 中输入变量名, 按回车;图 4. 213)在 Cur r ent Val ue 格子中将出现变量名及其当前对应的值如图 4. 22:图 4. 22 4)如要改变该变量的 值只需双击该变 量对应 的 Name 栏, 输入你要 改变的 值;5)如要把该变量加入到观察窗口中,点击 Add wat ch 按钮; 6)点击 Cl ose 按 钮返回 ;我们还可以直接查看内存中的值1 ) 从 Vi ew 菜 单 中 选 取 Debug wi ndows 及 Memor y 子 命 令 。 Memor y/ 31Wi ndo

51、w 出 现 ;图 4. 232)在 Addr ess 编辑框中 输入你 要查看 的内存地 址,回 车。对 应内存地 址中的 值将显示在 Memor y wi ndow 的 窗口中。图 4. 24在调试过程中,有时我们需要查看或改寄存器中的值。我们只需:1)从 Vi ew 菜单中选取 Debug wi ndow 及 Regi st ers 子选项。Regi st ers 窗口出现。在 Registers 窗口中,信息以 Register = Val ue 的形式显示, 其中 Regi st er 代表寄 存器的名字,Val ue 代表寄存器中 的值。图 4. 25 。TRACE( The v alueo f xis%d n ,x 。TRACE( x = %dand y =%dn , x ,y 。TRACE( x = %dand y =%xa n d z =%f n ,x,y,z 。要注意的是 TRACE 宏只对 Debug 版本的项目产生作用,在 Rel ea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论