C程序设计进阶

2855 次查看
北京大学
Coursera
  • 完成时间大约为 23 个小时
  • 混合难度
  • 中文
注:本课程由Coursera和Linkshare共同提供,因开课平台的各种因素变化,以上开课日期仅供参考

你将学到什么

Computer Display Standard

C Programming

C++

课程概况

如果说学习过《计算导论与C语言基础》,你已经迈入了C语言的殿堂,那么《C程序设计进阶》将帮助你更上一层楼,理解“结构化程序设计的基本思想”,掌握“C程序设计的基本技巧”,养成“良好的编程习惯和编程风格”,编写出“真正具有生命力的计算机程序”。完成这门课的学习,你将能解释C程序设计语言的基本概念与知识,并且使用C语言编写计算机程序解决生活工作中的实际问题。

课程大纲

周1
完成时间为 5 分钟
欢迎加入《C程序设计进阶》
在学习完“理性认识C程序”之后,我们希望同学们能够自己动手编写一些简单的C程序了!如果你还没有具备这个能力,一个可能的原因是因为你还没有进行“足够的训练”。因为,学习一门程序语言,需要你获得的有两样东西——“知识”和“技巧”。“知识”可以通过讲授传递,但“技巧”却只能通过训练获得。因此,我们鼓励同学们在“理性认识C程序”这个迭代
周期中,多多进行简单的编程练习,以便获得“技巧”。(注意:我们特别鼓励同学们多多进行“简单”的编程练习,因为,所有复杂的问题,都是简单问题的组合。我们的教学实践表明:多做简单练习,不但可以提升学习者的学习信心,也非常有助于编程技巧的提升!)在完成“理性认识C程序”部分的学习之后,我们将开始新的迭代
周期——“结构化的程序”。在这个部分,我们将讲授一种基本的、用于将程序组织成“模块”的语言成分——函数。函数实际上是C程序的基本组织单位,是C程序设计中的重要组成部分。在这个迭代
周期中,同学们不仅要学习函数的定义方式、调用方式,还要学习一种重要的函数使用方法——递归。我们将讲授递归调用的基本机理,并讲授“利用递归解决问题的技巧”。这部分,讲本课程C程序设计部分的一个难点!不过,请同学们不要担心,我们将力图通过最简明的讲解方式,帮助大家掌握“递归”的使用方法,力争“化困难于无形”。我们一起努力吧!PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长。
2 个视频 (总计 5 分钟)

周2
完成时间为 5 小时
C程序中的函数
本次课,我们讲授“函数”的基本概念、定义方式、调用方式、参数传递方式等基本知识。其间,我们还将讨论“变量的作用域”的问题。PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长:)
6 个视频 (总计 97 分钟), 1 个测验

周3
完成时间为 5 小时
函数的递归
本次课是C程序设计部分的一个难点。但,请不要担心,我们将按照“由简单到复杂”的方式进行讲解。我们先为大家讲解“递归调用”的执行过程,以便让大家看到“其实,递归调用与普通函数调用没什么不同”的道理,在此基础上,再去详细分解递归调用的过程,以印证我们学到的知识。 在此基础上,我们将通过几个典型的递归函数设计范例,向大家讲授递归函数的作用和使用技巧。 需要强调的是,如果在这个部分大家感觉到困难,请不要气馁:)因为,根据我们的教学经验,80%以上的同学都会感觉到同样的困难。当你也感觉困难时,可以先耐心听完我们的讲解,然后再通过练习慢慢体会。只要稍加练习,这个困难的感觉就会逐渐消失,因为,到那时,你已经对递归越来越熟悉了:)
7 个视频 (总计 129 分钟), 1 个阅读材料, 1 个测验

周4
完成时间为 2 小时
指针(一)
本次课我们为大家讲解“指针”“指针变量”“指向变量的指针”等名词的基本含义。在此,需要特别提示大家:请大家务必明确区分上述的基本概念,以便在后面的课程中准确的使用它们。 同时,我们还将向大家阐述一个重要的理解——数组名 与 指向数组首元素的指针 之间的关系,也请大家务必反复印证,以便日后轻松使用:)
8 个视频 (总计 113 分钟), 1 个测验

周5
完成时间为 4 小时
指针(二)
这次课是上次课的延续,我们将为大家讲解“指针与字符串”之间的关系,“二维数组名的含义”(这也是一个小难点,不过,只要大家谨记上次课中的结论,一切将会变得简单:)),以及“指针与函数参数”之间的关系(这种情况很常见哦:))。
4 个视频 (总计 52 分钟), 1 个测验

周6
完成时间为 4 小时
指针(三)
这次课我们将紧跟上一节的脚步,继续为大家讲解“指针做函数参数”及“指针做函数返回值”的两种情况,到此为止,你应该对于指针在C程序设计里的应用有一个比较全面的了解啦,不妨在本次课末尾画个思维导图考考自己,是否弄清楚了这个重要的概念。
4 个视频 (总计 55 分钟), 1 个测验

周7
完成时间为 1 小时
结构体与链表
这次课,我们将为大家讲解“结构体”的基本概念、定义方式和使用方式,结构体的使用将为某些程序的编写带来极大的便利:)在此基础上,我们还将介绍“链表”的基本概念和创建方法。需要说明的是,在我们的课程上,链表将不作为一个重点练习的内容,因为,在后续的课程中,它将被反复大量的讨论:)
5 个视频 (总计 52 分钟)

周8
完成时间为 1 小时
最后一次课
这是C程序设计课程的最后一次课,也是一次“承前启后”的课程。我们将介绍“面向对象”编程方法的基础思想。我们希望通过这个简短的介绍能够让大家对“面向对象”的软件设计方法有一个最初步的了解,以便顺利步入后续的课程:)
3 个视频 (总计 45 分钟)

周9
完成时间为 3 小时
期末考试,课程结语
恭喜你顺利完成了所有教学模块的学习,来到了我们的终极挑战-期末考试!不要紧张,考试中所涉及的内容都是为了帮助你自我检测是否真正掌握了C程序的相关知识,达到了你的目标,所以只要认真复习所学的模块,我想你一定没有问题的!加油吧,我在这趟《程序设计与算法》学习旅途的下一站等你哦!

参考资料

基本资料
主要参考本课程所提供的讲义资料,以及来自 http://ica.openjudge.cn/ 的相关练习题。
参考教材
[1] Computer Systems -A Programmer's Perspective, Randal E.Bryant, David O'Hallaron, Prentice Hall, 2002.
[2] C++ Programming Today (2 edition), Barbara Johnston, Prentice Hall, 2007.

千万首歌曲。全无广告干扰。
此外,您还能在所有设备上欣赏您的整个音乐资料库。免费畅听 3 个月,之后每月只需 ¥10.00。
Apple 广告
声明:MOOC中国十分重视知识产权问题,我们发布之课程均源自下列机构,版权均归其所有,本站仅作报道收录并尊重其著作权益。感谢他们对MOOC事业做出的贡献!
  • Coursera
  • edX
  • OpenLearning
  • FutureLearn
  • iversity
  • Udacity
  • NovoEd
  • Canvas
  • Open2Study
  • Google
  • ewant
  • FUN
  • IOC-Athlete-MOOC
  • World-Science-U
  • Codecademy
  • CourseSites
  • opencourseworld
  • ShareCourse
  • gacco
  • MiriadaX
  • JANUX
  • openhpi
  • Stanford-Open-Edx
  • 网易云课堂
  • 中国大学MOOC
  • 学堂在线
  • 顶你学堂
  • 华文慕课
  • 好大学在线CnMooc
  • (部分课程由Coursera、Udemy、Linkshare共同提供)

© 2008-2020 MOOC.CN 慕课改变你,你改变世界