程序设计与算法(三)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.C语言中文网:C语言程序设计门户网站(入门教程编程软件)C++11是2011年发布的C++标准,是C++的一次重大升级。 STL STL是C++标准模板库,实现了常见的数据结构和算法。 Qt Qt是一个免费开源、跨平台的通用型C++框架。 UE4(虚幻4引擎) UE4是一款代码开源、商业收费、跨平台的游戏引擎。 Java Java教程 Java是一种面向对象的、跨平台的通用型编程语言。 https://c.biancheng.net/
2.编程竞赛宝典C++语言和算法入门本书对应的题库网站正在不断完善中,网址为www.magicoj.com。 希望本书的出版,能够给学有余力的中学生、计算机专业的大学生、程序算法爱好者以及IT行业从业者提供学习计算机科学的帮助。 张新华 2021年5月 第01章 C++语言入门 计算机编程语言能够实现人与计算机之间的沟通与交流,使计算机能够根据人编写的代码一步一步https://www.epubit.com/bookDetails?id=UB77a9ce8133887
3.Computer《计算机算法设计与分析(第五版)》是一本经典的算法教材,书中涵盖了算法的基础知识、经典算法和高级算法等内容。其中,书中的代码实现为读者提供了非常有价值的参考资源。 这些代码实现覆盖了多种算法,如排序算法、图论算法、动态规划算法等。对于每个算法,书中都提供了详细的描述和实现代码,让读者能够更加深入地理解https://cpp.code.coder100.com/index/index/content/id/13279
4.源代码大师C和C++Everything教程 付费 10026篇 Objective-C算法实战大全 付费 1043篇 php实战教程 付费 490篇 C和C++实战教程 付费 841篇 C和C++算法完整教程 付费 810篇 PHP算法完整教程 付费 1124篇 C#实战教程 付费 1903篇 openlayers实战教程 付费 417篇 https://cplusplus.blog.csdn.net/
5.算法(现代C++)MicrosoftLearn针对现代 C++ 编程,建议您使用标准模板库(STL) 中的算法。 以下是一些重要示例: for_each 为默认遍历算法。(还 transform 不相称的语义。) find_if 为默认搜索算法。 sort、lower_bound 和其他默认值排序和搜索算法。 若要写入比较运算符,则在可能的情况下请使用严格的 < 和使用“命名的 lambda”。 https://docs.microsoft.com/zh-cn/previous-versions/hh438471(v=vs.120)
6.Hello算法(C++版)《 Hello 算法 》 动画图解、一键运行的数据结构与算法教程 全书动画图解 内容清晰易懂、学习曲线平滑 电脑、平板、手机全终端阅读 代码一键运行 提供各个算法与数据结构的简洁实现与测试样例,皆可直接运行 支持Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言教程https://m.w3cschool.cn/hellocpp/
7.算法I~IV(C++实现)――基础数据结构排序和搜索(第三版)(豆瓣)Robert Sedgewick完全重写了他的著作,对它进行了充分的扩展和更新,涵盖了目前重要的算法和数据结构。Christopher Van Wyk和Sedgewick开发的新实现采用的是C++语言,这种实现不仅能够直接地表达算法,而且给编程者提供了实践的方法,以便在真正的应用中测试这些算法。 新的版本提供了很多新算法,而且对每个算法的解释也比以前的https://book.douban.com/subject/1143801/
8.C++常用算法GitHubC++常用算法 常用算法是C++刷题的重要法宝,有时需要查找某个元素的索引,有时需要进行排序,有时需要进行替换等等,虽然这些函数的实现并不困难,但是会降低我们的效率,而且C++给我们提供的算法都是非常高效的,我们要充分利用这一优势进行高效的coding。 常用算法介绍 12345678910111213141516171819202122https://ustccoder.github.io/2020/09/18/C++_algorithm/
9.C++算法集锦(1):八大排序算法:GIF+亲测代码+专项练习平台【C++】算法集锦(1):八大排序算法 :GIF + 亲测代码 +专项练习平台,主要目的呢,是为了我自己记住。这篇写完,以前那几篇排序的博客都可以删了。五天之后就设为粉丝可见啦。文章目录1、八大排序总览代码实现一律放到文末,方便有兴趣边看边练的小伙伴动手自己写。2、冒https://blog.51cto.com/u_15197573/5164392
10.C++算法集锦(10)通俗讲kmp算法腾讯云开发者社区【C++】算法集锦(10)通俗讲kmp算法 什么是KMP算法 它是一个字符串匹配算法。 KMP算法的优势 (就恨当初写kmp那篇的时候,没有留下图解,全篇文字铺开,现在我自己都看不懂了) 首先,给定 “主串” 和 “模式串” 如下: BF算法使用简单粗暴的方式,对主串和模式串进行逐个字符的比较:https://cloud.tencent.com/developer/article/1879111
11.常用算法程序集(C/C++描述)(第五版)完整pdf扫描版[157MB]电子书下《常用算法程序集(c/c 描述)(第五版)》是针对工程中常用的行之有效的算法而编写的,主要内容包括多项式的计算、复数运算、随机数的产生、矩阵运算、矩阵特征值与特征向量的计算、线性代数方程组的求解、非线性方程与方程组的求解、插值与逼近、数值积分、常微分方程组的求解、数据处理、极值问题的求解、数学变换与滤https://www.jb51.net/books/653352.html
12.清华大学出版社图书详情这本《C++数据结构与算法(第4版)》全面系统地介绍了数据结构,并以C++语言实现相关的算法。 主要强调了数据结构和算法之间的联系,使用面向对象的方法介绍数据结构,其内容包括算法的复杂度分析、链表、栈、队列、递归、二叉树、图、排序和散列。本书还清晰地阐述了同类教材中较少提到的内存管理、数据压缩和字符串匹配http://www.tup.tsinghua.edu.cn/booksCenter/book_05725003.html
13.C++②编译区别:由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。 5.从源码到可执行文件? ①预处理:展开宏定义+处理预编译指令+忽略注释 https://www.jianshu.com/p/68856d2212f4
14.51信息学C++算法编程/IOINOINOIP竞赛/CSPJCSPC++ 算法编程 / IOI NOI NOIP 竞赛 / CSP-J CSP-S 培训主页 开始学习 我的课程 编程挑战排行榜 问答 课程大纲 语言基础 CL 序列课程 计算机编程语言基础课程 CL-1 计算机编程语言基础课程 CL-2 计算机编程语言基础课程 CL-3 计算机编程语言基础课程 CL-4 计算机编程语言基础课程 CL-5 算法预科 PL 序列https://m.51nod.com/
15.[转帖]一些算法刷题的网站Grandyang[转帖] 一些算法刷题的网站 1. leetcode http://leetcode.com/ 2. careerup http://www.careercup.com/ http://hawstein.com/posts/ctci-solutions-contents.html 3. glassdoor http://www.glassdoor.com/index.htm 4. topcoder http://www.topcoder.com/https://www.cnblogs.com/grandyang/p/4294788.html
16.LearnCandC++ProgrammingThe best site for C and C++ programming. Popular, beginner-friendly C and C++ tutorials to help you become an expert!https://cprogramming.com/
17.GitHubjobbole/awesomecppC++标准库,包括了STL容器,算法和函数等。 C++ Standard Library: 是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Standard Template Library: 标准模板库。 C POSIX library: POSIX系统的C标准库规范。 ISO C++ Standards Committee: C++标准委员会。 The GNU C Library: 本手册的目的是告https://github.com/jobbole/awesome-cpp-cn