课程详情
课程评价
spContent=当今社会已经由工业社会迈入信息社会。在信息社会中,信息已经成为比物质和能源更为重要的资源。计算机是一个信息化产品,是信息技术的典型代表,而理解计算机的最好途径就是编程。可以预知,编程也会像阅读、写作一样成为人们必须要具备的一项技能。现在,就让我们一起来编程吧!
—— 课程团队
课程概述

    程序设计课程是大学计算机基础教育和计算机科学与技术专业基础的核心课程,是数据结构、算法设计、数学建模、软件技术等课程的前导课程。程序设计课程的教学目标是使学生能够使用一种开发工具熟练的进行软件开发,为学生将来的创新实验、毕业设计、科学研究提供了有力的技术支持。

    C++是国内外广泛使用的计算机程序设计语言。其功能强大、面向对象、数据表示丰富、代码运行效率高、可移植性好,适合编写系统软件和各类应用程序。在TIOBE排行榜上,C++语言多年来始终处于前五位。学习程序设计从C++入手,对于培养利用计算机求解现实问题的计算思维能力具有其他语言无法比拟的有点。且在完全掌握了C++语言之后,再学习其他程序设计语言就会轻车熟路了。

    CC++的子集,因此在C++的授课中,有至少一半的内容是和C语言一样的。而国内C++程序设计课程的学时普遍较少,且讲授的重点一般都放在和C重叠的那一部分。对于C++C多出来的内容往往只介绍类、继承等基本概念,而对于重载、多态、异常处理、数据流等内容言之甚少。本课程即针对这一问题,增加了C++独有的内容的比重,不但适用于在校大学生,且适用于工作中使用C++进行软件开发的人。


授课目标

课程内容以计算思维为导向,推动大学本科的计算机基础教育,围绕计算机学科的典型方法与技术,开展面向大学新生认知特征的计算机基础教育案例研究和实践。

课程大纲

第1讲 C++语言概述

第1讲 了解计算机的基本工作原理

1. 计算机系统的组成及计算机指令

2. 程序设计语言的发展及C++语言

第2讲 信息的表示与存储

1. 进位计数制及转换

2. 数据在计算机中的表示

第2讲 了解各种进位计数制及常用数据在计算机中的存储

第3讲 程序中数据的表示

1. 数据类型

2.  常量、变量

第3讲 掌握常量、变量的表示及基本数据类型

第4讲 运算符与表达式

1. 常用的运算符

2. 表达式和类型转换

第4讲 掌握各种表达式的表示

第5讲 顺序结构的程序设计

1. 语句

2. 输入与输出

第5讲 掌握C++输入输出的格式控制

第6讲 选择结构的程序设计

1.  if语句和switch语句

2. 选择结构的嵌套

第6讲 掌握选择结构的程序设计

第7讲 循环结构的程序设计

1. 循环语句

2. 循环的附加控制语句

第7讲 掌握循环结构的程序设计

第8讲 循环结构的设计

1. 循环的嵌套

2. 循环的设计

第8讲 掌握循环结构的程序设计

第9讲 函数的定义和使用

1.  函数的定义和函数的参数

2. 函数的声明与内联函数

第9讲 掌握函数的定义和函数的调用方式

第10讲 函数的设计

1.  默认参数与函数重载

2. 函数模板与库函数的调用

第10讲 灵活运用函数重载、默认参数和函数模板

第11讲 函数的调用

1. 函数的嵌套调用

2. 函数的递归调用

第11讲 掌握函数的嵌套调用和递归调用

第12讲 作用域、生命期和程序的组织结构

1. 作用域和生命期

2.  程序的组织结构

第12讲 理解作用域、生命期和程序的组织结构

第13讲 数组的定义和使用

1. 一维数组的定义、初始化、引用

2. 二维数组的定义、初始化、引用

第13讲 掌握数组的定义和使用

第14讲 数组与函数

1. 数组作为函数的参数

2.  数组参数的传递机制

第14讲 掌握数组作为函数参数的使用方法

第15讲 字符串的处理

1. 字符数组与字符串处理函数

2. 字符串对象及其操作

第15讲 掌握C和C++的字符串处理方式

第16讲 数组的应用

1. 用数组解决排序问题

2. 用数组解决查找问题

第17讲 指针的定义与使用

1.  指针的定义

2. 指针的有效性和运算

第17讲 理解指针的定义,掌握指针的使用方法

第18讲 指针与数组

1. 一维数组与指针

2. 指针与字符串

第18讲 掌握指针对一维数组的操作

第19讲 指针与函数

1. 指针作为函数的参数

2. 引用和指向函数的指针

第19讲 掌握指针作为函数参数的用法以及指向函数的指针

第20讲 动态分配内存

1. new与delete运算符

2. 动态分配数组和字符串

第20讲 掌握动态分配内存的方法

第21讲 自定义数据类型

1. 结构体类型

2. 共用体类型、枚举类型

第21讲 掌握三种自定义数据类型

第22讲 自定义数据类型的应用——链表

1. 链表的概念和分类

2. 链表的运算

第22讲 掌握链表的结构和使用

第23讲 预处理命令

1. 什么是预处理命令以及宏定义

2. 文件包含和条件编译

第23讲 掌握预处理命令的使用

第24讲 习题解析

1. 数据类型、控制结构、函数

2. 预处理命令、数组、指针、自定义数据类型

第25讲 类的定义

1. 定义类及成员的访问控制

2.  类的数据成员、类的成员函数、类的声明

第25讲 掌握类的基本概念

第26讲 对象的定义和使用

1.  对象的的定义及 对象的动态建立和释放

2. 对象成员的引用、对象的赋值、对象的指针

第26讲 掌握 对象的定义和使用

第27讲 构造函数

1. 什么是构造函数及构造函数的定义

2. 构造函数的重载、带默认参数的构造函数

第27讲 掌握构造函数的功能和使用方法

第28讲 默认构造函数和复制构造函数

1. 定义默认构造函数、隐式类类型转换

2.  复制构造函数与合成复制构造函数

第28讲 掌握默认构造函数和复制构造函数的使用法则

第29讲 析构函数

1、 析构函数的定义及合成析构函数

2、何时需要编写析构函数

第29讲 掌握析构函数的用途和使用方法

第30讲 对象数组和对象指针

1、对象数组及指向对象的指针

2、成员指针及this指针

第30讲 对象数组和对象指针

第31讲 类作用域、对象生命期、const限定

1、类的作用域及对象的生命期

2、 常对象、常成员、常指针、常引用

第31讲 掌握const成员的使用

第32讲 静态成员和友元

1、静态成员

2、友元函数和友元类

第32讲 掌握静态成员和友元的使用

第33讲 类的继承与派生

1、派生类的定义

2、派生类的构成

第33讲 掌握派生类的定义

第34讲 派生类成员的访问

1、派生类成员的访问权限

2、赋值兼容规则

第34讲 掌握派生类成员的访问方法

第35讲 派生类的构造和析构函数

1、派生类的构造函数

2、派生类的析构函数

第35讲 掌握派生类的构造和析构函数

第36讲 多重继承

1、多重继承派生类及二义性问题

2、虚基类

第36讲 掌握多重继承的规则

第37讲 多态性

1、多态性的概念

2、静态联编和 动态联编

第37讲 掌握多态性的概念和实现原理

第38讲 虚函数

1、 多态的条件及多态性

2、纯虚函数和抽象类

第38讲 掌握虚函数、纯虚函数、抽象类的定义和使用

第39讲 运算符重载

1、运算符重载的概念

2、运算符重载的实现

第39讲 掌握运算符重载的方法

第40讲 典型运算符的重载

1、构造“分数”类

2、典型运算符的重载

第40讲 掌握多种运算符的重载

第41讲 类模板

1、类模板的定义

2、类模板应用举例

第41讲 掌握类模板的定义和使用

第42讲 标准库

1、C++标准库

2、字符串流

第42讲 了解标准库的内容、掌握字符串流的使用

第43讲 文件

1、文件的概念

2、文件的操作

第43讲 掌握文件的基本操作

第44讲 向量vector

1、向量的使用

2、 向量的实现细节

第45讲 列表list

1、列表的使用

2、列表的实现细节

第46讲 队列(queue)和栈(stack)

1、队列queue

2、栈stack

第47讲 异常处理

1、异常处理的基本概念

2、异常处理的实现

第47讲 掌握异常处理的使用

第48讲 命名空间

1、命名空间的定义

2、命名空间的使用

第48讲 掌握命名空间的使用

预备知识

学习者应该先修过或已经掌握计算机导论或者大学计算机基础的主要内容,了解计算机的发展过程,理解计算机系统的构成和基本工作原理,并能够熟练地操作计算机及通过互联网获取信息资源。

证书要求

1.本课程要求完成的作业分为2种:

(A1)测验练习(简称QUIZ):在每周课后安排随堂测验,内容为程序语言知识题,题型为客观题。

(A2)问题求解(简称NOJ):共有十季编程题,每季从题库中抽取10题,采用机器在线评阅。每题按评价指标计1、0.8、0.5、0.3、0分。每题须在2周内完成,但学习者可任意选取时间点开始,全部习题须在课程结束前完成。

注:NOJ作业需要在www.cpskill.com网站上注册完成。


2.总成绩(实验环节仅线下或SPOC)计算方法:

按百分制计分,总成绩 = QUIZ×50% + NOJ×50%

 

3.证书:

(1)合格:总成绩60分至89分为合格,申请后可获得合格证书。

(2)优秀:总成绩90分至100分为优秀,申请后可获得优秀证书。

 

4.协作与欺骗政策:

 学习者可以与其他同学讨论完成,但所有代码必须是自己编写的,当NOJ机器评阅检查出作业结果(称为查重)有较高相似度时,后提交的习题判罚0分,三次查重违例,总计分为0分。



参考资料

1.姜学锋、周国清、刘君瑞,C++程序设计,清华大学出版社,2012

2.魏英,C++程序设计实验教程,清华大学出版社,2011

3.刘君瑞,C++程序设计习题与解析,清华大学出版社,2011