【小编推荐】
本课程与众不同。虽然实质是C语言课程,但引入了C++语言的一些特性(不包括庞杂的面向对象部分)。这些特性易于掌握,且对提高编程效率极为有用。花费比学习C语言多百分之十的时间,就能同时享受到C++带来的方便与效率。此外还介绍递归、枚举等基本算法思想。适用于包括中学生在内的所有零基础学习者。
课程概述
C++语言的功能和方便性都强于C语言,只是由于其面向对象的特性比较复杂,因此很少被选为入门语言。实际上,C语言是C++的子集,C++对C语言的扩充可以分为与面向对象无关的新语法特性、面向对象的特性,以及泛型特性三个部分。如果放弃其中复杂的面向对象特性,以及泛型的绝大多数特性(但保留其中极其有用的标准模板库STL中的部分算法和容器),则剩余部分也十分适合做为入门语言来学,而且用这样的“简化”C++语言,或者说,“更强”的C++语言编写程序,既比用C语言更为方便和高效,又无需掌握写大型程序才会用到的庞杂的面向对象的特性 — 学习成本增加很少而编程效率提高很多。
基于上述考虑,本课程虽然内容主要为C语言程序设计,但还是涉及了一部分C++的内容。本课程以实打实提高学生的实际编程能力为目标,只要能写出好程序,用的是C语言还是C++语言,并不重要。因此,如果您学习的目的是应付计算机等级考试之类纠缠语法细节的、纸上谈兵的笔试,则本课程不适合于您。
授课内容14周,考试1周。主要为以下三部分:
-
11 周: C语言程序设计
-
2 周:用C++的STL(标准模板库)轻松实现高效的排序和查找。这部分内容虽不多,但对于提高编写程序的效率极其有用。
-
1 周: 考试
总之,本门课最大的特点是:让学习者花费比学习C语言多不到10%的时间,就能享受C++语言带来的更多方便与效率。
另外,本课程的内容和作业紧扣“北京大学信息学院程序设计与算法等级认证”考试,该考试分为十级,本课程内容对应于第一级和第二级,作业和考试题也来源于该等级认证考试的题库。
本课程作业和考试的题型90%以上都是在线提交程序,系统自动评测,容不得半点错误,这对学习者是非常严格而且有效的训练,符合当下顶尖IT企业招聘考核的形式,学习效果远胜于书面作业人工批改的形式。
授课目标
掌握C语言的语法规则知识并会灵活运用。掌握C++语言中,对C语言的与面向对象无关的一小部分较容易且对提高编程效率大有帮助的扩展特性。
课程大纲
【第一周】
-
信息在计算机中的表示
-
C++快速入门
-
变量和数据类型初探
-
变量和数据类型进阶
-
常量
-
Dev C++编译环境介绍
Openjudge在线做题必读
【第二周】
-
输入输出进阶
-
算术运算符和算术表达式
-
关系运算符和逻辑表达式
-
其他运算符及运算符优先级
【第三周】
-
if语句
-
switch语句
-
for 循环之一
-
for 循环之二
-
while循环和do while循环之一
-
while循环和do while循环之二
【第四周】
-
break语句和continue语句
-
OJ输入数据的处理
-
用freopen重定向输入
-
循环例题选讲 1
-
循环例题选讲 2
-
循环例题选讲 3
【第五周】
-
数组
-
筛法求素数
-
数组初始化
-
数组越界
-
二维数组
【第六周】
-
函数(1)
-
函数(2)
3.递归初步
-
库函数和头文件
-
位运算
【第七周】
-
字符串(1)
-
字符串(2)
-
字符串(3)
-
字符串(4)
【第八周】
- 指针的基本概念和用法
2.指针的意义和互相赋值
3.指针的运算
4.指针作为函数参数
5.指针和数组
【第九周】
-
指针和二维数组、指向指针的指针
-
指针和字符串
-
字符串库函数
-
void指针和内存操作函数
-
函数指针
【第十周】
-
结构(struct)
-
全局变量、局部变量、静态变量
-
变量的作用域和生存期
-
选择排序和插入排序
-
冒泡排序
【第十一周】
-
程序或算法的时间复杂度
-
二分查找的实现
-
二分法求方程的根
-
例题1:找一对数
-
例题2:农夫和奶牛
【第十二周】
-
STL排序算法sort
-
STL二分查找算法
-
multiset
-
自定义排序规则的multiset
-
set
【第十三周】
-
multimap
-
map
【第十三周】
期末考试
预备知识
零起点课程,基本上不需要预备知识,初中生也可以学习。
证书要求
完成作业和考试,达到要求后,可以获得课程主讲教师签名颁发的合格证书或优秀证书。总成绩算法如下:
考核
成绩
每周测验(即作业)
70/100
期末考试
30/100
60-84分:合格证书
85-100分:优秀证书
参考资料
常见问题
C语言程序设计为什么还要讲C++的内容?
答:C++比C语言难的地方主要在于面向对象的特性,但这部分内容本课程是不讲的,因此本课程不论是内容还是难度与C语言相比并没有太大区别。由于C语言在一些语法细节上不如C++用起来方便,因此本课程会讲授C++一些特性,可以理解成讲授的是经过稍许改进的C语言。更重要的是,C++有STL这个使用非常方便的库是C语言没有的,例如,用STL写个整数的排序操作只要1行,而用C语言的写法,则需要六七行才能完成,而且还需要理解函数指针等复杂概念才可以。因此本课程最后一周也讲授了STL的初步内容,但不计入成绩考核。
本课程的作业和考试形式是怎样的?
答:本课程90%的作业,以及最后的期末考试,形式都是在北京大学在线程序评测系统 openjudge.cn上提交程序,由系统自动评判正误。程序不能有丝毫错误。这种形式对于提高编程能力极其有效。