《C++程序设计》课程大纲一、课程名称:C++程序设计二、课程性质:选修、专业课三、学时与学分:40学时,2.5学分四、课程先导课:C语言程序设计,数据结构,操作系统五、课程简介“C++程序设计”是一门基于面向对象理论、工程性和实践性都很强的专业课,是众多面向对象程序设计语言的基础。本课程介绍C++最新国际标准的语法概念,包括常量、变量、表达式、左值、右值、有址与无址引用、只读与挥发存储、语句、函数、线程、协程、重载、内联、默认参数、省略参数、隐含参数、类、对象、构造、析构、实例成员、静态成员、机动成员、成员指针、封装、继承、聚合、友元、隐藏、覆盖、绑定、多态、(纯)虚函数、抽象类、虚基类、移动语义、运算符重载、名字空间、生命期、作用域、异常、断言、Lambda表达式、类型推导、模板及可变类型参数、折叠表达式、概念与约束、类型表达式解析、流及类库等重要概念。要求学生设计面向对象的模型和系统,掌握面向对象的程序设计方法,基于图形用户界面开发软件系统。六、课程目标通过理论讲解及教学演示,帮助学生掌握面向对象的基本概念,掌握安全、高效、可靠的程序开发方法,掌握C++面向对象的程序设计方法具备基于VSStudio+Qt进行跨平台开发图形用户界面软件的能力。课程的具体目标包括:目标1:理解类、对象、构造、析构、封装、继承、聚合、重载、多态、友元、实例成员、静态成员、机动成员、成员指针、隐藏、覆盖、绑定、多态、(纯)虚函数、抽象类、虚基类等面向对象的基本概念。目标2:理解线程、协程、左值、右值、有址与无址引用、只读与挥发存储、异常、断言、Lambda表达式、类型推导、模板及可变类型参数、概念与约束、类型表达式解析等概念,学习一系列C++国际标准有助于程1
1 《C++程序设计》课程大纲 一、课程名称:C++程序设计 二、课程性质:选修、专业课 三、学时与学分: 40 学时,2.5 学分 四、课程先导课: C 语言程序设计,数据结构,操作系统 五、课程简介 “C++程序设计”是一门基于面向对象理论、工程性和实践性都很强 的专业课,是众多面向对象程序设计语言的基础。本课程介绍 C++最新国 际标准的语法概念,包括常量、变量、表达式、左值、右值、有址与无址 引用、只读与挥发存储、语句、函数、线程、协程、重载、内联、默认参 数、省略参数、隐含参数、类、对象、构造、析构、实例成员、静态成员、 机动成员、成员指针、封装、继承、聚合、友元、隐藏、覆盖、绑定、多 态、(纯)虚函数、抽象类、虚基类、移动语义、运算符重载、名字空间、 生命期、作用域、异常、断言、Lambda 表达式、类型推导、模板及可变 类型参数、折叠表达式、概念与约束、类型表达式解析、流及类库等重要 概念。要求学生设计面向对象的模型和系统,掌握面向对象的程序设计方 法,基于图形用户界面开发软件系统。 六、课程目标 通过理论讲解及教学演示,帮助学生掌握面向对象的基本概念,掌握 安全、高效、可靠的程序开发方法,掌握 C++面向对象的程序设计方法, 具备基于 VS Studio+Qt 进行跨平台开发图形用户界面软件的能力。 课程的具体目标包括: 目标 1:理解类、对象、构造、析构、封装、继承、聚合、重载、多 态、友元、实例成员、静态成员、机动成员、成员指针、隐藏、覆盖、绑 定、多态、(纯)虚函数、抽象类、虚基类等面向对象的基本概念。 目标 2:理解线程、协程、左值、右值、有址与无址引用、只读与挥 发存储、异常、断言、Lambda 表达式、类型推导、模板及可变类型参数、 概念与约束、类型表达式解析等概念,学习一系列 C++国际标准有助于程
序高效、安全、可靠的开发方法。自标3:理解面向对象的分析、设计与建模方法,能够分析设计类和建立面向对象的模型,并能将面向对象模型转化为C++程序:掌握标准类库以及各种插件中的面向对象的设计概念。自标4:掌握基于图形用户界面三层模式开发方法,微软VisualStudic+Qt插件开发、调试、发布C++程序的方法,能够自主学习最流行最易用的编译开发环境、插件和工具,能够开发跨平台图形用户界面软件。七、课程目标对毕业要求的支撑关系支撑的毕业要求二级指标点对应课程目标12.1能认识到计算机技术日新月异的发展特点,认同自主学目标2习和终身学习的必要性12.2具备自主学习能力,能通过多种途径拓展自己已的知识和目标3能力,包括理解能力、归纳总结能力和提出问题的能力等2.2对计算机复杂工程问题的一个系统或者过程,能选择或目标3建立一种模型,对关键影响因素进行分析3.2能为计算机复杂工程问题解决方案设计满足特定需求的目标4软/硬件模块八、教学设计及对课程目标的支持第一章引言1.教学目标1)了解国际、国内计算机发展的历史;2)掌握基本组成及各部分的主要功能:3)掌握二进制及其转换方法,高级语言转换为汇编语言的方法:4)了解C++的发展历史及VS2019等开发环境的安装方法:5)掌握程序的开发过程、调试和发布方法。本章教学支持课程目标2和课程目标4。2.教学重点1)内存数据与二进制转换2
2 序高效、安全、可靠的开发方法。 目标 3:理解面向对象的分析、设计与建模方法,能够分析设计类和 建立面向对象的模型,并能将面向对象模型转化为 C++程序;掌握标准类 库以及各种插件中的面向对象的设计概念。 目标 4:掌握基于图形用户界面三层模式开发方法,微软 Visual Studio +Qt 插件开发、调试、发布 C++程序的方法,能够自主学习最流行最易用 的编译开发环境、插件和工具,能够开发跨平台图形用户界面软件。 七、课程目标对毕业要求的支撑关系 支撑的毕业要求二级指标点 对应课程目标 12.1 能认识到计算机技术日新月异的发展特点,认同自主学 习和终身学习的必要性 目标 2 12.2 具备自主学习能力,能通过多种途径拓展自己的知识和 能力,包括理解能力、归纳总结能力和提出问题的能力等 目标 3 2.2 对计算机复杂工程问题的一个系统或者过程,能选择或 建立一种模型,对关键影响因素进行分析 目标 3 3.2 能为计算机复杂工程问题解决方案设计满足特定需求的 软/硬件模块 目标 4 八、教学设计及对课程目标的支持 第一章 引言 1.教学目标 1)了解国际、国内计算机发展的历史; 2)掌握基本组成及各部分的主要功能; 3)掌握二进制及其转换方法,高级语言转换为汇编语言的方法; 4)了解 C++的发展历史及 VS2019 等开发环境的安装方法; 5)掌握程序的开发过程、调试和发布方法。 本章教学支持课程目标 2 和课程目标 4。 2.教学重点 1)内存数据与二进制转换
让学生理解C++关于内存和数据程序分类,理解二进制数据的转换及处理方法,理解程序与数据的关系,同时为地址与指针的理解打下基础。2)高级语言与汇编程序的关系让学生理解高级语言程序转换为汇编程序后,存放常量、变量以及代码所使用的不同类型的内存,理解高级语言程序汇编时的换名策略与函数重载的关系,理解函数的参数传递方法及函数返回值的存放策略。3)C++发展历史与流行开发环境的安装使用了解C++的发展历史及语言特点,介绍不同编译开发环境和工具的特点,介绍流行开发工具、插件的安装使用方法,介绍C++应用开发的基本流程和调试发布方法、以及开发所需学习的网络、数据库等其它知识。3.教学难点1)函数参数的传递及函数返回值理解不同编译技术采用的不同参数传递策略,理解实参的计算顺序与程序可移植性的关系,理解函数重载的实现方法,理解C++与C目标文件及库的连接方法。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论函数换名策略为什么有助于函数重载的实现,实参的计算顺序为什么与程序可移植性有关,如何才能写出安全可靠的程序。2)作业围绕进制转换、C++的特点、函数的参数和返回值等布置。3)视频观看第一章教学视屏。4)课外实践要求学生下载VS2019和Qt插件,对编译和开发环境进行安装使用。5)课外阅读阅读C++关于2011、2014、2017及2020标准及其发展历史的文献。3
3 让学生理解 C++关于内存和数据程序分类,理解二进制数据的转换及 处理方法,理解程序与数据的关系,同时为地址与指针的理解打下基础。 2)高级语言与汇编程序的关系 让学生理解高级语言程序转换为汇编程序后,存放常量、变量以及代 码所使用的不同类型的内存,理解高级语言程序汇编时的换名策略与函数 重载的关系,理解函数的参数传递方法及函数返回值的存放策略。 3)C++发展历史与流行开发环境的安装使用 了解 C++的发展历史及语言特点,介绍不同编译开发环境和工具的特 点,介绍流行开发工具、插件的安装使用方法,介绍 C++应用开发的基本 流程和调试发布方法、以及开发所需学习的网络、数据库等其它知识。 3.教学难点 1)函数参数的传递及函数返回值 理解不同编译技术采用的不同参数传递策略,理解实参的计算顺序与 程序可移植性的关系,理解函数重载的实现方法,理解 C++与 C 目标文件 及库的连接方法。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 函数换名策略为什么有助于函数重载的实现,实参的计算顺序为什么 与程序可移植性有关,如何才能写出安全可靠的程序。 2)作业 围绕进制转换、C++的特点、函数的参数和返回值等布置。 3)视频 观看第一章教学视屏。 4)课外实践 要求学生下载 VS2019 和 Qt 插件,对编译和开发环境进行安装使用。 5)课外阅读 阅读 C++关于 2011、2014、2017 及 2020 标准及其发展历史的文献
第二章类型、常量与变量1.教学目标1)介绍C++的字符集、关键字、运算符:2)介绍预定义类型、常量及变量;3)介绍类型转换、指针类型、复杂类型解析方法;4)介绍左值、右值、有址与无址引用变量;5)介绍元素、数组、表达式、结构、联合。本章教学支持课程目标2。2.教学重点1)指针类型与复杂类型解析方法掌握指针类型与复杂类型解析的实质是运算符的优先级和结合性,为以后更复杂的类型如模版、类库等的理解奠定基础。2)左值、右值、有址与无址引用变量理解左值和右值在连续计算中的不同作用,掌握有址与无引用对程序安全和计算效率的影响。3.教学难点1)指针类型与复杂类型解析方法多级指针解引用与复杂类型的保留字const、constexpr、constinit、volatile对赋值和编译优化、程序的安全和执行效率的影响是教学一大难点。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论为何无址引用变量不应引用函数返回的无址引用对象。2)作业围绕指针、表达式运算、左值与右值及类型解析等布置。3)视频观看第二章教学视屏。4)课外阅读4
4 第二章 类型、常量与变量 1.教学目标 1)介绍 C++的字符集、关键字、运算符; 2)介绍预定义类型、常量及变量; 3)介绍类型转换、指针类型、复杂类型解析方法; 4)介绍左值、右值、有址与无址引用变量; 5)介绍元素、数组、表达式、结构、联合。 本章教学支持课程目标 2。 2.教学重点 1)指针类型与复杂类型解析方法 掌握指针类型与复杂类型解析的实质是运算符的优先级和结合性,为 以后更复杂的类型如模版、类库等的理解奠定基础。 2)左值、右值、有址与无址引用变量 理解左值和右值在连续计算中的不同作用,掌握有址与无址引用对程 序安全和计算效率的影响。 3.教学难点 1)指针类型与复杂类型解析方法 多级指针解引用与复杂类型的保留字 const、constexpr、constinit、volatile 对赋值和编译优化、程序的安全和执行效率的影响是教学一大难点。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 为何无址引用变量不应引用函数返回的无址引用对象。 2)作业 围绕指针、表达式运算、左值与右值及类型解析等布置。 3)视频 观看第二章教学视屏。 4)课外阅读
阅读C++关于指针解引用及类型分析等方面的文献。第三章语句、函数及程序设计1.教学目标1)介绍C++的各种语句的用法;2)介绍函数及参数默认值、省略参数、引用参数:3)介绍重载、inline、constexpr、consteval函数;4)介绍线程变量、线程、协程:5)介绍变量的作用域与生命期。本章通过使用有穷自动机模型和多路分支语句教学支持课程目标2和目标3。2.教学重点1)函数及参数默认值、省略参数、引用参数inline、constexpr、consteval等各种函数的定义和使用方法,函数的参数默认值,函数的省略参数。2)线程变量、线程、协程线程变量的使用背景,线程与协程的联系与区别,如何用线程和协程提高程序的运行速度。3.教学难点1)协程的调度过程协成的挂起、唤醒以及返回所需要的接口,以及协程内部状态的切换是教学一大难点。4.教学环节设计围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、练习与讨论、课外实践、课外阅读等教学形式。1)讨论引用参数如何使用。线程与协程有何区别,如何使用线程和协程。2)作业围绕语句、函数和作用域和生命期等布置。5
5 阅读 C++关于指针解引用及类型分析等方面的文献。 第三章 语句、函数及程序设计 1.教学目标 1)介绍 C++的各种语句的用法; 2)介绍函数及参数默认值、省略参数、引用参数; 3)介绍重载、inline、constexpr、consteval 函数; 4)介绍线程变量、线程、协程; 5)介绍变量的作用域与生命期。 本章通过使用有穷自动机模型和多路分支语句教学支持课程目标 2 和 目标 3。 2.教学重点 1)函数及参数默认值、省略参数、引用参数 inline、constexpr、consteval 等各种函数的定义和使用方法,函数的参 数默认值,函数的省略参数。 2)线程变量、线程、协程 线程变量的使用背景,线程与协程的联系与区别,如何用线程和协程 提高程序的运行速度。 3.教学难点 1)协程的调度过程 协成的挂起、唤醒以及返回所需要的接口,以及协程内部状态的切换 是教学一大难点。 4.教学环节设计 围绕教学重点和教学难点,综合应用课堂讲授与讨论、视频、作业、 练习与讨论、课外实践、课外阅读等教学形式。 1)讨论 引用参数如何使用。线程与协程有何区别,如何使用线程和协程。 2)作业 围绕语句、函数和作用域和生命期等布置