荷兰著名计算机学家Edsger W. Dijkstra曾说过,“我们所使用的工具深刻地影响着我们的思维方式和思维习惯,进而也将深刻地影响着我们的思维能力”。 计算机技术的普及已经深刻影响了现代人类生活的各个方面。“计算思维”就如同读、写、算能力一样,是所有人必须具备的思维能力。
计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。编程能力即是这种思维能力的一种体现。
本课程目标是通过对C语言的学习和使用,使您掌握结构化程序设计语言的基本概念、思想和方法,从而获得初步的程序设计能力(能够编写小规模程序解决实际问题),逐步养成并具备一定的计算思维能力。
课程以实际应用为背景,以“案例驱动”不断引入相关知识点,随着案例不断深入,将程序设计各相关知识点展现在读者面前,形成一条完整知识链条。因案例都是常见实际应用或初等数学问题,和生活密切相关,所以您大可不必担心学不会。
课程注重计算思维训练,即对实际问题求解过程、逻辑过程的抽象、理解和应用;因此大量使用PAD(Problem Analysis Diagram)描述程序逻辑结构,而非直接使用代码讲解;目的是帮助您不受编程语言限制,理解抽象过程;最终达到举一反三,融会贯通,掌握结构化程序设计的思想和方法,形成初步的编程和计算思维能力。
为什么选C语言作为载体语言?C语言作为当代最优秀的程序设计语言之一,它的优点远远超过了它的缺点。经验表明,程序设计人员一旦学会使用C语言之后,就会对它爱不释手;而且很多语言都是在它基础上发展起来的;所以C语言当之无愧地成为思想交流的首选载体语言。
时间安排:我们将用12周时间来学习具体的C语言语法、结构化程序设计基本概念、思想和方法(观看视频、随堂测验、参与讨论等进行学习),客观题周测用来检验您对基本概念的掌握情况,主观编程题周测用来训练您的编程和计算思维能力。期末主讲教师会用1周左右的时间,通过公告在网上带领大家进行知识梳理回顾,帮助您对所学知识进行整理、归纳形成一个完整的知识体系。最后1周则是期末考试(包含客观和主观编程题),检验总体学习情况。
本课程目标是通过对C语言的学习和使用,使您掌握结构化程序设计的基本概念、思想和方法,经过编程实践,获得初步的程序设计能力(能够编写小规模程序解决实际问题),逐步养成并具备一定的计算思维能力。
第一讲:绪论与程序初步
1.1 鸡兔同笼——计算
1.2 算法
1.3 程序
2.1 求绿化带宽度
2.2 基本符号
第一讲:绪论与程序初步--客观题
第一讲:绪论与程序初步--编程题
第二讲:顺序程序设计
2.3 数据
2.4 语句
2.5 表达式
2.6 顺序控制结构
2.7 数据类型
2.8 输入输出
第二讲:顺序程序设计--客观题
第二讲:顺序程序设计--编程题
第三讲:分支和循环初步
3.1 判断成绩是否及格——双分支程序设计
3.2 成绩加上获奖信息——单分支程序设计
3.3 逻辑判断——布尔类型
3.4 获奖分等级——多分支程序设计
4.1 计算平均成绩——循环程序设计
第三讲:分支和循环初步--客观题
第三讲:分支和循环初步--编程题
第四讲:循环进阶
4.2 计算全班每人平均成绩——多重循环
4.3 程序设计实例
第四讲:循环进阶--客观题
第四讲:循环进阶--编程题
第四讲:循环进阶--编程题--拓展篇(不计入成绩)
第四讲:循环进阶--编程题--反弹距离(修正)(不计入成绩)
第五讲:函数和数组初步
5.1 求给定三角形重心
5.2 函数
6.1 成绩统计——数组类型
6.2 统计多科成绩——多维数组
6.3 程序设计实例
第五讲:函数和数组初步--客观题
第五讲:函数和数组初步--编程题
第六讲:数组应用
6.4 线性表——分类与检索
6.5 带学号的成绩排序——数组初值
6.6 表示姓名——字符串
第六讲:数组应用--客观题
第六讲:数组应用--编程题
第六讲:数组应用--编程题--拓展篇(不计入成绩)
第七讲:数组进阶与指针初步
6.7 类型定义
6.8 线性表——栈和队列
7.1 指针与变量
第七讲:数组进阶与指针初步--客观题
第七讲:数组进阶与指针初步--编程题
第八讲:指针应用与结构体
7.2 指针操作
7.3 指针与数组
7.4 指针与字符串
8.1 成绩单管理
8.2 保存成绩单——结构体
8.3 程序设计实例
第八讲:指针应用与结构体--客观题
第八讲:指针应用与结构体--编程题
第八讲:指针应用 & 结构体--编程题--拓展篇(不计入成绩)
第九讲:函数进阶与递归程序设计
9.1 参数
9.2 函数值
10.1 递归程序设计
10.2 程序设计实例
第九讲:函数进阶与递归程序设计--客观题
第九讲:函数进阶与递归程序设计--编程题
第九讲:函数进阶与递归程序设计--编程题--拓展篇(不计入成绩)
第九讲:函数进阶与递归程序设计--编程题--递归求解最大字符串(修正)(不计入成绩)
第十讲:文件
11.1 户籍管理
11.2 文件概述
11.3 文件打开关闭
11.4 文件IO操作
第十讲:外部数据组织--文件--客观题
第十一讲:程序开发与动态变量
12.1 自顶向下逐步求精
12.2 结构化程序设计原则
12.3 程序风格
13.1 保存实数序列——动态数据结构
13.2 动态变量
第十一讲:程序开发与动态变量--客观题
第十一讲:程序开发与动态变量--编程题
第十二讲:动态变量应用——链表
13.3 链表
13.4 程序设计实例
第十二讲:动态变量应用--客观题
第十二讲:动态变量应用--编程题
零起点课程,具有初中水平的数学和英语知识即可学习。
1. 新形态教材:《程序设计基础》(第三版)陈娟、张长海,2019年8月 北京 高等教育出版社
京东 本教材提供了相应内容的电子教案、例题代码、部分作业参考答案,以及重点内容的视频;可以扫描书上的二维码获得,或者访问https://abook.hep.com.cn/1860420 使用书后粘贴的用户名和密码登录访问。
2. 习题集:《程序设计基础习题集》张长海、陈娟、兰书梅,2008年7月 北京 清华大学出版社 当当网 。本书为大家提供了更多题目,由浅入深训练编程能力。
3. C语言规范:《C语言参考手册(原书第5版)》(美)Samuel P. Harbison III / Guy L. Steele Jr. 邱仲潘 等译 2003年8月 机械工业出版社。此书先后有多个译本,都能在网上搜到。如果您想更加深入了解C语言的特性,此书可以为你提供更多的帮助。