ImageVerifierCode 换一换
格式:DOCX , 页数:106 ,大小:528.54KB ,
资源ID:18782931      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18782931.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(教学指导书第二版Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

教学指导书第二版Word文件下载.docx

1、介绍怎样在面向对象的程序设计中使用异常处理技术来处理一些很难查找甚至是无法避免的运行时错误和异常。总之,不是泛泛介绍面向对象的C+的语法和框架,而是突出实用技术,包括完善的封装、派生、多态和模板,在构造函数中动态分配资源、在析构函数中释放资源和异常处理,这是面向对象的C+程序设计的精髓。本教材要求学生能熟练应用多态(重载和超载),熟练应用模板,熟练应用派生。习惯在构造函数中动态分配资源、在析构函数中释放资源和异常处理的方式。第二,强调算法,注意介绍有关独立于任何特定编程语言的算法概念和结构,即突出程序设计而不是语法。强调算法,不是忽视语法,而是不要繁琐的钻牛角尖的语法,我们要的是基本的常用的语

2、法,但更多的是模仿。不是知道的语法越多,程序编得越好,而是自己动手编程越多,程序编得越好。第三,培养面向对象程序设计能力。掌握怎样从客观事物中抽象出类来的方法。基础教学与实践教学相结合。在基础教学中采用Windows平台下的控制台方式(命令行方式)以突出编程能力的培养。在实践部分比较全面地学习标准的Windows图形界面编程。采用研究型学习进行课程设计。本教材第二版做了大幅改动。首先例题和习题解答主体按三个熟练应用和一个习惯的要求,进行改编与重组,更加突出了面向对象C+程序设计的实用技术;采用统一的规范的编程模式,不再体现编程的多样性,降低了学习难度。其次是调整章节安排与精简教学内容。第三,为

3、了更好地配合精讲多练,安排了二十九个(其中两个选做)与教学内容紧密相关的同步实验。第四,更新部分不完全符合ISO14882 C+语言标准的内容。性质与任务程序设计课程与数学、物理、外语等一样,是大学生的通识教育课程,也是从技术角度学习计算机的主要基础课,包括面向对象程序设计及最基本的数据结构和软件工程的知识。其任务是培养学生的面向对象的编程能力,也锻炼大学生的逻辑思维能力(计算机思维方式)。学时安排本教程建议授课时数48学时,习题课8学时,上机实验56学时(含课外上机)。另有课程设计(小型软件设计的实践环节),16学时加上机实验32学时(含课外上机)。课堂教学内容分四部分,共十二章。第一部分,

4、包括第一到第三章,是基础部分。介绍C+程序的基本组成和编写方法,函数的递归以及最简单的常用算法。这一阶段代码的编写方法,应该是课堂教学的重点。第二部分,包括第四到第五章,是面向对象的入门部分。介绍类对象的组成,构造函数和析构函数的编写,运算符的重载,还有数组与指针的概念和两者之间的对应关系。本阶段逐步过渡到以算法为重点,逐渐淡化代码的编写细节。第三部分,包括第六到第八章,是核心部分。介绍通用算法的编写方法,特别是数据结构的基本算法,和软件的再利用。第六第七两章采用模板技术,第八章采用继承与派生。一般来讲,本阶段以算法为重点,不再细讲代码的编写。第四部分,包括第九到第十一章(标准模板库选读),是

5、扩展部分。包括:输入输出重载、在构造函数中动态分配资源、在析构函数中释放资源和异常处理、以及标准模板库。本阶段主要学习面向对象的C+程序框架构造知识。考虑到各专业相关课程配置不同,生源不同,授课内容可有筛选。选读内容,可以作为学有余力的同学的自学内容,做到因材施教。其实讲哪些内容,不讲哪些内容,教师完全可以自主掌握,关键是要学生掌握课程特色中所言的三个熟练应用和一个习惯。教学方法现实情况是:第一,在大一的基础课程中,大学生将程序设计排在数学、外语和物理之后,不可能投入过多的精力,大学生如果要放弃某门课以保证集中精力通过其他课时,最不熟悉的本课程列在首位;第二,大学生对这门课学习的期望值很高,但

6、对学习时可能遇到的困难估计不足;第三,本科生总学时数下降,尽管计算机课程重要性上升,但总学时不可能增加;第四,大学生上机实践的条件大大改善,特别有利于贯彻先进的精讲多练的教学思想。所以在学时有限和学生所投精力有限的条件下,围绕课程特色中提到的面向对象关键技术进行精讲多练是第一条。为此安排了29个同步实验。一年级大学生认为应试教育天经地义,大学应延续中学的应试教育,不懂得主动学习。要培养大学生的自学能力。预习是本课程对学生的基本要求。整个教学强调过程,知识积累的过程,能力培养的过程,使学生能快乐地学习。(但绝不是自学,实践经验指出,自学出来的学生实际应用时编出来的程序往往效率低,错误百出,而且别

7、人看不懂,无法交流,原因就在不会规范化地编程。)一定要避免应试教育。教学要求高于考试要求,必须给学生真本事。考试可以多样化,面要广,难度要适中。切忌题目过偏过难,切忌出弯弯绕的语法题,要考学生编程的实际能力,这是大学的第一门计算机课,不要把多数学生的自信心毁了。授课时要采用案例教学法,从实例引出语法,尽管书中多数地方为了阅读方便是将语法条文单列,甚至放在前面,但上课时不要顺序往下讲。现在提供的电子教案只是参考,修改和重编的过程也是熟悉教学内容和发现问题的过程。要求每位老师自己做有自己个性的教案。面向对象程序设计的原代码通常比较庞大,原因是数据与数据的操作封装在一起,原则上包含的操作要全面,正是

8、众多的成员函数使学生认为自己面对的是一个庞然大物,吓也吓蒙了。教师应该指出成员函数是一个个独立的操作,每一个成员函数都是简单的。可以给学生讲讲庖丁解牛的故事,要求学生做到目无全牛,也就是面向对象的程序要一个一个函数来编。习题与实验都是学生的实践机会,具体指导和讲评是必要的。特别是在学生尚未入门时具体指导尤其重要,最好是在实验室里配大屏幕显示,学生与教师演示同步操作,或用同步操作的教学软件。如无此条件,至少教师在第二章和第三章课堂教学时多做控制台应用程序设计全过程演示。在辅导实验时只可能解决少数学生的少数问题,提倡上机时学生互相讨论互相帮助。做习题,也提倡较难的题可以同学之间先讨论再独立完成。也

9、可以把部分习题的参考答案先发给学生作为参考,毕竟我们要求规范化编程,主要是灵活应用通用算法,不是创造别人看不懂的算法,初级阶段主要是模仿,见多识广后就能编出好的程序。讲评是在学生做完习题和实验之后,针对学生实际发生的最常见的错误进行的,也可以介绍一些同学的好作业,这是一个总结提高的过程。面向对象C+程序设计的习题基本是在一个C+的类或类模板定义中添加一些成员函数。建议可以给学生提供完整的类定义和需添加的成员函数的声明,以及检测其功能的主函数代码,同时给出需添加的成员函数的思路或提示,仅让学生编写需添加的成员函数,可能效果会更好。建议将给教师使用的习题参考答案,删去要求编写的函数,添加所需的说明

10、,再发给同学去做习题,这样即降低了难度也突出了重点,便于学生调通程序,同时提高了学生的信心和学习的效率。实验也可做类似的考虑。该教学体系培养的学生所编的程序给人的第一影响应该是:这是规范的面向对象的程序。对于需要计算机知识较多的专业,程序设计课程应考虑后续课程的需要。尤其是电气电子信息类专业的学生的后续课程中需要大量的面向过程的程序设计的基础知识,包括汇编语言的编程,单片机、嵌入式系统和DSP的C语言编程。面向对象的程序设计其实与面向过程的程序设计是密不可分的。在本课程中,算法的描述实际上是面向过程的,而面向对象是一种包装,它使程序的整体组织更合理,使用起来更方便。教学中应该合理地将两个方面有

11、机地结合起来,即细节上算法的编程和程序总体上的把握并重。在前三章的教学中对算法的描述,必须侧重于采用C+语言编程的细节的讲解,即培养学生对算法的编程能力。要求学生学会先分析算法,再画UML的活动图或普通的流程图,最后进行编程。特别是在“基本控制结构程序设计”和“函数”这两章的教学中要严格贯彻这一要求。“类与对象”和“数组与指针”两章是过渡阶段,对编程的细节的讲授随教学推进而逐渐淡化,对程序的整体掌握的要求逐渐加强,使学生的编程能力上一个台阶。从第六章起,算法表述的细节基本留给学生自己看,教师重点讲解脱离具体C+语言的算法本身的描述和程序整体的构造。一方面提高学生的自学能力,另一方面引导学生的编

12、程的大局观。要引导学生,不要做学生的尾巴,片面地降低要求。疑难问题解答索引 第一章 C+基础知识教学目的使大学生了解C+数据和运算的表述方法,简单的输入输出流类,引入广义的数据类型的概念。建议学时安排授课5学时初识C+程序,关键字与标识符,数据类型,变量与常量。2学时。运算符、表达式和语句,数组。简单的C+输入输出。1学时。教学方法提示从形式上看本章与面向过程的教材差异不大,但教学上要从面向对象的思维方式出发:数据类型总是与相关的算法封装在一起。不要说成算法是独立的。某种算法可以用于那些数据,这是面向过程的说法,并不切合实际。实际上不同数据类型是重载了运算符。例如加法,对于整型数,执行的是定点

13、运算;而浮点数,首先要对阶。再如除法,对于整型数,执行的是整除,商为整数,另有求余数的运算;而浮点数,商为浮点数,没有求余数的运算。从不同数据有不同算法出发,很容易理解为什么要将函数附属于数据类型。这样考虑问题,学生易于接受面向对象的思想。在本章中,存储方式的概念要建立起来,每一个变量总是在内存中分配有一块内存单元,不仅本章中的左值、表达式、字面常量和sizeof()与之有关,后面的算法的分析、函数的传值等等全与之有关。介绍数据的存储方式,并在教学的过程中经常利用它们,也是本书的教学特点之一。基本数据类型,相关的算术、关系和逻辑运算,是本章最基本的知识点。有关运算符的结合性是决定同一优先级的运

14、算符组合在一起时的运算次序,同一优先级的运算符有相同的结合性。如+、-的结合性是从左到右(左结合),则a+b+c-d的运算次序为:(a+b)+c)-d /先算a+b,再加c,最后减d赋值号=的结合性是从右到左(右结合),则a=b=c+d的运算次序为:a=(b=(c+d) /算出c+d的和,赋给b,再将b赋给a又如前+和单目负-的结合性是从右到左(右结合),则-+a的运算次序为:-(+a) /先做+a,再取相反数(加负号)这对算法描述是必须的,每一步做什么必须确定。运算符+,学生往往没有真正理解,普通+的结果放在暂存器(累加器)中,而+的值要返回给变量,变量的值变了。画一个演示图应该好一些。要讲

15、清楚a+与a+1的不同。在第五章的运算符重载教学中,+无返回值,+=有返回值,前者友元方式时参数要使用引用,学生不理解,说看不懂,细问发现不懂在+的运算过程。简单的数组概念的建立对算法的描述是很重要的,所以提前在这里引入。强调3点:第一,数组下标从0开始,这与简化大量的算法有关,不从0开始,相关的典型算法往往是错的;第二,数组不能作为整体处理,只能按元素处理;第三,数组的初始化方法。字符数组与字符串现在是要求能用,因为它的应用实在太广了。本章中只能讲清组织方式。特别是串结束符,有了它,串的处理方式与数组大为不同。教师必须在这里给学生点明,输出串是输出串内容,输出数组是输出数组首地址。输入输出方

16、式简介,强调会用。输入方面:第一,提醒学生字符输入容易出错,特别是数字与字符混合输入时,回车符的吸收问题要交待清楚。第二要讲清cin和cin.get()的差异,cin会自动跳过所有空白符(包括空格、制表、回车等等与格式有关的符号),cin.get()不会。第三,输入一系列数字时,用空格或回车分隔,不可以用逗号分隔。第四,输入字符串使用cin.getline()的方法,提醒同学:它提取回车符但不保存回车符,而是加一个串结束符。其他错误解答请参考本指导书第9章。输出方面:格式控制演示交代清楚,学生就会理解。字符输出要提醒同学,左值输出的才是字符,表达式输出的是ASCII码值,因为在表达式中已转为整

17、数。第二版中,C+程序改用标准库头文件,无后缀.h,并加using namespace std。教师应作简单说明。注意新标准要求main()函数必须返回int型,0为正常,否则返回其他整数。这样可以取代exit()等函数(exit()库函数通常在程序出错时用来退回到操作系统,详细见教材4.3.2节)。一般函数返回为int的也不可省略,否则编译器发出警告。疑难解答优先级与结合性优先级高的运算先做怎样理解?请参见下式:a*b+(-d) &+c等效为:(a*b+(-d)&(+c)完全按优先级,先做(-d),第2步做(+c),第3步作a*b,第4步做(a*b+(-d),第5步做(a*b+(-d)&(+

18、c)。这是人工的做法。计算机是从最低优先级开始,先处理最低优先级的“与”运算符左边的(因为与运算符的结合性是左右)操作数(a*b+(-d),括号内先做a*b,再做(-d),然后将两项相加;其次处理“与”运算符右边的操作数(+c);最后完成“与”操作。如果“与”操作符的左操作数为0,则直接完成与操作。即第1步做a*b,第2步做(-d),第3步做(a*b+(-d),第4步做(+c),第5步做(a*b+(-d)&如果第3步结果为0,则第4步不做。 只要交换律成立,这两种处理方法是等效的。计算机处理表达式的优先级和结合性是借用操作数栈和运算符栈来完成的,参见教材7.3.2 栈的应用。最后的运算次序就是

19、首先将最低优先级运算符各操作数项按该优先级的结合性依次处理,如果某操作数项为表达式,可同样按上面的规律处理。设有表达式:a+b,等效于(a+)+b还是a+(+b)?应该是前者,因为编译器在解释运算符时优先取尽可能长的符号。而a+b是错误的表达式,改为a+(+b)才是正确的。+a+,后+优先级高,等效于+(a+),是错的,因为(a+)后+未做,不是左值,不能进行前+。而(+a)+是正确的,(+a)前+已完成,是左值,后+可以进行。同样+a是正确的,而a+是错误的。+-a是错的,因为第3优先级结合性是左右,先做+,但-a不是左值。+(-a)也是错的,尽管(-a)优先级高,但结果是右值。-+a,等效

20、-(+a),是对的。-a,等效-(-a)是错的。而+a,等效+(+a),表面是错的,但至少VC+中单目正被忽略,所以是对的。(-a)+是错的,因为(-a)先做,(-a)不是左值。但-a+是对的,后+优先级高先做,a是左值。既然后+是在表达式运算结束后做+,那么该运算符的优先级有何意义?并且比前+高一级?从前面的例子可见优先级是有意义的,而且前+优先级定为第3级是合理的,由于后+结合性是左右,与前+不同,不可同列第3级,列第4级或单列一个级别也不合适,所以归入第2级。VC+的随机数VC+输出的随机数,并非随机数,而是特定值,如整型数,为0xcccccccc (-858993460),float型

21、为-1.07374e+008,duoble型为-9.25596e+061。关键字索引and 运算符 代替&;and_eq 运算符 代替&=;asm 运算符 用于标识混编的C+源程序中的汇编语言代码;auto 说明符 说明变量为自动变量,见主教材(下同)P.84;bitand 运算符 代替&bitor 运算符 代替 |;bool 说明符 用于说明布尔型变量,见P.7;break 语句 结束循环语句或开关语句的执行,见P.40和P.50;case 标号 用于开关语句,见P.40;catch 语句 用于异常处理中捕获异常子句,见P.343;char 说明符 用于说明字符型变量,见P.6;class

22、说明符 用于说明类类型,见P.106;compl 运算符 代替;const 说明符 用于说明常量类型,见P.11 、136、165、193和200;const_cast 运算符 常量强制类型转换运算符,详见后文;continue 语句 用于循环语句,结束本次循环,见P.52;default 标号 用于开关语句,表示其他情况,见P.40;delete 运算符 用于回收动态存储空间,见P.220;do 语句 用于循环语句,实现直到型循环,见P.44;double 说明符 用于说明双精度实型变量,见P.7dynamic_cast 运算符 动态强制类型转换运算符,详见后文;else 语句 用于组成双分

23、支结构条件语句,见P.34;enum 说明符 用于说明枚举类型,见P.59;explicit 说明符 取消构造函数隐式数据类型转换的功能,见P.357;export 说明符 用于,见本指导书第六章模板;extern 说明符 说明变量为外部变量,见P.84;false 逻辑值 对应0,表示逻辑假,见P.7;float 说明符 用于说明单精度实型变量,见P.7for 语句 用于一种当型循环语句,见P.46;friend 说明符 用于说明友元函数和友元类,见P.135和139;goto 语句 用于无条件转移程序执行次序,见P.52;if 语句 用于组成双分支结构条件语句,见P.34;inline 说

24、明符 用于说明内联函数,见P.96和110;int 说明符 用于说明整型变量,见P.6;long 说明符 用于说明长整型变量,见P.7;mutable 说明符 使const对象和成员函数的数据成员可修改,见后文;namespace 说明符 用于说明名字空间域,见P.148;new 运算符 用于分配动态存储空间,见P.220;not 运算符 代替 !not_eq 运算符 代替 !operator 说明符 用于定义运算符重载函数的函数名,见P.130;or 运算符 代替 |;or_eq 运算符 代替 |=;private 说明符 访问限定或派生方式为私有的,见P.107和267;protected

25、 说明符 访问限定或派生方式为保护的,见P.107和267;public 说明符 访问限定或派生方式为公有的,见P.107和267;register 说明符 说明变量为寄存器变量,见P.84;reinterpret_cast 运算符 重解释强制类型转换运算符,详见后文;return 语句 作为函数返回语句,见P.2和69;sizeof 运算符 计算类型或变量占用内存的字节数,见P.19;short 说明符 用于说明短整型变量,见P.7;signed 说明符 用于说明有符号整型变量,见P.7;static 说明符 说明静态变量或类的静态成员,见P.84和139;static_cast 运算符 静

26、态强制类型转换运算符,详见后文;struct 说明符 用于说明结构类型,见P.142;switch 语句 用于组成多分支结构开关语句,见P.40;template 说明符 用于参数化程序设计的模板构成,见P.186;this 说明符 指向具体类对象本身的指针,见P.166;throw 说明符 用于异常处理中抛出异常,见P.342;true 逻辑值 对应1或非0,表示逻辑真,见P.7;try 语句 用于异常处理测试程序块,见P.342;typedef 说明符 用于类型定义,见P.173;typeid 运算符 运行时类型信息运算符,详见后文;typename 说明符 用于模板定义时类型参数的说明,

27、见P.186;union 说明符 用于说明联合类型,见P.144;unsigned 说明符 用于说明无符号整型变量,见P.7;using 说明符 用于using声明或using指示符,见P.145;virtual 说明符 用于说明虚基类或虚函数,见P.278或289;void 说明符 用于说明无值类型,见P.7;volatile 说明符 修饰函数,表示表示该函数不做编译优化,见P.356;wchar_t 说明符 宽字符类型,见P.6;while 语句 用于循环语句,见P.43和44;xor 运算符 代替 ;xor_eq 运算符 代替 =;强制类型转换及其他运算符说明如下:static_cast 静态强制数据类型转换。格式如下:double a;int k;k=static_cast(a);/将双精度型的a的值转换为整型赋给k特别注意a本身的类型不变,仍是双精度,所有转换都是数值而非变量的转换。允许在两种类型之间进行标准转换(如void*转换为char*,int转换为float等等),包括允许基类指针到派生类指针的向下类

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1