程序设计与算法(三)C++面向对象程序设计大学慕课

不论教学经验还是开发经验都十分丰富。因此讲授的内容特别贴合实践,各种样例程序都非常实用,鲜活。作业和考试题都是在线提交程序,系统自动评测,符合当下顶尖IT企业招聘考核的形式,学习效果极好。

——课程团队

课程概述

本课程讲授C++程序设计有关的概念和语法,使你能够使用C++语言,以面向对象的方法编写可维护性、可扩充性好的,较大规模的程序。要求学习者已经掌握C语言程序设计。这门课将带你掌握C++语言中类、对象、运算符重载、继承、多态等面向对象的程序设计方法,以及模板、标准模板库STL等泛型程序设计的机制,体会和领悟面向对象程序设计方法和泛型程序设计方法的优势。

本课程作业和考试题都是在线提交程序,系统自动评测,容不得半点错误,这对学习者是非常严格而且有效的训练,符合当下顶尖IT企业招聘考核的形式,学习效果远胜于书面作业人工批改的形式。期末还有一个大型的游戏模拟程序作业《魔兽世界》,深受北京大学信息学院学生欢迎,能够很好地训练C++面向程序设计的技能。

本课程作业和考试网址:cxsjsxmooc.openjudge.cn

郭炜老师还在中国大学MOOC开设另外三门好评如潮的4.9分高分课程,请不要错过:

1)程序设计与算法(一)C语言程序设计(国家精品)

0基础学习者应该先学习这门课程

2)程序设计与算法(二)算法基础(国家精品)

3)实用Python程序设计(强烈推荐,Python的百科书式大全课程,入门、提高均非常适合!)

授课目标

1.掌握面向对象程序设计的各种概念、机制及其用法2.掌握C++泛型程序设计,熟练编写各类模板3.熟练使用C++的标准模板库4.初步具备用C++语言和面向对象的方法开发大型程序的能力

课程大纲

01

从C到C++

课时

1.1.引用

1.2.const关键字

1.3.动态内存分配

1.4.内联函数和重载函数函数参数缺省值

1.5.类和对象的基本概念(1)

1.6Openjudge在线做题必读

02

类和对象基础

2.1.类和对象的基本概念(2)

2.2.构造函数

2.3.复制构造函数

2.4.类型转换构造函数和析构函数

2.5.构造函数析构函数调用时机

03

类和对象提高

3.1.this指针

3.2.静态成员变量

3.3.成员对象和封闭类

3.4.常量对象、常量成员函数

3.5.友元

04

运算符重载

4.1.运算符重载的基本概念

4.2.赋值运算符的重载

4.3.运算符重载为友元

4.4.可变长数组类的实现

4.5.流插入运算符和流提取运算符的重载

4.6.类型转换运算符的重载

4.7.自增自减运算符的重载

05

继承

5.1.继承和派生的基本概念

5.2.继承关系和复合关系

5.3.覆盖和保护成员

5.4.派生类的构造函数

5.5.公有继承的赋值兼容规则

06

多态

6.1.虚函数和多态的基本概念

6.2.多态实例:魔法门之英雄无敌

6.3.多态实例:几何形体程序

6.4.多态的实现原理

6.5.虚析构函数、纯虚函数和抽象类

07

输入输出和模板

7.2.用流操纵算子控制输出格式

7.3.文件读写(一)

7.4.文件读写(二)

7.5.函数模板

7.6.类模板

7.类模板与派生、友元和静态成员变量

08

标准模板库STL(一)

8.1.string类

8.2.标准模板库STL概述(一)

8.3.标准模板库STL概述(二)

8.4.vector,deque和list

8.5.函数对象

09

标准模板库STL(二)

9.1.set和multiset

9.2.map和multimap

9.3.容器适配器

9.4.STL算法(一)

9.5.STL算法(二)

10

C++11新特性和C++高级主题

10.1.C++11新特性(1)

10.2.C++11新特性(2)

10.3.强制类型转换

10.4.异常处理

预备知识

要求掌握C语言程序设计。如果没有掌握,请先学《程序设计与算法(一)C语言》

证书要求

为积极响应国家低碳环保政策,2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。

认证证书申请注意事项:

2.完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。

参考资料

清华大学出版社《新标准C++程序设计教程》,郭炜编著(适用于零基础学习者)

常见问题

答:这门课的老师不但在北京大学讲授C++程序设计十五年,深受学生欢迎,还用C++开发了多款商业软件,不但有丰富的教学经验,还有丰富的实际开发经验。因此教学更加贴近实践。

本课程一切围绕着能写程序这个目标来教学,绝不纠缠语法细节。作业全部都是在北京大学在线程序评测平台提交的编程题,要求严格,切切实实地训练编程能力。还有一个大规模的面向对象编程作业《魔兽世界》,充分体现面向对象编程的方法。

2.我可以零基础学这门课吗?

答:不可以。必须先掌握C语言。如果您零基础,请先学习《程序设计与算法(一)C语言》

THE END
1.程序员高手必会的十大编程算法编程算法有哪些程序员高手必会的十大编程算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用https://blog.csdn.net/liuhaiabc/article/details/52663417
2.什么是GC算法?有哪些GC算法?–编程技术之美有哪些GC算法? GC算法指垃圾回收算法,是自动内存管理的一种方式。它的主要目的是回收未使用的内存,释放内存空间以供后续使用。 主要的GC算法有: 引用计数算法:给每个对象添加一个引用计数器,当有一个地方引用它时,计数器值加1;当引用失效时,计数器值减1;计数器值为0时回收对象。优点是实现简单,缺点是无法回收http://www.itzhimei.com/archives/4629.html
3.28个不得不看的经典编程算法发起人的描述:《来自圣经的证明》收集了数十个简洁而优雅的数学证明,迅速赢得了大批数学爱好者的追捧。如果还有一本《来自圣经的算法》,哪些算法会列入其中呢? ***名:Union-find 严格地说,并查集是一种数据结构,它专门用来处理集合的合并操作和查询操作。并查集巧妙地借用了树结构,使得编程复杂度降低到了令人难以置https://mobile.51cto.com/news-455988.htm
4.常用编程思想与算法JeffD本文是在阅读Aditya Bhargava先生算法图解一书所做的总结,文中部分代码引用了原文的代码,在此感谢Aditya Bhargava先生所作出的这么简单的事例,对基础算法感兴趣的朋友可以阅读原文。由于本人也是编程初学者,所以本书比较浅显易懂,所介绍的算法配上插图也十分易懂,这里只是介绍几种最基础的算法由浅入深以帮助理顺一些简单https://www.cnblogs.com/Jeffding/p/7425230.html
5.编程和数学有什么区别?编程和数学都需要很高的抽象思维能力,两者在很多地方都有共同之处。编程中的很多算法都来自于数学理论的支持,但两者在具体的应用逻辑上还是存在一定的差别。比如:对任意给定的一组数进行排序,使之从大到小进行排列。 这是一个编程的入门问题,但它就很难称得上是一个数学问题。类似这种问题,我们人类看起来可能很简单http://shaoer.cctv.com/m/a/index.shtml?id=ARTIiBhAaPjbYAQLuiq8b0jg170418
6.Java面试题大全(整理版)1000+面试题附答案详解最全面看完稳了Java 并发编程(一) 1、在 java 中守护线程和本地线程区别? 2、线程与进程的区别? 3、什么是多线程中的上下文切换? 4、死锁与活锁的区别,死锁与饥饿的区别? 5、Java 中用到的线程调度算法是什么? 6、什么是线程组,为什么在 Java 中不推荐使用? https://maimai.cn/article/detail?fid=1752437513&efid=uSgZIWSJqvkGwxf4vJW75w
7.Java集合面试问题40个「附答案」每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。 随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。 https://www.oh100.com/kaoshi/java/370200.html
8.Python基础知识Python编程基础算法Python作为目前编程开发的主流语言之一,在企业中的应用范围越来越广,广阔的发展前景吸引了很多小伙伴想要入行Python,在学习Python时,一定要对基础技术知识有一个良好的了解,这样才会事半功倍,今天八维职业学校就和大家一起来看看Python编程中的基础算法,希望对各位学子有帮助。 https://www.bwie.com/jsgh/66.html
9.机器学习常见算法类型都有哪些算法是程序员在学习软件编程开发技术的时候需要重点掌握的一个编程开发技术知识,而今天我们就通过案例分析来了解一下,机器学习常见算法类型都有哪些。 1.分类算法 这是一种监督学习方法。有很多算法帮助我们解决分类问题,比如K近邻、决策树、朴素贝叶斯、贝叶斯网络、逻辑回归、SVM等算法。人工神经网络和深度学习也往往用https://www.douban.com/note/782408490/
10.C程序设计常用算法代码litan1986一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 http://blog.chinaunix.net/uid-22327815-id-1775075.html
11.什么是机器学习常见的机器学习算法有哪些什么是机器学习常见的机器学习算法有哪些 机器学习是人工智能领域中的一个重要分支,它通过使用大量的数据和算法,使计算机系统能够自动学习和改进,而无需显式的编程指令。机器学习算法是机器学习的核心组成部分,它们对数据进行分析和模式识别,从而实现预测、分类和决策等任务。本文将介绍机器学习的基本概念,并介绍几种常见https://wenku.baidu.com/view/9b19f784dd80d4d8d15abe23482fb4daa58d1d9e.html
12.KeilFlashProgramming(1)闪存编程 Flash编程算法是一种用于擦除应用程序或将应用程序下载到Flash设备的软件。具有设备支持的包通常包含预定义的Flash算法,用于对DFP支持的设备进行编程。ARhttps://www.jianshu.com/p/4c1e08a4d5d1