C++实验讲义-新.doc
《C++实验讲义-新.doc》由会员分享,可在线阅读,更多相关《C++实验讲义-新.doc(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+实 验 指 导目 录1.绪言21.1上机实验的指导思想和要求21.2、关于程序的调试和测试32.实验内容与安排82.1 C+实验环境8A: Linux操作系统下编译运行C+程序的方法步骤:8B: Windows操作系统下编译运行C+程序的方法和步骤1322 实验项目1 C+运行环境及基础语法212.2.1 实验内容:最简单的C+程序运行调试212.2.2 实验内容. 结构化程序设计基础212.2.3实验内容 引用和函数222.2.4实验内容 函数的重载和默认参数222.3 实验项目2 运用类和对象进行程序设计232.3.1 实验内容 类基本语法练习232.3.2 实验内容 运算符重载252
2、.3.3 实验内容 构造和析构函数262.3.4 实验内容 I/O流和文件操作2724 实验项目3 面向对象程序设计综合应用272.4.1 实验内容 多态与虚函数基本概念272.4.2实验内容 多态的综合应用302. 5实验项目4 小型综合程序设计(选做)31附录:32编辑器vi的使用:32使用g+编译c+程序35使用gdb调试程序36一个调试示例36Makefile介绍及简单Makefile文件的编写39关于程序的编译和链接39什么是Makefile39makefile的“语法”规则401.绪言1.1上机实验的指导思想和要求1.1.1上机实验的目的 学习C+程序设计不能满足于懂得了”,满足于
3、了解了语法和能看懂书上的程序,而应当掌握程序设计的全过程,即能独立编写出源程序,独立上机调试程序,独立运行程序和分析结果。设计c+的初衷是为方便开发大型程序,虽然在学校中初学c+时还没有机会接触到大型程序,更不可能编写出能供实际应用的大型程序,而只能接触到比较简单的程序。但是应当通过学习C+课程,对C+有比较全面的、然而是初步的认识,为今后进一步学习和应用C+打下良好的基础。 程序设计是一门实践性很强的课程,必须十分重视实践环节。许多实际的知识不是靠听课和看书学到手的,而是通过长时间的实践积累的。要提倡通过实践去掌握知识的方法。必须保证有足够的上机实验时间。 上机实验的目的,绝不仅是为了验证教
4、材和讲课的内容,或者验证自己所编的程序正确与否。学习程序设计,上机实验的目的是: 1加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,但它们是很重要的,初学者的程序出错往往错在语法上。通过多次上机,就能自然地、熟练地掌握。通过上机来掌握语法规则是行之有效的方法。 2熟悉所用的计算机系统的操作方法,也就是了解和熟悉C+程序开发的环境。一个程序必须在一定的外部环境下才能运行,所谓“环境”,就是指所用的计算机系统的硬件和软件条件,或者说是工作平台。使用者应该了解为了运行一个C+程序需要哪些必要的外部条件(例如硬件配置、软件配置),可以利用哪些系统的功能来帮助自己开发程序。
5、每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一两种计算机系统的使用,再遇到其他系统时便会触类旁通,很快地学会。3学会上机调试程序。也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。经验丰富的人,在编译连接过程中出现“出错信息”时,一般能很快地判断出错误所在,并改正之。而缺乏经验的人即使在明确的“出错提示”下也往往找不出错误而求助于别人。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,还要求自己动手实现。对程序设计来说,则要求会编程序并上机调试通过。因此调试程序不仅是得到正确程序的一种手段,而且它本身就是程序设计课程的一个重要的内容和基本要求,应
6、给予充分的重视。调试程序固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积经验,而且有些经验是只能“会意”难以“言传”。别人的经验不能代替自己的经验。调试程序的能力是每个程序设计人员应当掌握的一项基本功。 因此,在做实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变某些语句等),再进行编译、连接和运行。甚至于“自设障碍”,即把正确的程序改为有错的(例如语句漏写分号;比较符“=”错写为赋值号“=”;使数组下标出界;使整数溢出等),观察和分析所出现的情况。这样的学习才会有真正的收获,是灵活主动的学习而不
7、是呆板被动的学习。1.1.2上机实验前的准备工作 在上机实验前应事先做好准备工作,以提高上机实验的效率,准备工作至少应包括: 1.了解所用的计算机系统(包括C+编译系统和工作平台)的性能和使用方法; 2.复习和掌握与本实验有关的教学内容; 3.准备好上机所需的程序。手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。初学者切忌不编程序或抄别人程序去上机,应从一开始就养成严谨的科学作风; 4.对运行中可能出现的问题事先作出估计,对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意;5.准备好调试和运行时所需的数据。1.1.3上机实验的步骤 上机实验时应该一人一组,独立上机。上机
8、过程中出现的问题,除了是系统的问题以外,一般应自己独立处理,不要轻易举手问教师。尤其对“出错信息”,应善于自己分析判断。这是学习调试程序的良好机会。 上机实验一般应包括以下几个步骤: 1.进入C+工作环境(如Linux的终端)。 2.输入自己所编好的程序。 3.检查一遍已输入的程序是否有错(包括输入时打错的和编程中的错误),如发现有错,及时改正。 4.进行编译和连接。如果在编译和连接过程中发现错误,屏幕上会出现“出错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到顺利通过编译和连接为止。 5.运行程序并分析运行结果是否合理和正确。在运行时要注意当输入不同数据时所得到的结果
9、是否正确。6.输出程序清单和运行结果。1.1.4实验报告 实验后,应整理出实验报告,实验报告应包括以下内容: (1)题目: (2)程序清单(计算机打印出的程序清单); (3)运行结果(必须是上面程序清单所对应打印输出的结果); (4)对运行情况所作的分析以及本次调试程序所取得的经验。如果程序未能通过,应分析其原因。1.1.5 实验内容的安排 每个实验包括若干个题目,上机时间每次为2学时。各单位在组织上机实验时可以根据条件做必要的调整,增加或减少某些部分。在实验内容中有“*”的部分是选做的题目,如有时间可以选做这些部分。 学生应在实验前将教师指定的题目编好程序,然后上机输入和调试。1.2、关于程
10、序的调试和测试1.2.1程序错误的类型 为了帮助读者调试程序和分析程序,下面简单介绍程序出错的种类。 1.语法错误。即不符合C+语言的语法规定,例如将main错写为naim,括号不匹配,语句最后漏了分号等,这些都会在编译时被发现并指出。这些都属于“致命错误”,不改正是不能通过编译的。对一些在语法上有轻微毛病但不影响程序运行的错误(如定义了变量但始终未使用),编译时会发出“警告”,虽然程序能通过编译,但不应当使程序“带病工作”,应该将程序中所有导致“错误(error)”和“警告(warning)”的因素都消除,再使程序投入运行。2.逻辑错误。这是指程序无语法错误,也能正常运行,但是结果不对。例如
11、 求s=l+2+3+100,有人写出以下语句: for(s=0,i=l;iab: c=ab; coutcendl; return 0; 当输入的b为非零值时,运行无问题。当输入的b为零时,运行时出现“溢出(overflow)”的错误。如果在执行上面的cin语句时输入则输出C的值为2,显然是不对的。这是由于输入的数据类型与输入格式符不匹配而弓起的。1.2.2程序的测试 程序调试的任务是排除程序中的错误,使程序能顺利地运行并得到预期的效果。程序的调试阶段不仅要发现和消除语法上的错误,还要发现和消除逻辑错误和运行错误。除了可以利用编译时提示的“出错信息”来发现和改正语法错误外,还可以通过程序的测试来
12、发现逻辑错误和运行错误。 程序的测试的任务是尽力寻找程序中可能存在的错误。在测试时要设想到程序运行时的各种情况,测试在各种情况下的运行结果是否正确。程序测试是程序调试的一个组成部分。 有时程序在某些情况下能正确运行,而在另外一些情况下不能正常运行或得不到正确的结果,因此,一个程序即使通过编译并正常运行而且结果正确,还不能认为程序没有问题了。要考虑是否在任何情况下都能正常运行并且得到正确的结果。测试的任务就是要找出那些不能正常运行的情况和原因。下面通过一个典型的和容易理解的例子来说明测试的概念。 求一元二次方程ax2+bx+c=0的根。 有人根据求根公式x1、2=,编写出以下程序:#includ
13、e#includeusing namespace std;int main()float a,b,c,disc,xl,x2;cinabc;disc=b*b-4*a*c;xl=(-b+sqrt(disc)(2*a);x2=(-bsqrt(disc)(2*a);cout”xl=”x1”,x2=”x20 有两个不等的实根: x1,2=b-4ac=0 有两个相等的实根: x1=x2=-b-4ac0a0, b2一4ac=0a0, b2一4ac0a=O,b0a=O,b=O,c=Oa=O,b=O,c0 应当分别测试程序在以上6种情况下的运行情况,观察它们是否符合要求。为此,应准备6组数据。用这6组数据去测试
14、程序的“健壮性”。在使用上面这个程序时,显然只有满足情况的数据才能使程序正确运行,而输入满足情况的数据时,程序出错。这说明程序不“健壮”。为此,应当修改程序,使之能适应以上6种情况。可将程序改为:#include#includeusing namespace std;int main()float a,b,c,disc,x1,x2,p,q; coutabc;if(a=0) if(b=0) if(c=0) cout”It iS trivial”endl: else cout”It is impossible”endl: else cout”It has one solution:”endl; c
15、out”x=”-cb=O) if(discO) cout”It has two real solutions:”endl; x1=(-b+sqrt(disc)(2*a); x2=(-b-sqrt(disc)(2*a); cout”xl=”xl”,x2=”x2endl; else cout”It has two same real solutions:”endl; cout”xl=x2=”-b(2*a)endl; else cout”It has two complex solutions:”endl; P=-b(2*a); q=sqrt(-disc)(2*a); cout”xl=”p”+”q”
16、i,x2=”p”-”q”i”endl; return 0:为了测试程序的“健壮性”,我们准备了6组数据:3,4,1 1,2,1 4,2,1 0,3,4 0,0,0 0,0,5分别用这6组数据作为输入的a,b,C的值,得到以下的运行结果: input a,b,c:3 4 1 It has two real solutions: xl=-0.33,x2=-1 input a,b,c:1 2 1 It has two same real solutions: x1=x2=-1 input a,b,c:4 2 1 It has two complex solutions: xl=-0.25+0.43i
17、, x2=-0.250.43i input a,b,c:0 3 4 It has two one solution: x=1.33 input a,b,c:0 0 0 It is trivial input a,b,c:0 0 5 It is impossible 经过测试,可以看到程序对任何输入的数据都能正常运行并得到正确的结果。 以上是根据数学知识知道输入数据有6种方案。但在有些情况下,并没有现成的数学公式作为依据,例如一个商品管理程序,要求对各种不同的检索作出相应的反应。如果程序包含多条路径(如由if语句形成的分支),则应当设计多组测试数据,使程序中每一条路径都有机会执行,观察其运行是否
18、正常。 以上就是程序测试的初步知识。测试的关键是正确地准备测试数据。如果只准备4组测试数据,程序都能正常运行,仍然不能认为此程序已无问题。只有将程序运行时所有的可能情况都作过测试,才能作出判断。 测试的目的是检查程序有无“漏洞”。对于一个简单的程序,要找出其运行时全部可能执行到的路径,并正确地准备数据并不困难。但是如果需要测试一个复杂的大程序,要找到全部可能的路径并准备出所需的测试数据并非易事。例如:有两个非嵌套的if语句,每个if语句有两个分支,它们所形成的路径数目为2x2=4。如果一个程序包含100个if语句,则可能的路径数目为2100=11030,要测试每一条路径几乎是不可能的。实际上进
19、行测试的只是其中一部分(执行几率最高的部分)。因此,经过测试的程序一般还不能轻易宣布为“没有问题”,只能说“经过测试的部分无问题”。 学习者应当了解测试的目的,学会组织测试数据,并根据测试的结果修改完善程序。2.实验内容与安排2.1 C+实验环境A: Linux操作系统下编译运行C+程序的方法步骤:Linux操作系统使用简介:和Windows类似,Linux是多用户操作系统,但比Windows更安全,每个用户有自己的文件夹,自己的操作路径,只能操作自己的文件,不能访问或删除其他用户的文件或者系统文件,即一般情况下如果是普通用户登录,随便怎么操作对系统是没有影响的。Linux下有个最高权限的用户
20、,称为“根用户”(root), 可以对系统做出更改,包括访问系统文件,访问其他用户的文件等,并执行系统的配置,如分配用户,更改用户的权限,更改文件的权限,设置日期时间,启动,安装软件等。开机启动后进入到登录界面,以指定用户和密码登录后,通常是启动到图形界面。在本课程中使用字符界面。可以使用CTRL+ALT+F1三个键切换到字符界面,再输入用户名和密码登录。CTRL+ALT+F7切换回图形界面。字符界面称为SHELL,和Dos提示符类似。用户在字符界面登录后直接进入到自己的主目录,比如是root用户,提示符类似于 /home/root,如果是zhang用户,则是/home/zhang,接下来输入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 讲义
限制150内