21世纪高等学校规划教材·计算机科学与技术:C程序设计快速进阶大学教程
定 价:31 元
- 作者:蒋光远 ,田琳琳 编
- 出版时间:2010/9/1
- ISBN:9787302231196
- 出 版 社:清华大学出版社
- 中图法分类:TP312C
- 页码:307
- 纸张:胶版纸
- 版次:1
- 开本:16开
-
商品库位:
《C程序设计快速进阶大学教程》按照快速了解、详细解读、深入研讨的顺序展开,目的是使读者尽快领略C语言的全貌,进而产生强烈的兴趣和深人探讨的愿望。依据此思想《C程序设计快速进阶大学教程》分为三篇:第一篇感知篇,通过一个简单任务驱动,让读者在很短的时问内了解C语言的主要知识点及C程序所能完成的任务;第二篇详解篇,逐步展开对每个知识点的详细研究,按照理解概念、语法规则、使用方式进行深入探讨,以掌握计算机语言的基本要素;第三篇进阶篇,分析、设计、实现一些有一定难度的案例,深层次运用各个知识点,进而培养读者结构化程序设计的能力。《C程序设计快速进阶大学教程》组织方式完全符合人类对语言的学习过程,即模仿、理解、应用,也符合软件工程迭代式开发过程的思想,对读者从事软件研发大有裨益。
从模仿到理解,从感性到理性,遵循人类自然语言的学习过程。 案例贯穿,以任务需求驱动展开,讲解各知识点怎样应用到任务中去。 深入浅出,把复杂的问题简单化,有助于读者理解。
从事了多年的C语言教学工作,怎样提高教学水平一直是萦绕笔者脑海的问题。总结学生学习中的问题,大致有以下三点: 第一,学习过程的初期对计算机语言没有整体的认识,不了解C程序所能完成的功能,以及各知识点所扮演的角色,学习时没有明确的目的性; 第二,C语言本身知识点繁多、晦涩难懂,对于初次接触计算机语言的读者来说难于掌握,久而久之,产生畏难情绪,因而丧失了学习的兴趣; 第三,只能初步了解各知识点语法规则,不能够融会贯通,并综合运用,更谈不上程序设计。
C语言具备一般语言的特点,笔者认为计算机语言的学习能不能借鉴人类自然语言的学习方式?人类对自然语言的学习过程,总是从模仿开始,这个阶段只知道这么说,并不理解其语法规则; 然后在生活、学习当中逐步懂得语言的结构及语法; 最后,通过阅读、分析文章和撰写文件才能够熟练地应用语言。
C语言的学习是为了软件的研发,回顾多年的软件研发经验,其中最困难的当然是了解用户的需求。如果不熟悉问题领域的需求,学习起来很困难。如何解决呢?我们通常采用迭代式的软件开发方法,因为开始很难详知开发问题领域的所有问题,可以选一条主线完成一个基本结构,然后经过多次迭代,每次软件有一定增量,使得每次的迭代产品都越来越接近目标系统。
于是,笔者萌生这样一个想法,C语言对于初学来说,知识点繁多且难于理解,想一次完全掌握对于大多数读者来说相当困难。C语言的学习与人类学习自然语言以及软件开发过程中理解问题域的知识非常相似,就可以把人类对自然语言的学习过程和软件开发过程的迭代方法应用到C语言学习当中来,我们称之为“三次迭代法”。
三次迭代法采用三个周期,每个周期有一定的增量,递增地学习各个知识点。具体方法如下: 感知部分(第一次迭代)让读者在很短的时间内亲身感受到C语言的全貌,建立起对C语言的兴趣,分析典型样例,并给出相似的模仿习题; 详解部分(第二次迭代)
对C语言逐步展开介绍,对每个知识点按照理解、语法规则、使用方式的次序做深入探讨; 进阶部分(第三次迭代)综合运用各个知识点分析、设计、实现一些有一定难度的案例,不但再次深层次运用各个知识点,而且培养了程序设计能力。这就完全符合了人类学习自然语言的过程,同时,三次迭代过程每次迭代都是对前一次的深化。
三次迭代法的教材组织与教学方法对传统模式的变革,类似于软件开发过程由“瀑布式开发”到“迭代式开发”演变,这种思路对读者从事软件研发也会大有裨益。
有了以上想法,笔者异常兴奋,废寝忘食,奋笔疾书,望早日呈书于读者面前,希望为C语言的学习者提供些许帮助。
鉴于笔者水平有限,书中难免有纰漏,欢迎广大读者多提宝贵意见。
编者2010年6月
第0章 概述
0.1 计算机的由来及组成
0.2 计算机程序
0.3 C语言发展史-
0.4 C程序基本结构
0.5 C程序开发步骤
0.6 集成开发环境
习题
第1篇 感知篇
第1章 数据的基本操作
1.1 数据的存储与输出
1.2 数据的输入与运算
1.3 数据的比较与判断
第2章 结构化程序设计初探
2.1 重复与循环语句
2.2 基本结构的组合
2.3 模块化编程
第3章 数据结构
3.1 数组
3.2 结构体
3.3 动态数组
3.4 文件
第4章 算法描述和编码规范
4.1 程序设计与算法描述
4.1.1 程序设计与算法
4.1.2 FC流程图
4.1.3 NS盒图
4.2 C语言编码规范
习题
第2篇 详解篇
第5章 数据类型与输入输出
5.1 C语言要素
5.1.1 字符集
5.1.2 标识符与关键字
5.1.3 可执行语句
5.2 数据类型
5.2.1 理解数据类型
5.2.2 变量
5.2.3 常量
5.2.4 整型数据
5.2.5 浮点型数据
5.2.6 字符型数据
5.3 输入与输出操作
5.3.1 输入与输出的概念
5.3.2 格式化输出函数
5.3.3 格式化输入函数
5.3.4 字符的输入与输出
5.4 编程错误
5.4.1 语法错误和警告
5.4.2 运行错误
5.4.3 逻辑错误
习题
第6章 运算符与表达式
6.1 概述
6.2 算术运算
6.3 赋值运算
6.4 表达式中的类型转换
6.4.1 隐式类型转换
6.4.2 显式类型转换
6.5 自增与自减运算
6.6 关系与逻辑表运算
6.7 其他运算符
6.8 运算符的优先级与结合性
6.9 案例分析
习题
第7章 选择结构
7.1 理解选择结构
7.2 简单分支语句
7.2.1 单分支if语句
7.2.2 双分支if-else语句
7.3 多分支语句
7.3.1 嵌套if语句
7.3.2 多分支else if语句
7.3.3 switch语句
7.4 案例分析
习题
第8章 循环结构
8.1 理解循环结构
8.2 循环语句
8.2.1 while语句
8.2.2 do语句
8.2.3 for语句
8.2.4 几种循环语句的比较
8.3 循环条件
8.3.1 计数器控制循环
8.3.2 标记控制循环
8.4 循环嵌套
8.4.1 循环嵌套结构
8.4.2 循环中的选择结构
8.5 循环中的跳转
8.5.1 break语句
8.5.2 continue语句
8.5.3 go to语句
8.6 案例分析
习题
第9章 数组
9.1 理解数组
9.2 一维数组
9.2.1 一维数组定义
9.2.2 一维数组引用
9.2.3 一维数组初始化
9.2.4 一维数组案例分析
9.3 二维数组
9.3.1 二维数组定义
9.3.2 二维数组引用
9.3.3 二维数组初始化
9.3.4 二维数组案例分析
习题
第10章 函数
10.1 理解函数
10.2 函数定义和分类
10.2.1 函数定义
10.2.2 函数分类
10.3 函数调用和声明
10.3.1 函数调用
10.3.2 函数声明
10.4 函数参数和函数值
10.4.1 形式参数与实际参数
10.4.2 函数返回值
10.4.3 数组作函数参数
10.5 函数递归调用
10.6 变量作用域与生存期
10.6.1 变量作用域
10.6.2 变量存储类别与生存期
10.7 内部函数和外部函数
习题
第11章 指针.
11.1 理解指针
11.2 指向变量的指针
11.2.1 指针变量定义
11.2.2 指针变量引用
11.3 数组与指针
11.3.1 一维数组与指针
11.3.2 二维数组与指针
11.3.3 指针数组
11.3.4 指向指针的指针
11.4 函数与指针
11.4.1 指针作函数参数
……
第3篇 进阶篇
附录A ASCII表
计算机每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用人们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
目前通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。