课程名称:C++程序设计  C++ Programming

课程性质:通修课程

学分课时:4学分,64课时

主讲教师:

所属院系:某学院某系

电话:E-mail:

教学对象:全校本科生

考核方式:

平时出勤    10%

课后作业    30%

平时测试    10%

期末考试    50%(上机测试)

学术诚信:本课程要求学生遵从《某大学学生违纪处分条例》、《某大学学生学习违纪处分实施细则》、《某大学考场纪律》的规定。

教学方式:机房上课,注重编程实践,课上理解老师的例子,课下认真完成作业,作业之外尽量多做额外的编程练习题。

出勤要求:需遵从《某大学本科生课堂学习规范》,不能无故缺席上课;上课专心听讲,完成课上编程实践;课后认真复习课堂上的内容,独立完成教师布置的任务,并预习新课。学生缺勤不得多于总课时的四分之一。教师可以根据考勤情况决定学生是否可以参加考试、是否扣分。

01

课程简介

本课程是面向全校本科生开设的基础课程之一,旨在培养学生应用计算机编程解决实际问题的基本能力,要求学生不仅掌握高级编程语言的知识、编程技术和基本算法,更重要的是掌握程序设计的思想和方法,能灵活应用高级语言进行程序设计。通过上机实验,使学生将课堂所学理论知识与实际应用结合起来,熟练掌握调试程序的技巧和编写程序的方法。

课程主要内容包括:程序设计的基础知识、顺序/选择/循环结构的程序设计、C++运算符、C++数据类型、函数、数组、排序与查找、字符串、指针、结构与联合、对象和类、继承与多态、模板、运算符重载、输入输出、异常处理。

02

教学目标

本课程的教学目标包括:

1. 让学生掌握程序设计的基本知识。

2. 让学生掌握C++程序语言的基本语法规则。

3. 让学生能正确阅读和分析使用C++语言编写的程序。

4. 让学生能够运用C++语言的开发环境进行项目开发。

5. 让学生熟练掌握程序调试的方法和技巧。

6. 让学生熟练掌握结构化和面向对象程序设计的方法和技巧。

7. 让学生了解并初步掌握实用程序的开发和调试技术。

8. 让学生具备用C++语言开发实用程序的能力。

03

课程学习资料

佟强,汪波,黄浩 编著,C++程序设计,清华大学出版社,2024.12

04

学习效果及达成途径

1.学习效果

通过本课程的学习,希望达成的学习效果如下:

(1)掌握C++编程,具备参加实际项目开发的能力。

(2)掌握结构化和面向对象程序设计的基础理论,能够快速学习其他程序设计语言。

2.达成学习效果的途径

编程需要长期的思维训练,学好需要全面掌握C++语法的基础上多刷题。

05

时间安排

共16周,64学时,每周2次课,每次2学时。具体时间安排见教学内容中的每一章。

06

教学内容

第1章 条件语句

【教学目的与要求】

熟悉C++程序的开发环境。熟悉C++程序的结构。学会编写第一个C/C++程序。掌握条件语句if。理解C/C++语言中的非零即为真。

【主要内容】

1. 了解C++语言的基本符号

2. 了解C++语言的词汇(关键词、标识符、常量、运算符、标点符号等)

3. 熟悉C++程序的结构:main函数、输入输出、注释等

4. 能够使用Dev C++ 5.11开发环境编辑、编译、运行和调试程序

5. 顺序语句:赋值语句、表达式、复合语句、输入、输出语句和空语句等

6. 用if - else if - else语句实现分支结构

7. 能够使用Visual Studio 2022开发环境编辑、编译、运行和调试CMake程序

8. 能够使用VS Code 编辑、编译和运行C++程序

【教学总时数】 2

【参考资料】

教材第1章。

【作业与思考题】

教材第1章的全部习题。

第2章 循环语句

【教学目的与要求】

掌握C++程序设计的三种循环语句:while循环、do-while循环、for循环。

【主要内容】

1. 用while语句实现循环结构

2. 用do-while语句实现循环结构

3. 用for语句实现循环结构

【教学总时数】 4

【参考资料】

教材第2章。

【作业与思考题】

教材第2章的全部习题。

第3章 语句进阶

【教学目的与要求】

掌握C++程序设计的三种语句:switch语句、continue语句、break语句。

【主要内容】

1. switch语句

2. continue语句

3. break语句

【教学总时数】 2

【参考资料】

教材第3章。

【作业与思考题】

教材第3章的全部习题。

第4章 运算符

【教学目的与要求】

掌握C++语言的算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符,以及各个杂项运算符。了解运算符的优先级和结合性。

【主要内容】

1. 自增运算符、自减运算符

2. 条件运算符

3. 逗号运算符

4. 算数运算符

5. 关系运算符

6. 逻辑运算符

7. 位运算符

8. 赋值运算符、复合赋值运算符

9. 运算符的优先级和结合性

10. * 和 & 的作用

11. 作用域运算符

12. sizeof运算符

【教学总时数】 4

【参考资料】

教材第4章。

【作业与思考题】

教材第4章的全部习题。

第5章 数据类型

【教学目的与要求】

理解C++的数据类型,包括各种内置数据类型和用户自定义数据类型。

【主要内容】

1. 数据类型概述

2. 指针和引用

3. ASCII码

4. 整数类型:char、short、int、long、long long

5. signed和unsigned修饰整数

6. 浮点数

7. bool类型

8. void类型

9. enum枚举

10. typedef定义类型别名

11. 类型转换

【教学总时数】 4

【参考资料】

教材第5章。

【作业与思考题】

教材第5章的全部习题。

第6章 函数

【教学目的与要求】

理解函数调用的原理,能够区分函数的声明和定义,理解并运用递归、重载、默认实参。

【主要内容】

1. 函数的声明、定义和调用

2. 形式参数与实际参数,参数值的传递

3. 函数调用的原理

4. 函数重载

5. 默认实参

6. 递归函数

【教学总时数】 4

【参考资料】

教材第6章

【作业与思考题】

教材第6章的全部习题。

第7章 函数进阶

【教学目的与要求】

理解C++程序的内存结构,掌握全局变量、命名空间变量、局部变量、静态局部变量之间的区别,理解并运用函数参数传递的3种方式(传值、传地址、传引用),理解内联函数,掌握分离编译。

【主要内容】

1. 变量的作用域:程序的内存结构、全局变量、命名空间变量、局部变量、静态局部变量、文字常量区、堆内存。

2. 参数传递的方式:传值、传地址(形参为指针)、传引用(形参为引用)。

3. 内联函数:使用inline关键词修饰的函数,用于取代C语言中有参数的宏定义。

4. 分离编译:创建头文件,并使用编译指令 #ifndef 和 #define 避免重复编译。

【教学总时数】 4

【参考资料】

教材第7章

【作业与思考题】

教材第7章的全部习题。

第8章 数组

【教学目的与要求】

理解数组在内存中的存储结构,理解数组下标,掌握初始化数组的方法,理解数组和指针之间的关系,掌握将数组传递给函数的方法。

【主要内容】

1. 一维数组的定义和初始化

2. 一维数组和指针

3. 二维数组的定义和初始化

4. 二维数组和指针

5. 多维数组

【教学总时数】 2

【参考资料】

教材第8章

【作业与思考题】

教材第8章的全部习题。

第9章 排序与查找

【教学目的与要求】

排序算法和查找算法是一维数组的典型应用。理解算法的时间复杂度,理解什么是排序算法的稳定性。掌握冒泡排序、插入排序、选择排序,以及折半查找算法。

【主要内容】

1. 算法的时间复杂度:O(1)、O(n)、O(log n)、O(n2)

2. 排序算法的稳定性:相同关键字的记录排序后次序是否发生改变。

3. 冒泡排序算法:依次比较相邻的两个数,将小数放在前面,大数放在后面。

4. 插入排序算法:从无序表中取出一个元素,把它插入到有序表中使其依然有序。

5. 选择排序算法:从待排序的元素中选出最小的一个元素,放在已排好序的数列最后。

6. 折半查找算法:采用分治策略,可在最坏的情况下用O(log n)完成查找任务。

【教学总时数】 4

【参考资料】

教材第9章

【作业与思考题】

教材第9章的全部习题。

第10章 字符串

【教学目的与要求】

理解C字符串的结束符:空字符NUL(‘\0’),掌握字符数组中字符串的使用及初始化,理解const关键词修饰指针的不同用法,理解字符指针数组,理解命令行参数与环境变量,掌握常用字符串函数的用法并了解其代码实现。

【主要内容】

1. 字符数组:char buf[100];

2. const关键词修饰指针:const char *p 和 char* const p的区别。

3. 字符指针数组:const char* names[] = {“Tony”,“Mary”}。

4. 命令行参数与环境变量:int main(int argc, char** argv, char** env);

5. 字符串函数:strlen、strcpy、strcat、strcmp、切分字符串。

【教学总时数】 4

【参考资料】

教材第10章

【作业与思考题】

教材第10章的全部习题。

第11章 指针进阶

【教学目的与要求】

理解指针的概念,学会使用指针,能够用指针给函数传递参数,理解指针、数组和字符串之间的关系,学会使用字符串数组,正确理解命令行参数,掌握动态分配和释放内存的方法。

【主要内容】

1. 指针的概念

2. 指针变量的声明与指针变量的使用

3. 堆的概念

4. 使用new和delete动态分配和释放内存

5. 使用malloc和free动态分配和释放内存

6. 指针与数组

7. 字符串及相关函数(strlen、strcpy、strcat、strcmp等)

8. 命令行参数

9. 指针数组

10. 函数指针

【教学总时数】 4

【参考资料】

教材第11章

【作业与思考题】

教材第11章的全部习题。

第12章 结构与联合

【教学目的与要求】

掌握结构的定义、结构变量的定义以及访问结构成员的方法,熟练使用结构数组和结构指针数组。理解字节对齐、位域以及联合的概念。

【主要内容】

1. 定义结构

2. 使用结构变量:结构指针、结构成员的访问

3. 字节对齐

4. 位域

5. 结构数组和结构指针数组

6. 联合

【教学总时数】 2

【参考资料】

教材第12章

【作业与思考题】

教材第12章的全部习题。

第13章 面向对象

【教学目的与要求】

理解面向对象的概念,学会定义类和创建对象。理解数据抽象的概念,学会定义成员变量和成员函数。理解构造函数和析构函数的概念,掌握初始化列表、拷贝构造函数等相关知识。理解深拷贝的概念,并能在需要用的时候正确使用。理解this指针和类的静态成员。

【主要内容】

1. 面向对象基础:面向对象的特点、定义类、创建对象、成员变量与成员函数。

2. 对象的创建与销毁:构造函数、初始化列表、析构函数。

3. 拷贝构造函数、浅拷贝与深拷贝。

4. 对象与类的关系:this指针、类的静态成员。

【教学总时数】 4

【参考资料】

教材第13章

【作业与思考题】

教材第13章的全部习题。

第14章 类与对象的语法

【教学目的与要求】

掌握对象数组和对象指针数组的用法。掌握友元函数和友元类。学会const关键词修饰对象的用法。掌握类的分离编译。

【主要内容】

1. 对象数组与对象指针数组

2. 友元:友元函数与友元类

3. const关键词修饰对象

4. 类的分离编译

【教学总时数】 2

【参考资料】

教材第14章

【作业与思考题】

教材第14章的全部习题。

第15章 继承

【教学目的与要求】

通过继承现有的类建立新类,理解继承是如何提高软件重用性的,学会使用继承设计类的层次结构。理解多继承的概念,掌握虚拟继承,学会从多个基类派生出新类并解决二义性。理解派生类对象构建时,各个构造函数的调用顺序。

【主要内容】

1. 基类与派生类、继承与组合

2. 继承方式:公有继承、私有继承、保护继承。

3. 派生类对象的构造过程:构造函数的调用顺序、析构函数的调用顺序

4. 多继承:多继承导致的二义性、虚基类、派生类对象的构造顺序(多个基类时)

【教学总时数】 2

【参考资料】

教材第15章

【作业与思考题】

教材第15章的全部习题。

第16章 多态性

【教学目的与要求】

理解多态性的概念,能够区分静态多态性与动态多态性。掌握虚函数的用法,理解虚函数表现出运行时多态性的条件。理解虚析构函数的作用。掌握纯虚函数与抽象类。

【主要内容】

1. 静态多态性

2. 虚函数与多态性:函数的覆盖、虚函数、运行时多态、无多态性的情况。

3. 虚析构函数

4. 纯虚函数与抽象类

【教学总时数】 4

【参考资料】

教材第16章

【作业与思考题】

教材第16章的全部习题。

第17章 模板

【教学目的与要求】

理解模板的概念,掌握定义和使用模板函数、模板类的方法,了解标准模板库中的常用容器类。

【主要内容】

1. 模板简介

2. 函数模板

3. 类模板

4. 继承类模板

5. 类模板对象作为函数参数

【教学总时数】 2

【参考资料】

教材第17章

【作业与思考题】

教材第17章的全部习题。

第18章 运算符重载

【教学目的与要求】

理解运算符重载的概念和运算符重载的规则,掌握使用成员函数和非成员函数重载运算符的方法。

【主要内容】

1. 重载运算符:使用成员函数和非成员函数重载

2. 运算符重载的规则

3. 重载流运算符:流插入运算符“<<”、流提取运算符“>>”

4. 重载一元运算符:前缀自增运算符“++obj”,后缀自增运算符“obj++”、前缀自减运算符“--obj”,后缀自减运算符“obj--”、负号“-”、逻辑非运算符“!”

5. 重载关系运算符:<、<=、>、>=、==、!=

6. 重载赋值运算符:“=”只能通过成员函数重载、返回类型是同类对象的引用。

7. 重载下标运算符:“[]”也只能通过成员函数重载。

8. 函数对象:重载函数调用运算符“()”的类,其对象被称为函数对象。

9. 类型转换运算符:类型转换运算符将所在类的对象转换成基本数据类型的数据或其他类的对象。转换构造函数的作用是将一个其他类型的数据转成所在类的对象。

【教学总时数】 4

【参考资料】

教材第18章

【作业与思考题】

教材第18章的全部习题。

第19章 输入输出

【教学目的与要求】

学会使用C语言的文件函数以及C++的I/O流,并掌握格式化输入输出的方法。

【主要内容】

1. C语言文件函数:文件指针FILE*、文件函数、C读写文件实例。

2. C++输入输出流:输入输出流类库、操作流的函数、C++读写文件实例。

【教学总时数】 4

【参考资料】

教材第19章

【作业与思考题】

教材第19章的全部习题。

第20异常处理

【教学目的与要求】

理解异常处理的概念,学会使用C++的异常处理,掌握异常处理的规范及使用自定义异常。

【主要内容】

1. 异常的抛出与捕获

2. 异常处理的规范:异常捕获的匹配原则、异常安全

3. 预定义异常

4. 自定义异常

5. 异常处理的优缺点

【教学总时数】 2

【参考资料】

教材第20章

【作业与思考题】

教材第20全部习题。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐