《C++程序设计语言》教学大纲
课程编号: 06x8039
课程名称: C++程序设计语言(The C++ Programming Language)
上课学时: 33, 实验学时: 30, 学分:X, 周学时数:2(或3)
开课学期:春、秋季
先修课程: 计算机导论或计算机文化基础、一门编程语言、数字逻辑、计算机组成原理和汇编语言及数据结构(可同时)
后续课程:数据结构与算法、编译技术、数据库原理、软件工程等。
一、课程教学目标
C++程序设计语言是本科生学习的最重要的语言之一,也是大部分课程设计、课程实践所用语言,同时它们也是目前工程项目主要编程语言。因此,本课程目的在于使学生从一开始就培养良好的程序设计风格, 学会用结构化和面向对象,以及工程化的方法编写程序,并初步具备解决实际问题的能力。学生应掌握语言的基本结构,各种数据类型和控制流程的语法及语义,与其它高级程序设计语言的异同以及文件的使用,特别对最能体现语言特点的部分(如各种运算符,数组与指针操作,函数参数中的传递,动态存储分配等)要能领会贯通,并通过学习了解结构化和面向对象程序设计思想,以及接受到程序设计方法、技巧,风格的训练;通过C++程序设计语言课程的学习,学生应掌握C++ 的语法和OOP的基本概念,了解C与C++之间的细微差别,并利用C++提供的机制大量编写与调试面向对象程序,使本课程为后续课程设计与实践或毕业设计运用程序设计技术打下扎实的基础。
二、教学内容及基本要求
第1章 概述
主要内容: 介绍计算机常用基本概念,算法、语言和程序的关系、算法的特点及描述、软件开发工程化和软件生存期(传统和现代)(软件测试重要性的举例)、软件产业的发展需求、面向过程和面向对象的差异、面向对象的方法、面向对象的软件开发、程序的开发过程。
重点:软件测试重要性、面向对象的方法、面向对象的软件开发、程序的开发过程。
难点: 面向过程和面向对象的差异、面向对象的软件开发。
基本要求:要求学生了解软件测试重要性;能够区分面面向过程和面向对象程序设计的差异。掌握面向对象的基本概念、以及面向对象的软件开发、程序的开发过程。
第2章 C++简单程序设计
主要内容: C++语言概述、基本数据类型和表达式、数据的输入与输出、算法的基本控制结构、自定义数据类型。
重点: C++语言特有的运算符及其所构成的表达式,流程控制,各种自定义数据类型的使用。
难点: C++语言特有的运算符(如++, --, 逻辑运算的短路问题等),引用自身的结构。
基本要求:要求学生了解C++程序的基本数据类型及各类数值范围;掌握不同数据类型之间的转换,以及C++语言中的各种运算符的优先级和结合规则;熟练运用流程控制算法最小集及扩充结构灵活编程。能正确声明结构类型和结构变量的定义及使用, 掌握结构成员的引用方法, 并能应用结构来实现链表、二叉树及有关操作;能正确声明联合类型和联合变量的定义及使用, 正确区分结构与联合变量的不同(语义及存贮形式);能使用类型定义来定义复杂的类型;能准确掌握枚举变量和其用途。会使用位运算符进行各种计算或移位。
第3章 函数
主要内容: 函数的定义与说明、参数传递、递归函数、内置函数、带缺省形参值的函数、函数重载、函数模板、使用C++系统函数。
重点: 函数中的参数值、地址和引用传递,以及返值问题,函数重载。
难点: 参数传递方式,参数个数不定的应用,较复杂的递归函数,带有各种const的函数。
基本要求:要求学生能正确的定义及调用函数, 能区分函数定义与函数声明的意义和作用, 掌握函数中的参数值、地址和引用传递的含义,以及返值问题;会编写一般递归函数和重载函数,能够正确使用内置函数、函数模板编写程序;能正确使用#include来包含文件和使用C++系统函数;对#define的用法能理解。
第4章 类与对象
主要内容:面向对象的思想,OOP的基本特点,类概念和声明,对象,构造函数,析构函数,内联成员函数,拷贝构造函数,类的组合,类模板。
重点: 类的声明和对象的定义,构造函数,析构函数,类作用域及存取说明符。
难点: 类的构造函数、类的组合与应用。
基本要求:要求学生了解OOP的基本特点,准确掌握C++类中的私有、受保护、公有数据成员和成员函数的说明方法, 掌握对类的对象进行定义及对象的使用方法,并能正确理解和运用构造函数(无参、带参和缺省参数值的用法);会正确使用内联成员函数,理解拷贝构造函数、析构函数的作用,以及类的组合和使用;会创建类的模板并使用。
第5章 C++程序的结构
主要内容: 作用域与可见性、对象的生存期、数据与函数、静态成员、友元、共享数据的保护、编译预处理命令、多文件结构和工程。
重点: 作用域与可见性、静态成员、多文件结构和工程。
难点: 类作用域与文件作用域及可见性、静态成员、多文件结构中数据及函数传递问题。
基本要求:要求学生了解编译预处理命令,掌握函数原型、块、类、文件的作用域和可见性,以及对象的生存期;能够正确使用数据与函数、静态成员、友元函数和友元类。学会保护共享数据;在多文件结构中,正确掌握数据及函数传递问题,以及运行方法。
第6章 数组、指针与字符串
主要内容:数组、指针、指针与数组、指针与函数、对象指针、动态存储分配、字符串与string类。
重点: 指针的定义和使用,动态存储分配。
难点: 指针的各种用法, 指针与数组之间的关系
基本要求:要求学生了解const指针与const对象,以及string类的应用;掌握对象数组及初始化、void类型指针;指针的加减一个整数、关系运算及所属类型的作用;正确理解this 指针的含义;会正确使用指针与数组、指针与函数、对象指针、以及指针在动态存储分配中的运用;能够区分new与malloc的不同点;掌握字符串常用函数的用法。
第7章 继承与派生
主要内容:类的继承与派生、类成员的访问控制、单继承与多继承、派生类的构造与析构函数、派生类成员的标识与访问、虚基类、赋值兼容原则。
重点:类继承中的构造函数及访问控制,虚基类,赋值兼容原则。
难点:继承中构造函数的调用次序,类成员的访问控制,有虚基类时的构造函数。
基本要求:要求学生准确掌握C++中的简单继承与多继承,在创建一个派生类的实例时,掌握构造函数的调用次序,以及在派生类中引用和存取基类成员;正确理解虚基类,并掌握有虚基类时的构造函数的使用方法;正确理解赋值兼容原则。
第8章 多态性(3学时)
主要内容: 多态性、运算符重载、虚函数、纯虚函数、抽象类。
重点:实现多态的三种方法,抽象类的作用与用法
难点:理解和使用多态,运算符重载和动态联编。
基本要求:要求学生能正确理解虚函数和多态性的含义和功能;掌握多态的三种实现方法;正确使用运算符重载、虚函数、纯虚函数和抽象类。
第9章 群体类
主要内容: 线性群体(线性群体的概念、直接访问群体--数组类、顺序访问群体--链表类、栈类、队列类)。
重点:线性群体和非线性群体的概念,以上线性群体的操作。
难点:设计各类模板,链表类与循环队列类对象的增、删、改、清、查及I/O。
基本要求:要求学生了解线性群体的概念,正确掌握线性群体的存取或访问方法(直接访问或顺序访问);能够对一般数组或链表的线性群体,或特殊的线性群体——栈、循环队列类对象进行增、删、改、清、查及I/O的操作。
第10章 群体数据的组织
主要内容:插入排序、选择排序、交换排序、顺序查找、折半查找。
重点:以上各种排序与查找方法。
难点:设计各种函数模板,群体数据的各种排序与查找算法。
基本要求:要求学生熟练掌握以上各种排序与查找的特点和过程,设计各种函数模板,对于任意给出的群体数据,能够熟练地采用指定排序方法或查找方法进行排序或查找。
第11章 流类库与输入/输出
主要内容:I/O流的概念、输出流、输入流、输入/输出流。
重点:格式化输入/输出。
难点:定义用户自已的插入和析取运算符
基本要求:要求学生掌握C++中的流库, 并能应用它进行二进制、文本和格式输入/输出, 文件输入/输出, 并能自已定义插入和析取运算符。
第12章 异常处理
主要内容:异常处理的基本思想、C++异常处理的实现、异常处理中的构造与析构。
重点:异常处理的实现,异常处理中的构造与析构。
难点:如何在C++程序中使用异常处理。
基本要求:要求学生掌握C++中的模板和异常处理, 并能在实际应用中使用异常的捕捉与处理。
三、教学安排及方式
本课程是一门实践性很强的课, 课堂教学主要讲授程序设计的基本概念、方法和技巧,以及简单的例子,学生必须通过上机实践来加深有关内容的理解和应用,同时,学生应进行必要的课前准备。课堂上还将根据工程软件的特点,并结合语言本身讲解大型软件的编程技巧以及常见错误的分析,着重培养学生解决实际问题的能力以及良好的编程风范。
本课程上机习题不少于30题,学生应在每一章的内容讲完后独立完成相应的章节中的思考题、上机题和实验题。
四、考核方式
本课程考试成绩由笔试和上机完成作业的数量和质量来决定。(条件容许可采用上机考试),笔试采用闭卷方式,内容主要包括C++程序设计语言中的各个知识点,以及程序设计,主要用以检查学生对课堂内容的掌握情况和程序设计能力。
五、参考教材
《C程序设计语言》,B.W. Kernighan, D.M.Ritchie著,徐宝文等译;机械工业出版社,2001年3月, 28元
《C语言程序设计教程》,谭浩强、张基温、唐永炎编著;高等教育出版社,1998年7月,18.6元
《C++程序设计语言教程》,麦中凡著;北京航空航天大学出版社,1995年,25元
《C++编程思想》,(美)Eckel,B. 著;刘宗田等译;机械工业出版社,2001年1月,39元
必备参考教材(或相应更高版本):
《C++语言程序设计》,郑莉、董渊编著;清华大学出版社,
2001年7月第2版,26元 书号:ISBN 7-302-04504-6/TP?2662
《C++语言程序设计习题与实验指导》,郑莉、傅仕星编著;清华大学出版社,
2000年7月第1版,25元 书号:ISBN 7-302-03926-7/TP?2294
六、开课老师
姓名:张永鸣 单位:计算机学院教学实验中心 电话:7613、7623