普通高等教育“十一五”国家级规划教材:C语言及程序设计基础
定 价:38 元
- 作者:谭成予 著
- 出版时间:2010/2/1
- ISBN:9787307075634
- 出 版 社:武汉大学出版社
- 中图法分类:TP312C
- 页码:384
- 纸张:胶版纸
- 版次:1
- 开本:16开
程序设计概述,数据、类型和运算,简单程序设计,控制流,函数.程序设计方法概述、数组,结构和联合类型,文件,问题求解策略和算法设计。相对于以往的版本,《C语言及程序设计基础》增加了对模块化的程序设计方法、C语言实现的软件开发技术,以及穷举法、局部搜索、回溯法、分治法和人工智能问题求解三个方面的内容。新加入的内容,通过实例的代码来讲解理论概念的方法,是《C语言及程序设计基础》的-大特色,有利于促进学生参与到程序设计中来。
《C语言及程序设计基础》合作为高等院校计算机科学与技术、信息安全及相关专业学习高级语言程序设计的教科书,也可作为广大软件开发人员和自学人员的参考书。
作者在武汉大学为一年级本科生教授程序设计时,发现很多初学者热衷于学习各种语言工具以及语法细节,但是却常常陷入对语言工具极为熟悉而无法写出高质量程序的困境,因而萌发了编写本书的想法。
怎样才能通过学习成为一个优秀的程序员?对这个问题,初学者常常存在一些认识上的误区,即只要花费大量的时间学习语言工具就能成为一个程序设计的高手。这个观点有些荒谬,识字很多的人一定是最好的作家吗?能演奏最多音符的人一定是最好的音乐家吗?显然不是。编程工作不仅仅只是编写代码,它应当是恰当的问题解决策略和正确的语言细节的完美结合,其中最困难的部分并不是学习语言细节,而是理解问题的解决之道。
本书从一开始就注重程序设计方法,从准备完整且准确的程序说明开始,并强调测试计划和程序验证的重要性。本书以C语言为样例,着重讲解高级语言程序设计的基本理论,结合程序设计的基本思想、问题表达、设计方法以及解决问题能力为主线条,配合C语言的文法及描述方法,组织全书的内容。
本书在介绍程序设计的基本概念的基础上,强调算法的重要性及其在程序设计中的作用;强调“以算法带动文法”、“学思想用细节”的思想。并通过大量的数学、工程和算法方面的完整样例程序,为读者展示如何通过编程技巧阐述问题的解决策略。
本书为水平各不相同的所有程序设计人员编写。无论是程序设计的初学者、教师还是成熟的专业人士,我们相信本书及其辅导教材将提供一种内容丰富而具有挑战性的学习经历
作者在每学年授课时,常被学生问到一个问题:为什么选择C语言作为第一门编程课程?笔者认为,C语言比C++或者Java等更适合作为编程的入门语言。实际上,由于好奇的天性,人们更容易注意到那些新的事物,而忽视了用以构筑未来的坚实基础。C语言正是这样的基础,很多的程序代码是用C语言运行的,C++正是在此基础上建立的,C语言的语法构成了Java的基础。但是,C语言不仅仅只是其他语言的起点,它到今天仍然至关重要,仍然具有其他计算机语言无法比拟的魅力。除此之外,从C语言开始学起,可以有助于为随后学习的C++或者Java奠定理论基础,这样更容易理解抽象的数据类型。
为了系统地介绍结构化程序设计方法和c语言,全书共分11章,下面简单介绍这些章节的内容:
第一部分:程序设计概述
第1章介绍了计算机的基本组成和原理、程序和计算机语言、高级语言源程序的组成、C语言的发展史、C程序的基本组成、程序规范、测试计划和编程的基本步骤。初学者通过第1章的学习,为深入了解C语言的技术细节打下坚实的基础,有经验者可快速浏览本章。
第1章 程序设计概述
1.1 什么是计算机
1.1.1 物理计算机
1.1.2 系统软件和应用软件
1.1.3 网络和计算模式
1.2 程序和程序设计概述
1.2.1 什么是程序
1.2.2 计算机语言
1.2.3 C语言的发展历史和特点
1.2.4 程序设计
1.3 程序的组成
1.3.1 程序的语法对象
1.3.2 程序的基本结构
1.3.3 程序的基本语法单位
1.4 程序设计的步骤
1.4.1 问题说明
1.4.2 设计测试计划
1.4.3 设计方案
1.4.4 开发环境
1.4.5 构造程序
1.4.6 执行和测试程序
1.5 本章小结
习题1
第2章 数据、类型和运算
2.1 计算机中的数与数制
2.1.1 计算机中的整数
2.1.2 计算机中的实数
2.1.3 计算机中的文字
2.2 C的数据类型和基本数据类型
2.2.1 C的数据类型
2.2.2 C的基本数据类型
2.3 变量
2.3.1 数学中的变量和计算机中的变量
2.3.2 变量的定义形式
2.3.3 变量的定义位置
2.3.4 变量的初始化
2.3.5 类型限定词
2.3.6 变量的左值和右值
2.4 常量
2.4.1 整型常量
2.4.2 浮点数常量
2.4.3 字符型常量
2.4.4 字符串常量
2.4.5 符号常量(不带参数的宏)
2.5 数值问题的计算误差
2.5.1 整数上溢
2.5.2 浮点数的可表示误差
2.5.3 浮点数上溢
2.5.4 浮点数下溢
2.5.5 数据类型的选择
2.6 表达式的基本概念
2.6.1 运算符和算元
2.6.2 优先级别、括号和结合性
2.6.3 C语言中的运算符概述
2.7 C语言中的运算符
2.7.1 算术运算、增量和减量运算符
2.7.2 赋值运算符
2.7.3 关系运算符和逻辑运算符
2.7.4 条件运算符和逗号运算符
2.7.5 位运算符
2.7.6 其他运算符
2.8 表达式中的自动类型转换和强制类型转换
2.8.1 自动类型转换
2.8.2 强制类型转换
2.9 本章小结
2.9.1 主要知识点
2.9.2 难点和常见错误
习题2
第3章 简单程序设计
3.1 结构化的三种基本结构
3.1.1 结构化程序设计的基本思想
3.1.2 三种基本结构
3.2 语句
3.2.1 表达式语句
3.2.2 块语句
3.2.3 跳转语句
3.2.4 其他控制语句
3.3 控制台I/O
3.3.1 读写字符
3.3.2 格式化控制台输出
3.3.3 格式化控制台输入
3.4 程序原型
3.4.1 程序原型
3.4.2 程序书写风格
3.4.3 程序布局与规范
3.5 编写简单的C程序
3.6 本章小结
3.6.1 主要知识点
3.6.2 难点和常见错误
习题3
第4章 流程控制
4.1 if条件语句
4.1.1 双分支if语句
4.1.2 单分支if语句
4.1.3 嵌套if语句
4.1.4 if-else-if梯次
4.1.5 代替if语句的条件运算符
4.2 switch多重选择语句
4.2.1 switch语句基本语法
4.2.2 使用switch语句的三个要点
4.3 循环语句
4.3.1 for语句
4.3.2 while语句
4.3.3 do-while语句
4.3.4 goto语句构建循环结构
4.4 循环结构中的break和continue语句
4.4.1 break语句
4.4.2 continue语句
4.5 应用实例
4.5.1 哨兵循环
4.5.2 查询循环
4.5.3 计数循环
4.6 本章小结
4.6.1 主要知识点
4.6.2 难点和常见错误
习题4
第5章 函数
5.1 模块化的程序设计
5.1.1 从构造计算机说起
5.1.2 C语言中的程序模块
5.1.3 程序“模块化”的目的
5.2 创建函数
5.2.1 C语言中函数分类
5.2.2 函数定义的一般形式
5.2.3 定义无参函数
5.2.4 定义有参函数
5.2.5 理解函数的作用域规则
5.3 函数调用
5.3.1 函数调用的一般形式
5.3.2 函数原型
5.4 函数之间的数据通信
5.4.1 模块间的数据通信方式
5.4.2 C函数中形参和实参间的值传递
5.4.3 C函数的返回值
5.5 函数的递归调用
5.5.1 运行栈
5.5.2 直接递归和间接递归
5.5.3 递归与迭代
5.5.4 较复杂的递归范例:Hanoi问题
5.6 数据的模块化
5.6.1 什么是数据模块化
5.6.2 标识符的作用域和可视性
5.6.3 变量的存储类别
5.6.4 由多个源文件组成的程序的编译问题
5.7 编译预处理
5.7.1 宏
5.7.2 文件嵌入
5.7.3 条件编译
5.7.4 其他编译预处理命令
……
第6章 程序设计方法概述
第7章 数组
第8章 指针
第9章 结构、联合、枚举和typedef
第10章 流与文件
第11章 问题求解策略和算法设计
附录A ASII码表
附录B C要unsuan符的优先级和结核性
附录C C关键字
附录D 常用C库函数
附录E C/C++互联网资源
参考文献
第2章 数据、类型和运算
计算是计算机编程的核心。本章主要介绍如何为一个程序定义命名对象,例如变量、常量等,以及如何在计算中使用这些对象。
表达式是计算机程序中计算的最基本形式,表达式由计算机语言的基本元素——数据和运算符构成。数据可由变量、常量或函数返回的值来表达。运算符通常由图形化符号表示,代表对数据执行的操作种类。这里将讨论如何对变量、常量运用C语言的各种运算操作,C的表达式比多数计算机语言的表达式更丰富、更强、更灵活。
本章介绍的主要内容包括:
·计算机中的数和数制。
·C的数据类型和基本数据类型。
·变量的定义、初始化等基本概念。
·常量的表达。
·计算误差的基本概念,数据的上溢、下溢以及可表示误差等。
·表达式的基本概念,C语言中的算术运算、赋值运算、关系和逻辑运算、条件运算符、逗号运算符、位运算以及其他运算符。
·自动类型转换和强制类型转换。
2.1 计算机中的数与数制
一般来说,用计算机解决一个具体问题时,基本步骤之一就是正确地描述现实问题中的数据。为了编写一个“好”的程序,必须首先了解计算机中的数据表达和数学意义上的数据表达有哪些异同。
从数学意义来看,数据是对现实世界中的人物、事件、其他对象或概念的描述。它是对客观事物的符号表示,如图形符号、数字、字母等。例如统计武汉大学在校学生的平均年龄,需要处理的对象包括每个学生的年龄以及学生人数,分别用实数和整数来表示。
从数学意义来看,数据的表示范围和计算精度仅受到待处理问题计算要求的限制。现实世界中数据含义极为广泛,除了我们所熟知的整数以及实数等数值数据(常用十进制数制来表示)外,还包括图像、视频、声音等各种表示形式。
用计算机程序解决实际问题时,首先需要将现实问题抽象成一个适当的数学模型,然后为此数学模型设计一个相应的算法,以便将数据和相应的操作转换成计算机可“识别”的表示形式。从这个意义来看,计算机中的数据不仅是客观事物的符号表达,同时也是所有能输入到计算机并被计算机程序处理的符号介质的总称。计算机中的数据不仅受到待处理问题的计算要求的限制,同时受到计算机物理部件的限制。