程序设计与算法(三)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++】回溯算法基础入门 简介 回溯算法基于深度优先搜索,实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 由于非递归式回溯算法较难实现,本文只介绍递归式回溯。 回溯算法框架https://blog.csdn.net/u011956367/article/details/120555480
2.C++入门基础——双壁传奇C语言和C++的爱恨情仇C 语言主要遵循面向过程编程范式,程序的设计围绕着函数和数据结构展开,强调算法的实现和数据的处理流程。例如,一个简单的 C 语言程序可能是一系列函数的顺序调用,通过函数之间的数据传递来完成特定任务。而 C++ 支持多种编程范式,除了面向对象编程外,还可以进行面向过程编程(兼容 C 语言风格)以及泛型编程。泛型编程通过https://cloud.tencent.com/developer/article/2479565
3.C++常见算法大全(自用)51CTO博客C++常见算法大全(自用) 文章目录 查找算法 排序和通用算法 删除和替换算法 排列组合算法 生成和异变算法 关系算法 集合算法 堆算法https://blog.51cto.com/u_15744744/6128209
4.C++算法(豆瓣)《国外经典教材?C++算法:图算法(第3版)》所关注的是图算法领域。从实用的视角,以独特的结构将有关内容组织在一起,从而使读者不仅可以对这一领域有系统性的认识,而且还可在实践中灵活使用所提供的算法工具。本版中,增加了数以千计的新练习、数百年新图表以及数十个新程序,而且对所有的图表和程序都做了详尽的https://book.douban.com/subject/1138527/
5.C++经典算法集锦一咋一看,我曹感觉复杂,没有关系我们先把第一个操作完成,后面就是递归调用这个操作,你懂的。好吧,接下来让我们徒手写快排吧,如果你能够随时随地写一个快排,那么你对算法应该也已经从入门到精通了。 voidquick_sort(inta[],intleft,intright){if(left>=right){return;}inti=left;intj=right;intkey=a[i];whilehttps://www.jianshu.com/p/35d34fa7eb43
6.C++回溯算法C++回溯算法 「回溯算法 backtracking algorithm」是一种通过穷举来解决问题的方法,它的核心思想是从一个初始状态出发,暴力搜索所有可能的解决方案,当遇到正确的解则将其记录,直到找到解或者尝试了所有可能的选择都无法找到解为止。 回溯算法通常采用“深度优先搜索”来遍历解空间。在二叉树章节中,我们提到前序、中序和https://www.w3cschool.cn/hellocpp/hellocpp-ct6o3tl4.html
7.算法(现代C++)MicrosoftLearnC/C++语言 C运行库参考 标准C++库参考 SafeInt库 使用英语阅读 保存 添加到集合 添加到计划 通过 Facebookx.com 共享LinkedIn电子邮件 打印 项目 2013/03/25 本文内容 循环 请参见 现代的 C++ 编程中,我们建议您使用的算法在标准模板库(STL)。下面是一些重要的示例: https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2012/hh438471(v=vs.110)
8.C++与STL(紫皮算法书·例题)#include<bits/stdc++.h>#include<string>usingnamespacestd;//这道题的思路突出点在于提取了四种操作中的共同点,即:找到位置、上方归位、叠放//这道题我尝试把例题中的vector用string代替,因为叠放过程用字符串尾接感觉会很自然//虽然看起来并没有变好什么。。。intn;constintmaxn=30;stringpiles[maxn];https://zhuanlan.zhihu.com/p/13683331683
9.C++STL常用算法STL变异算法是一组能修改容器元素数据的模板函数。可以对序列数据进行复制,交换,替换,填充,删除,旋转,分割等操作。应用变异算法时,应先检查容器的迭代器是否符合要求,防止产生编译错误。 1.OutputIterator copy<InputIterator first,InputIterator last,OutputIterator result > 正向拷贝 (result 的长度不能小于last-firsthttp://www.360doc.com/content/11/0722/14/3972135_135192525.shtml
10.《C++数据结构与算法(高清)》.pdf文档全文免费阅读在线看C++ USING BY C++ 第一部分 预备知识 第1章 C + +程序设计 大家好!现在我们将要开始一个穿越“数据结构、算法和程序”这个抽象世界的特殊旅程, 以解决现实生活中的许多难题。在程序开发过程中通常需要做到如下两点:一是高效地描述数 据;二是设计一个好的算法,该算法最终可用程序来实现。要想高效地描述数据,必须https://max.book118.com/html/2015/1229/32232263.shtm
11.C++中的数据结构及其相关算法C++c++是一种广泛使用的编程语言,它支持多种数据结构和算法。数据结构是存储和组织数据的方法,而算法是在数据结构上操作数据的方法。对于每个问题,选择合适的数据结构和算法是非常重要的。在本文中,我们将介绍一些常用的数据结构和算法,以及它们在c++中的实现。 https://www.php.cn/faq/594412.html
12.清华大学出版社图书详情这本《C++数据结构与算法(第4版)》全面系统地介绍了数据结构,并以C++语言实现相关的算法。 主要强调了数据结构和算法之间的联系,使用面向对象的方法介绍数据结构,其内容包括算法的复杂度分析、链表、栈、队列、递归、二叉树、图、排序和散列。本书还清晰地阐述了同类教材中较少提到的内存管理、数据压缩和字符串匹配http://www.tup.tsinghua.edu.cn/booksCenter/book_05725003.html
13.C/C++高精度算法实现思路与代码C语言C/C++高精度算法实现思路与代码更新时间:2023年11月28日 15:08:37 作者:仍有未知等待探索 高精度算法就是能处理高精度数各种运算的算法,但又因其特殊性,故从普通数的算法中分离,自成一家,下面这篇文章主要给大家介绍了关于C/C++高精度算法实现思路与代码的相关资料,需要的朋友可以参考下https://www.jb51.net/program/306243h0n.htm
14.最高年薪30W,本周武汉这处还有2场招聘会5、负责3D点云相关算法研究,保证项目的可行; 6、参与机器视觉(3D)项目技术调研、方案制定; 7、负责图像处理、视觉定位、视觉测量等领域的算法研究与实现。 任职要求: 1、硕士以上学历,博士优先; 2、精通C/C++或Python编程、计算机视觉、3D点云处理算法(点云配准、拼接、特征提取等)、三维重建、模型匹配、计算机图https://www.wuhan.gov.cn/sy/whyw/202305/t20230508_2197263.shtml