hi,小慕
课程

中国大学MOOC,为你提供一流的大学教育

认证学习
为你提供认证成绩和证书,以及AI高效学习服务
查看详情
hi,小mooc
程序设计与算法(一)C语言程序设计
第5次开课
开课时间: 2017年11月06日 ~ 2018年02月12日
学时安排: 3-4小时每周
当前开课已结束 已有 24340 人参加
老师已关闭该学期,无法查看
课程详情
课程评价(83)
spContent=本课程与众不同。虽然实质是C语言课程,但引入了C++语言的一些特性(不包括庞杂的面向对象部分)。这些特性易于掌握,且对提高编程效率极为有用。花费比学习C语言多百分之十的时间,就能同时享受到C++带来的方便与效率。此外还介绍递归、枚举等基本算法思想。适用于包括中学生在内的所有零基础学习者。
本课程与众不同。虽然实质是C语言课程,但引入了C++语言的一些特性(不包括庞杂的面向对象部分)。这些特性易于掌握,且对提高编程效率极为有用。花费比学习C语言多百分之十的时间,就能同时享受到C++带来的方便与效率。此外还介绍递归、枚举等基本算法思想。适用于包括中学生在内的所有零基础学习者。
—— 课程团队
课程概述

C++语言的功能和方便性都强于C语言,只是由于其面向对象的特性比较复杂,因此很少被选为入门语言。实际上,C语言是C++的子集,C++对C语言的扩充可以分为与面向对象无关的新语法特性、面向对象的特性,以及泛型特性三个部分。如果放弃其中复杂的面向对象特性,以及泛型的绝大多数特性(但保留其中极其有用的标准模板库STL中的部分算法和容器),则剩余部分也十分适合做为入门语言来学,而且用这样的“简化”C++语言编写程序,既比用C语言更为方便和高效,又无需掌握写大型程序才会用到的庞杂的面向对象的特性 --- 学习成本增加很少而编程效率提高很多。


基于上述考虑,本课程虽然内容主要为C语言程序设计,但还是涉及了一部分C++的内容。本课程以实打实提高学生的实际编程能力为目标,只要能写出好程序,用的是C语言还是C++语言,并不重要。因此,如果您学习的目的是应付计算机等级考试之类纠缠语法细节的、纸上谈兵的笔试,则本课程不适合于您。


授课内容13周,考试1周。主要为以下三部分:


1) 10.5 周: C语言程序设计(略带C++特性)。

2) 1.5 周:基本算法思想,包括算法的时间复杂度的概念、简单排序,枚举,二分查找。

3) 1  周:用C++的STL(标准模板库)轻松实现高效的排序和查找。这部分内容虽不多,但对于提高编写程序的效率

极其有用。

4) 1  周: 考试


总之,本门课最大的特点是:让学习者花费比学习C语言多不到10%的时间,就能享受C++语言带来的更多方便与效率。


另外,本课程的内容和作业紧扣“北京大学信息学院程序设计与算法等级认证”考试,该考试分为十级,本课程内容对应于第一级和第二级,作业和考试题也来源于该等级认证考试的题库。


本课程作业和考试的题型90%以上都是在线提交程序,系统自动评测,容不得半点错误,这对学习者是非常严格而且有效的训练,符合当下顶尖IT企业招聘考核的形式,学习效果远胜于书面作业人工批改的形式。

授课目标
1. 掌握C语言的语法规则知识并会灵活运用。掌握C++语言中,对C语言的与面向对象无关的一小部分较容易且对提高编程效率大有帮助的扩展特性。 2. 对什么是算法形成初步的概念 3. 达到“北京大学信息学院程序设计与算法等级认证”考试二级的要求
课程大纲

第一周 C++入门

 1.1 信息在计算机中的表示

 1.2 C++快速入门

 1.3 变量和数据类型初探

 1.4 变量和数据类型进阶

 1.5 常量


第二周 输入输出、运算符及表达式

 2.1 输入输出进阶

 2.2 算术运算符和算术表达式 

 2.3 逻辑运算符和逻辑表达式

 2.4 其他运算符和运算符优先级


第三周 分支语句和循环语句

 3.1 if语句

 3.2 switch语句

 3.3 for循环

 3.4 while和do while语句


第四周 循环语句和OJ输入数据处理

 4.1 break和continue

 4.2 循环例题选讲

 4.3 OJ编程题输入数据的处理

 4.4 用freopen重定向输入 


第五周 数组

 5.1 数组的基本概念

 5.2 筛法求素数

 5.3 数组的初始化及用数组取代分支结构

 5.4 数组越界

 5.5 二维数组


第六周 函数和位运算

 6.1 函数

 6.2 简单递归

 6.3 库函数和头文件

 6.4 位运算


第七周 字符串

 7.1 字符串的三种形式

 7.2 字符串的输入

 7.3 字符串库函数

 7.4 例题:求字符串的子串


第八周 指针(一) 

 8.1 基本概念和用法

 8.2 指针的意义和互相赋值

 8.3 指针运算

 8.4 空指针和指针作为函数参数


第九周 指针(二)   

 9.1 指针和数组

 9.2 指针和字符串

 9.3 字符串库函数

 9.4 void指针和内存操作函数

 9.5 函数指针


第十周 结构、变量作用域和生存期、简单排序

 10.1 结构

 10.2 全局变量、局部变量、静态变量

 10.3 变量的作用域和生存期

 10.4 选择排序和插入排序

 10.5 冒泡排序


第十一周 枚举和二分查找

11.1 枚举思想

 11.1 算法和程序的时间复杂度

 11.2 二分查找


第十二周 文件操作

第十三周 STL初步 (较高要求,不计入成绩考核)

 12.1 用sort排序

 12.2 用binary_search二分查找

 12.3 multiset的用法

 12.4 set的用法 

 12.5 multimap的用法

 12.6 map的用法 


第十四周 期末考试


展开全部
预备知识

零起点课程,基本上不需要预备知识,初中生也可以学习。

证书要求

完成作业和考试,达到要求后,可以获得课程主讲教师签名颁发的合格证书或优秀证书。总成绩算法如下:

考核

成绩

每周测验(即作业)

70/100

期末考试

30/100




60-84分:合格证书
85-100分:优秀证书


参考资料


常见问题
  1. C语言程序设计为什么还要讲C++的内容?

    答:C++比C语言难的地方主要在于面向对象的特性,但这部分内容本课程是不讲的,因此本课程不论是内容还是难度与C语言相比并没有太大区别。由于C语言在一些语法细节上不如C++用起来方便,因此本课程会讲授C++一些特性,可以理解成讲授的是经过稍许改进的C语言。更重要的是,C++有STL这个使用非常方便的库是C语言没有的,例如,用STL写个整数的排序操作只要1行,而用C语言的写法,则需要六七行才能完成,而且还需要理解函数指针等复杂概念才可以。因此本课程最后一周也讲授了STL的初步内容,但不计入成绩考核。

  2. 本课程的作业和考试形式是怎样的?

    答:本课程90%的作业,以及最后的期末考试,形式都是在北京大学在线程序评测系统 openjudge.cn上提交程序,由系统自动评判正误。程序不能有丝毫错误。这种形式对于提高编程能力极其有效。

  3. 课程介绍中提到的“北京大学信息学院程序设计与算法等级认证”是怎么回事?

  4. 答:为了推广和普及计算机教育,北京大学信息学院推出了基于2000题题库的“北京大学信息学院程序设计与算法等级认证”考试,考试共分十级,最高等级的水平相当于中学信息学奥赛全国赛或ACM国际大学生程序设计竞赛。本课程的内容对应于一级、二级,作业和考试题也来自该2000题的题库。

北京大学
1 位授课老师
郭炜

郭炜

讲师

推荐课程

猴博士C语言不挂科-4小时学完C语言

猴博士爱讲课

312950人参加

猴博士Java不挂科-2小时学完Java

猴博士爱讲课

166288人参加

计算机网络期末冲刺-4小时突击计算机网络

王道论坛

17965人参加
下载
下载

下载App