C++面向对象程序设计实验指导书谭浩强(共49页).docx
《C++面向对象程序设计实验指导书谭浩强(共49页).docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计实验指导书谭浩强(共49页).docx(49页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上C+面向对象程序设计实验指导书江西理工大学电气工程与自动化学院2015年9月专心-专注-专业目录绪论0.1 目的面向对象程序设计语言是现今最流行的编程语言之一,C+语言是作为最早最流行的面向对象编程语言之一而发展起来的。学好C+语言不仅可以从面向过程的程序设计思想过渡到面向对象的程序设计思想,而且可以为以后学习其它的面向对象语言打下坚实的基础,使得学习其它的面向对象编程语言变得轻松、容易。实验作为学习C+语言不可缺少的一个环节不仅可以加深学生对C+面向对象思想的理解,同时可以提高学生的动手编程能力,培养学生良好的编码习惯。目前关于C+语言的理论教材比较多,但是适合学生
2、练习的实验指导书却比较少,这严重影响了学生对C+这门课程的学习。大多数情况下,学生学习C+语言之前都刚刚学习过C语言程序设计这门课程,从编程环境到编程语言同时转换过来需要一定的时间和合理的指引,同时在学习C+理论知识的过程中,学生很少也很难把C+程序设计和现在社会上比较流行的基于VC6.0的MFC程序设计联系起来,所以很难让学生在学习C+语言的同时,提升学生基于VC6.0的MFC程序设计的能力。编写本书的目的就是从以上几点来考虑的,首先要把学生从以前的编程环境中脱离出来,然后循序渐进地介绍新的编程环境的新知识点,同时把C+的语法结构融入到基于VC6.0的MFC程序设计中去,从而实现学生轻松掌握
3、C+这门程序设计语言和习惯编程环境以及理解C+语法和MFC之间的关系的目的,从而提高学生的程序设计能力和学生程序设计的成就感。0.2 结构安排实验课程的安排离不开理论课程的学习,本书的编排以知识点为核心,理论教材蓝本为C+面向对象程序设计教程(第2版)陈维兴 林小茶编着,清华大学出版社出版。通过为不同的知识点设计相应的实验程序,来达到学生练习和理解C+语言面向对象的思想的目的,同时本书还设计了一些程序设计课后练习题,设计本部分有三个目的:一个是有些课堂练习中没有办法练习到的知识点将在这部分体现,指导老师可以根据需要来增删课堂的讲解内容;另一个是为一部分有能力有兴趣深入学习C+程序设计的同学提供
4、一些练习题,从而提升这部分学生的程序设计能力;第三就是避免有些学生在做实验的过程中盲目按照指导书中的步骤一步一步地不加思考地写程序,学生要回答这些问题,就必须看懂这些程序中隐含的知识点,从而达到理论知识和实践知识更好地结合。对于课堂练习,本书共安排了11个实验,共24个学时,实验安排如下:实验一C+程序的运行环境和运行C+程序的方法(2学时)实验二C+对C 的扩充(2学时)实验三类和对象(一)(2学时)实验四类和对象(二)(2学时)实验五实验五 运算符重载(2学时)实验六派生与继承(2学时)实验七派生与继承多重派生(2学时)实验八实验八 C+程序、Windows程序和MFC程序(2学时)实验九
5、简单单文档MFC程序设计(2学时)实验十简单对话框程序设计(2学时)实验十一简单数据库程序设计(4学时)0.3 如何使用本书面向对象程序设计语言出现的目的就是为了设计大型的软件系统,但是教学过程中很难让学生在课堂上实现一个大型的(甚至是成型)的系统,所以作为教师应该引导学生在实现一个简单的功能性的程序的同时让学生思考,思考如何把这个地方的技术实现到一个复杂的应用系统中去;另外教师要充分利用本书中第二部分的练习,引导学生去思考如何利用C+的相关技术从头到尾设计一个具有实用价值的应用程序。作为学生如果只是简单地按照本书中提供的步骤一步一步完成某一个程序,而不去思考为什么要这样做的话,那么学生能学到
6、的知识也仅仅是C+的语法而已,并不能真正理解C+面向对象的思想,最终不能设计出好的程序来。所以学生不仅要全部实现本书中的课堂练习,得出正确的结果,而且在完成了程序后还要思考本程序为什么要这样设计,如果换成其它的程序设计语言会怎么实现,只有这样才能够真正理解C+的精髓,从而掌握C+。另外学生在学习最后四个实验的时候一定不要忘记前面C+语法知识,能否合理地将C+的三大特性运用到MFC的程序设计中是提高程序运行效率,存储效率和程序封装性一个最有效的手段。实验一 C+程序的运行环境和运行C+程序的方法1.1 实验目的(1)了解所用的计算机系统的基本操作方法, 学会独立使用该系统。(2)了解在该系统上如
7、何编辑、编译、连接和运行一个C+程序e(3)通过运行简单的C+程序, 初步了解C+源程序的结构和特点。应学会在一种以上的编译环境下运行C+程序,建议学习并掌握Visual C+ 6.0的使用方法。1.2实验内容和步骤(1) 检查所用的计算机系统是否已安装了C+编译系统, 并确定它所在的子目录。(2) 在Visual C+环境下编译和运行C +程序。在第一次上机时, 按以下步骤建立和运行C+程序: 先进入V i sual C+ 6 . 0 环境。 按照上机指导第9章介绍的方法, 在自己指定的子目录建立一个名为test. cpp 的新文件(此时尚未向文件输入内容) 。 从键盘输入以下程序(第l 章
8、第4题) int main();int a,b;c=a+b;cout” a+b=”a+b; 选择Build Compile test.cpp 命令, 对此源程序进行编译。观察和分析编译信息。 根据编译信息指出的错误,修改程序。再进行编译,如果还有错, 再重复此过程,直到编译不出错为止。 选择BuildBuild test.exe 命令,对程序进行连接, 如果不出销, 就会生成可执行程序test.exe。 选择Build- Execute test. exe 命令, 执行可执行程序test. exe。观察屏幕的变化。在输出窗口应显示程序运行结果。 分析结果是否正确, 如果不正确或认为输出格式不理
9、想,可以修改程序,然后重新执行以上至步骤。此外,还可利用已有的源程序建立一个新程序。由于刚才已建立了一个名为test. cpp的源程序, 可以以它为基础建立一个新程序。这样更方便些。按以下步骤: 通过“资源管理器”或“我的电脑”找到已有源程序test. cpp。 双击test. cpp 图标, 进入Visual C +集成环境, 打开test. cpp 。 在test. cpp 基础上将源程序修改为以下内容(第l 章第5 题) ,#include using namespace std;int main( )int a,b;c=add(a,b)cout”a+b=”cendl;return 0;
10、int add(int x,int y);z =x+y;return(z);选择File-Save as 命令,用新的文件名other.cpp 保存。此时, other.cpp 与tesl. cpp在同一子目录下。对新文件other. cpp 进行编译、连接和运行。步骤同前。(3) 请思考以下问题,并上机进行试验。将本实验中第2 个程序作以下改动:(a) 将程序第1,2 行改为下面一行#include (b) 将第3 行int main ()改为void main()( c ) 删去main 函数中的retum 0;再运行此程序。并对此作分析,得到必要的结论。(4) 输入两个整数,将它们由大到
11、小的顺序输出(本题是 C +面向对象程序设计第l章习题第8题) 。使用指针方法。使用变量的引用。比较这两种方法的特点和使用方法。实验二 C+对C 的扩充2.1 实验目的1进一步了解和熟悉VC+6.0开发环境,学会在VC+6.0环境下调试程序;2熟悉C+中简单的标准输入输出函数的实用;3理解const修饰符的作用,并学会应用const修饰符;4理解内置(内联)函数的优缺点并学会使用内置函数;5理解和使用函数重载以及带默认参数的函数;6使用new和delete进行动态内存管理;7理解和使用引用。2.2 实验内容2.2.1 程序阅读1理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题
12、。#include using namespace std;int max_def(int x, int y)return (xy?x:y);int max_def(int x, int y, int z)int temp = 0;return (temp=(xy?x:y)z?temp:z;double max_def(double x, double y)return (xy?x:y);int main()int x1 = 0;int x2 = 0;double d1 = 0.0;double d2 = 0.0;x1 = max_def(5,6);x2 = max_def(2,3,4);d1
13、 = max_def(2.1,5.6);d2 = max_def(12.3,3.4,7.8);-coutx1=x1endl;coutx2=x2endl;coutd1=d1endl;coutd2=d2endl;-return 1;问题一:上述程序的输出结果是什么?答:问题二:哪些情况可以参与函数的重载?答:问题三:处调用的是哪个函数?答:问题四:处的输出结果为什么是d2=12,而不是d2=12.3?答:2理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;int main()int *p1 = new int; -int
14、*p2 = new int(0); -char *p3 = new char64; -return 1;问题一:、处动态申请内存分别代表什么不一样的意思?答:问题二:该程序存在什么隐患?改正该程序使隐患消除。答:3理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;void swap(int a, int b)int temp = a;a = b;b = temp;void swap(int *a, int *b)int temp = *a;*a = *b;*b = temp;int main()int i = 5;in
15、t j = 10;coutBefore swap: i=i,j=jendl;swap(i,j); -coutAfter the first swap: i=i,j=jendl;swap(&i,&j); -coutAfter the second swap: i=i,j=jendl;return 1;问题一:上述程序的输出结果是什么?答:问题二:处函数调用后并不能实现两个数的交换,而处却可以,为什么?答:问题三:处调用的是哪个重载函数?答:2.2.2 程序设计1使用函数重载的方法定义两个重名函数,分别求出整形数平面间两点间距离和双精度平面间两点间距离,如果没有输入第二点的坐标则默认为圆点(0,0
16、)。2设计一个函数:exchange(float x, float y, float z),当调用exchange(a,b,c)时,将a的内容赋值给b,b的内容赋值给c,c的内容赋值给a,要求采用引用的方式来实现。2.3 思考题1自己设计一个程序,测试const的三种用法:指向常量的指针,常指针,指向常量的常指针。2编写一个函数,实现两个字符串变量的交换,要求参数用引用。实验三 类和对象(一)3.1 实验目的1类的定义;2类对象的使用;3类成员变量的定义和使用;4类成员函数的定义和使用;5理解类的作用域;6理解类的声明;7理解类中private和public权限的声明依据。3.2 实验内容1理
17、解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;class CDatevoid Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return (year%4 = 0 & year%100 != 0)|(year%400 = 0); public:void Print() coutmonth/day/yearendl;private:int month; int day; int year;void main()CDa
18、te a; - a.Set(10,15,2007) ; a.Print();问题一:以上程序编译能通过吗,为什么,应该如何改正?答:问题二:类CDate中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限?答:问题三:处语句的意思是什么?答:2理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;int month;/全局变量 int day; int year;void Set(int m,int d,int y) -a:month=m; -:day=d; :year=y;class CDatepublic: voi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 实验 指导书 谭浩强 49
限制150内