面向对象程序设计实验指导书
单步执行时每次执行一行语句,便于跟踪程序的执行流程。因此为了调试方便,需要单步执行的语句不要与其它语句写在一行中。
(5)在Watch窗口中,在Name栏中输入iType,按回车键,可看到Value栏中出现3,这是变量iType现在的值(如果没看到Variables窗口或Watch窗口,可通过View菜单的Debug Windows | Variables或Debug Windows | Watch选项打开它们)。图2—3是此时Variables窗口和Watch窗口的状态。
(6)继续执行程序,参照上述的方法,再试试Debug菜单栏中别的菜单项,熟悉(调试)状态,程序开始运行,一个DOS窗口出现,此时,Visual Studio的外观如图2—2所示,程序暂停在断点处。 (4)单步执行:从Debug菜单或Debug工具栏中单击Step Over选项或按钮两次。在程序运行的DOS窗口中输入选择的图形类型,例如,输入3,代表正方形,这时,N到Visual Studio中,把鼠标放在变量名iType上片刻,可看到出现了一个提示:iType—3;此时,在Variables窗口中也可看到iType以及其他变量的值。Debug的各种方法。
6.建立一个项目lab2—4,包含一个C++源程序lab2_4.cpp。定义一个表示时间的结构体,有表示年、月、日、小时、分、秒的成员,可以使用short类型;在主程序中实现输入输出。
图2—3
9
面向对象程序设计实验指导书
实验三 函数的应用
(2学时)
一、实验目的
1.掌握函数的定义和调用方法。 2.练习重载函数的使用。 3.练习函数模板的使用。 4.练习使用系统函数。
5.学习使用VC++的debug调试功能,使用step into追踪到函数内部。
二、实验任务
1.编写一个函数把华氏温度转换为摄氏温度,转换公式为..C=(F-32)*5/9。
2.编写重载函数Maxl可分别求取两个整数,三个整数,两个双精度数,三个双精度 数的最大值。
3.使用重载函数模板重新实现上小题中的函数Maxl。
4.使用系统函数pow(X,y)计算幂的值,注意包含头文件math.h。 5.用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
三、实验步骤
1.编写函数float Convert(float TempFer),参数和返回值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。程序名:lab3_1.cpp。
2.分别编写四个同名函数maxl,实现函数重载,在main()函数中测试函数功能。程序名:lab3_2.cpp。
3.使用函数模板实现求任意类型数的最大值,针对不同的参数个数,编写两个同名函数模板maxl,其参数个数不同,实现函数重载,在main()函数中测试函数功能。程序名:lab3_3.cpp。
4.在main()函数中提示输入两个整数x、y,使用cin语句得到x、y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。程序名.1ab3_4.cpp。
5.编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算Fibonacci级数。公式为fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。
6.使用debug中的Step Into追踪到函数内部,观察函数的调用过程,参考程序 如下:
//lab3_5
#include
10
面向对象程序设计实验指导书
int main() {
int n,answer;
cout<<”Enter number”; cin>>n;
cout<<”\nkn”; answer=fib(n);
cout<
int fib(int,n) {
cout<<”vProcessing fib(”< cout<<”Return 1!\n”; return(1); } else { cout<<”ca11 fib(“< 7.调试操作步骤如下: (1)选择菜单命令Build | Start Debug | Step in,或按下快捷键Fll,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时Visual Studio中光标停在main()函数的入口处。 (2)把光标移到语句answer=fib(n)前,从Debug菜单或Debug工具栏中单击Run to Cursor,在程序运行的DOS窗口中按提示输入数字10,这时回到Visual Studio中,光标停在第11行,观察一下n的值(观察方法见实验2)。 (3)从Debug菜单或Debug工具栏中单击Step Into,程序进入fib函数,观察一下n的值栏中单击Step Into,程序进入fib函数,观察一下n的值,把光标移到语句return(fib(n-2)+fib(n-1))前,从Debug菜单或Debug工具栏中单击Run to Cursor,再单击Step Into,程序递归调用fib函数,又进入fib函数,观察一下n的值。 (4)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。 (5)再试试Debug菜单栏中别的菜单项,熟悉Debug的各种方法。 11 面向对象程序设计实验指导书 实验四 类与对象 (4学时) 一、实验目的 1.掌握类的定义和使用。 2.掌握类的定义和对象的声明。 3.复习具有不同访问属性的成员的访问方式。 4.观察构造函数和析构函数的执行过程。 5.学习类的聚集使用方法。 6.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 二、实验任务 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU—Rank,定义为enum CPU—Rank {Pl=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 2.定义一个简单的(Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。 3.(选做)设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。 三、实验步骤 1.首先定义枚举类型CPU_Rank,例如enum CPU_Rank{P1:1,P2,P3,P4,P5,P6,P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab4_1.cpp。 2.使用debug调试功能观察程序lab4_1.cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: //lab4_1.cpp #include enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7}; 12 面向对象程序设计实验指导书 class CPU ( private: CPU_Rank rank; int frequency; float voltage; public: CPU(CPU_Rank r,int f,float v) { rank=r; frequency=f; voltage=v: tout<<”构造了一个CPU!”< ~CPU(){cout<<”析构了一个CPU!”< void Run(){cout<<”CPU开始运行!”< CPU a(P6,300,2.8); a.Run(); a.Stop(); } 3.调试操作步骤如下: (1)单击Build l Start Debug | Step Into命令,或按下快捷键Fll,系统进入单步执行状态,程序开始运行,一个DOS窗口出现,此时Visual Studio中光标停在main()函数的入口处; (2)从Debug菜单或Debug工具栏中单击Stupe Over.此时,光标下移,程序准备执行CPU对象的初始化; (3)单击Step Into,程序准备执行CPU类的构造函数; (4)连续单击Step Over,观察构造函数的执行情况.直到执行完构造函数,程序回到主函数; (5)此时程序准备执行CPU对象的run()函数.单击Step Into,程序进入run()成员函数,连续单击Step Over,直到回到main()函数; (6)继续执行程序,参照上述的方法.观察程序执行顺序.加深对类的构造函数、析构函数、成员函数的执行顺序的认识; (7)再试试Debug菜单栏中别的菜单项,熟悉Dehug的各种方法。 4.首先定义CPU类(可使用第2题。可使用2题中的CPU类)、RAM类、CDROM类。再定义Computer类:定义私有数据成员cpu、ranl、cdrom.定义公订成员函数run、stop, 13