对于这个地球上大多数人来说,真正的数字化革命还没有开始。在接下来的10年里,变化将无处不在,让我们一起来给这个世界编码吧!——Eric Schmidt Google执行主席
编程语言层出不穷,不胜枚举,能帮助我们以不变应万变的奥秘何在?答案就是“编程之魂”。传统的编程入门课,都是以教授一种语言的基本语法为主,试图通过语言来传达“编程之魂”,但这样也许你会将更多的精力用在理解语言的语法细节上,只见树木不见森林。
期望通过本课程的学习,你不只是简单地能够掌握一种语言的语法,还能理解隐含在语法背后的思想,并初步具备灵活使用这些思想进行编写程序解决实际问题的能力。如果你掌握了这些,你会发现,迈向成功的最后一步不过是选择一种合适的编程工具而已。
我们会用15周的时间来深入讲解C语言,在授课过程中,我们会注重多解释一些“为什么”以及错误程序的分析,从环环相扣的问题入手,将一些易被忽视且对高水平程序设计很重要的“点”,沿着数据结构从简单到复杂的主线逐一展开,在实例的“不断深化和提升”中引出知识点,通过对问题的举一反三和前后知识点的融会贯通,由浅入深地引导你循序渐进地编写规模逐步增大的程序。
程序设计语言数以千计,能广为流传的不过几十种,能风光三十年的更是屈指可数,其中影响最大、寿命最长的非C语言莫属。尽管Java等后起之秀呈后来居上之势,但C语言宝刀不老,仍然笑傲天下,论剑江湖,铁杆粉丝遍布世界各地。
你想加入“稀饭”的行列吗?你想从“菜鸟”升级为“程序猿”吗?那就加入我们,和我们一起踏上爱上C语言之旅吧。
评分方案:
单元测验(单选题,每周3分,15周合计45分);单元作业(编程题在线测试题,3-12周每周3分,10周合计30分);课堂讨论活跃度(10分);期末考试(单选题)15分。
证书:
设置“合格”(达到60分以上)、"优秀"(达到80分以上)两档标准,由任课教师签发课程结业证书,其中成绩“优秀”者将颁发优秀证书。
这是目前暂时设计的课程大纲。每周均为1个小时的课时内容。合计15周。根据大家在讨论区的反映,我们会随时对大纲做出调整.
15学时,15周
12个知识单元:C数据类型,C算术运算和赋值运算,数据的键盘输入和屏幕输出,分支控制,循环控制,函数,数组,指针,指针与数组,结构体和共用体,动态数据结构的C语言实现,文件操作
每周都包括一些进阶内容,这些内容面向想深入学习C语言的学习者,不在考试范围内。
第1周(主讲:苏小红,叶麟,赵玲玲):
第1章 C数据类型
1.1 C语言的发展历史和特点
1.2 C语言的集成开发环境 Code::Blocks和Visual C++6.0介绍
1.3 变量的定义
1.4 变量的类型决定了什么?
1.4.1 不同类型数据可参与的运算不同
1.4.2 不同类型数据的表数范围不同
1.4.3 不同类型数据占用的内存大小不同
1.4.4 不同类型数据的存储形式不同
1.5 常量
第2周(主讲:苏小红):
第2章 C算术运算和赋值运算
2.1 赋值运算符
2.2 算术运算符
2.3 增1和减1运算符
2.4 算术表达式中的自动类型转换
2.5 强制类型转换
第3周(主讲:苏小红):
第3章 数据的键盘输入和屏幕输出
3.1 数据的格式化屏幕输出
3.2 数据的格式化键盘输入
3.3 单个字符的输入输出
3.4 进阶内容1——使用getchar()输入数据存在的问题
3.5 进阶内容2——使用%c格式符输入数据时存在的问题
第4周(主讲:苏小红):
第4章 分支控制
4.1 关系运算和逻辑运算
4.2 条件语句
4.2.1 if与if-else形式的条件语句
4.2.2 else-if级联形式的条件语句
4.3 开关语句
4.4 进阶内容——赋值中的自动类型转换
4.4.1 数值溢出问题分析
4.4.2 精度损失问题分析
4.5 进阶内容——软件测试和错误实例分析
第5周(主讲:苏小红):
第5章 循环控制
5.1 计数控制的循环-for语句
5.2 标记控制的循环-while语句和do-while语句
5.3 条件控制的循环—猜数游戏
5.4 嵌套循环
5.5 流程的转移控制
5.5.1 goto语句
5.5.2 break语句与continue语句
5.6 进阶内容——软件调试与错误实例分析
第6周(主讲:苏小红):
第6章 函数-1
6.1 函数的分类和定义
6.2 函数调用与参数传递
6.3 函数原型、函数封装
6.3.1 函数原型、函数封装
6.3.2 进阶内容——防御性程序设计
6.4 断言
6.5 进阶内容——代码风格
第7周(主讲:苏小红):
第6章 函数-2
6.6 递归
6.6.1 函数的嵌套调用和递归调用
6.6.2 递归函数与函数调用栈
6.6.3 进阶内容——尾递归
6.7 变量的作用域
6.8 变量的存储类型
第8周(主讲:苏小红,叶麟):
第7章 数组
7.1 一维数组的定义和初始化以及下标越界访存问题
7.2 二维数组的定义和初始化以及下标越界访存问题
7.3 向函数传递一维数组和二维数组
7.4 排序算法的函数实现
7.5 查找算法的函数实现
7.6 进阶内容——数组的其他应用
第9周(主讲:苏小红):
第8章 指针-1
8.1 指针变量的定义、初始化及其解引用
8.2 指针变量做函数参数
8.3 字符指针-1
8.3.1 字符数组和字符指针
8.3.2 字符串处理函数
第10周(主讲:苏小红):
第8章 指针-2
8.3 字符指针-2
8.3.3 向函数传递字符串
8.3.4 从函数返回字符串
8.3.5 进阶内容——缓冲区溢出与缓冲区溢出攻击
8.4 函数指针及其应用
第11周(主讲:苏小红):
第9章 指针与数组
9.1 指针和一维数组间的关系
9.2 指针和二维数组间的关系
9.3 指针数组及其应用
9.3.1 指针数组的定义
9.3.2 用指针数组表示多个字符串
9.3.3 用指针数组表示命令行参数
第12周(主讲:苏小红):
第10章 结构体和共用体
10.1 为什么要使用结构体类型,结构体类型的声明
10.2 结构体变量和结构体数组
10.2.1 结构体变量的定义和初始化
10.2.2 结构体数组的定义和初始化
10.2.3 结构体成员的引用
10.3 结构体指针
10.3.1 指向结构体变量的指针
10.3.2 指向结构体数组的指针
10.4 向函数传递结构体
10.5 结构体所占内存的字节数
10.5.1 结构体变量所占内存的字节数
10.5.2 结构体数组所占内存的字节数
10.5.3 结构体指针所占内存的字节数
10.6 共用体
第13周(主讲:苏小红,赵玲玲):
第11章 动态数据结构的C语言实现-1
11.1 C程序的内存映像和动态内存分配
11.2 进阶内容——常见的内存错误
11.2.1 内存分配未成功就使用
11.2.2 内存分配成功但未初始化就使用
11.2.3 内存越界使用
11.2.4 内存泄露
11.2.5 内存释放后仍然继续使用
11.3 动态数组
11.3.1 一维动态数组
11.3.2 进阶内容——二维动态数组
第14周(主讲:赵玲玲):
第11章 动态数据结构的C语言实现-2
11.4 利用结构体实现单向链表
11.4.1 引言
11.4.2 单向链表的定义
11.4.3 单向链表的建立
11.4.4 单向链表的删除操作
11.4.5 单向链表的插入操作
11.5 进阶内容——其他数据结构简介
第15周(主讲:苏小红,叶麟):
第12章 文件操作
12.1 二进制文件和文本文件
12.2 文件的打开和关闭
12.3 按字符读写文件
12.3.1 按字符读写文件
12.3.2 进阶内容——使用函数feof()的注意事项
12.4 按格式读写文件
12.5 按数据块读写文件
12.6 文件的随机读写和文件缓冲
本门课程的基本内容是面向零基础的学生。进阶内容是面向有一定编程基础或者有大学计算机基础的学生,但是进阶内容不做为课程的考试内容。
1. 面向读者的教材网站(https://book.sunner.cn)
该网站的服务对象是我们自编教材的读者,提供教材课件、例题源代码、教材勘误表等资源,便于学生浏览和下载后自学,读者也可利用该网站反馈教材使用意见和建议。
2. 作业在线测试系统(https://sse.hit.edu.cn/t)
该网站的服务对象是使用我们自编教材的读者,在我们编写的由高等教育出版社出版的《C语言程序设计(第2版)》的封底有一个刮刮卡,刮开可以获得一个免费的注册账号,登陆我们开发的C语言作业在线测试系统,在该系统中可以自主选择教材对应章编号中的习题进行自测,提交习题答案后,系统会实时显示评分,另外在习题市场中读者还可以发布题目给其他读者练习。
3. 参考教材
1)苏小红,王宇颖,孙志岗,《C语言程序设计(第2版)》,高等教育出版社,2013年8月,购书网址:亚马逊
2)苏小红,车万翔,王甜甜,《C语言程序设计学习指导(第2版)》,高等教育出版社,2013年9月,购书网址:亚马逊
3)苏小红,孙志岗,陈惠鹏,《C语言大学实用教程(第3版)》,电子工业出版社,2012年6月,购书网址:亚马逊
4)苏小红,孙志岗等,《C语言大学实用教程学习指导(第3版)》,电子工业出版社,2012年6月,购书网址:亚马逊
5)苏小红等,《程序设计基础》,高等教育出版社,待出版
4.相关链接
爱课程国家精品资源共享课:https://www.icourses.cn/coursestatic/course_3153.html
相关MOOC课程:程序设计基础:https://www.icourse163.org/course/hit/0809HIT004B#/info