提高学生应对未来专业实践课程的兴趣和信心。
C程序设计 | 谭浩强
由谭浩强教授著、清华大学出版社出版的《C程序设计》经过近三十年一千多万读者的实践检验,被公认为学习C语言程序设计的经典教材。根据C语言的发展和计算机教学的需要,作者在《C程序设计(第四版)》的基础上进行了修订,使内容更加完善,更易于理解,更加切合教学需要。本书按照C语言的新标准C 99进行介绍,所有程序都符合C 99的规定,使编写程序更加规范;对C语言和程序设计的基本概念和要点讲解透彻、全面而深入;按照作者提出的“提出问题—解决问题—归纳分析”三部曲进行教学和组织教材;本书的每个例题都按以下几个步骤展开:提出任务—解题思路—编写程序—运行程序—程序分析—有关说明。符合读者认知规律,容易入门与提高。
本书内容先进,体系合理,概念清晰,讲解详尽,降低台阶,分散难点,例题丰富,深入浅出,文字流畅,通俗易懂,是初学者学习C语言程序设计的理想教材,既可作为高等学校各专业的正式教材,也适合读者自学。本书还配有辅助教材《C程序设计(第五版)学习辅导》。
目录
第1章 程序设计和C语言 1
1.1 什么是计算机程序 1
1.2 什么是计算机语言 1
1.3 C语言的发展及其特点 3
1.4 简单的C语言程序 5
1.5 运行C程序的步骤与方法 11
1.6 程序设计的任务 13
习题 14
第2章 算法——程序的灵魂 15
2.1 程序=算法 数据结构 15
2.2 什么是算法 16
2.3 简单的算法举例 17
2.4 算法的特性 20
2.5 怎样表示一个算法 21
2.6 结构化程序设计方法 33
习题 35
第3章 简单的C程序设计——顺序程序设计 37
3.1 顺序程序设计举例 37
3.2 数据的表现形式及其运算 39
3.3 运算符和表达式 51
3.4 C语句 56
3.5 数据的输入输出 64
习题 80
第4章 选择结构程序设计 83
4.1 选择结构和条件判断 83
4.2 用if语句实现选择结构 85
4.3 关系运算符和关系表达式 89
4.4 逻辑运算符和逻辑表达式 90
4.5 条件运算符和条件表达式 94
4.6 选择结构的嵌套 96
4.7 用switch语句实现多分支选择结构 99
4.8 选择结构程序综合举例 102
习题 107
第5章 循环结构程序设计 110
5.1 为什么需要循环控制 110
5.2 用while语句实现循环 111
5.3 用do…while语句实现循环 113
5.4 用for 语句实现循环 116
5.5 循环的嵌套 120
5.6 几种循环的比较 121
5.7 改变循环执行的状态 121
5.8 循环程序举例 127
习题 137
第6章 利用数组处理批量数据 139
6.1 怎样定义和引用一维数组 139
6.2 怎样定义和引用二维数组 145
6.3 字符数组 151
习题 165
第7章 用函数实现模块化程序设计 167
7.1 为什么要用函数 167
7.2 怎样定义函数 169
7.3 调用函数 171
7.4 对被调用函数的声明和函数原型 176
7.5 函数的嵌套调用 179
7.6 函数的递归调用 181
7.7 数组作为函数参数 189
7.8 局部变量和全局变量 196
7.9 变量的存储方式和生存期 201
7.10 关于变量的声明和定义 211
7.11 内部函数和外部函数 212
习题 215
第8章 善于利用指针 217
8.1 指针是什么 217
8.2 指针变量 219
8.3 通过指针引用数组 229
8.4 通过指针引用字符串 254
8.5 指向函数的指针 265
8.6 返回指针值的函数 273
8.7 指针数组和多重指针 276
8.8 动态内存分配与指向它的指针变量 284
8.9 有关指针的小结 288
习题 291
第9章 用户自己建立数据类型 293
9.1 定义和使用结构体变量 293
9.2 使用结构体数组 300
9.3 结构体指针 303
9.4 用指针处理链表 309
9.5 共用体类型 317
9.6 使用枚举类型 322
9.7 用typedef声明新类型名 326
习题 330
第10章 对文件的输入输出 331
10.1 C文件的有关基本知识 331
10.2 打开与关闭文件 334
10.3 顺序读写数据文件 338
10.4 随机读写数据文件 350
10.5 文件读写的出错检测 355
习题 355
附录 357
附录A 常用字符与ASCII代码对照表 357
附录B C语言中的关键字 358
附录C 运算符和结合性 359
附录D C语言常用语法提要 361
附录E C库函数 365
机器人辅助C程序设计 | 秦志强
C程序设计课程是当前大多数工程专业的第一门专业基础课程,几乎所有的工科学生都要学习C程序设计,以便为后续的专业课程学习打下基础。这门课程学不好,后续专业课程的学习也会大打折扣,影响整个专业课程的学习。目前的现状是,每年几千万的学生在学习C程序设计,但是仍然满足不了社会对合格软件工程师的迫切需求。
传统的C程序设计教材和C语言教学方法,基本上都是围绕科学计算和算法设计展开,教学的目标是建立知识体系。这种教学方法的教学效果越来越不能满足当今工程教育的需要,尤其是对于未来希望从事嵌入式系统设计或者自动化系统设计的学生和个人而言。
学习C语言是为了用C语言去解决程序编写问题,这种程序编写能力只有从程序设计实践中才能迅速获得,理论的讲解过多,不仅对学习C程序设计无益,甚至还会让学生滋生厌烦情绪。当然,只单纯的编写程序也无法获得真正的能力,关键是如何从不断的程序设计实践中,归纳出共性程序设计知识和关键技能,建立起分析问题和解决问题的知识和技能模型,然后再将这些知识技能重新应用到新的程序设计实践中去,才能达到学习的最终目的。这也是当今的大学生要在未来的实际工作(无论是在企业研发还是在高校做研究)中所必须采取的学习和工作方法。因此,如何从一进入大学,就学习和掌握这种自我学习和提高的方法,是高等工程教育改革的根本目标。
本书的编写始终围绕典型的机器人制作项目展开,按照“任务实践-技能归纳-学习总结-项目再实践”的学习模式设计一系列循序渐进的学习实践项目,突破了传统的“课堂理论+上机实验”的传统学习模式,同时引进各种教学竞赛项目代替传统的考试,激发学习兴趣,实现“做中学、学中赛、赛中会”,最终帮助学习者建立起应用C语言进行程序设计的知识技能体系,并获得实际的程序设计技能。
通过本书的学习实践掌握了单片机C语言的编程技能后,后续的单片机课程学习就变得相对简单快捷。与本书配套的单片机后续书籍将重点介绍如何利用单片机设计编写出更高效的程序,扩展更多的外设,并讨论学习如何设计出自己的硬件系统。
本书可作为任何想学习C程序设计的入门学习用书,尤其适合希望学习嵌入式系统设计的工程师和爱好者使用。学习的过程必须配套相应的硬件器材方能达到最佳的学习效果。这些器材的清单在本书的附录里有详细的说明。
目 录
第一部分 基本技能学习和实践
第1讲 一种新的C语言学习方式 3
机器人与C语言学习平台 5
任务1 获得软件 6
任务2 安装软件 7
任务3 硬件连接 7
任务4 第一个程序 8
任务5 做完实验关断电源 16
工程素质和技能归纳 16
科学精神的培养 17
第2讲 最简单的C程序设计——机器人做算术 18
任务1 整型数据的运算和结果显示 18
任务2 浮点型数据的运算 22
任务3 字符型数据 24
工程素质和技能归纳 26
科学精神的培养 26
第3讲 循环程序设计——让机器人动起来 27
C51单片机的输入/输出接口 27
任务1 单灯闪烁控制 28
任务2 机器人伺服电动机控制信号 34
任务3 计数并控制循环次数 37
任务4 用计算机来控制机器人的运动 41
工程素质和技能归纳 44
科学精神的培养 44
第4讲 函数与机器人运动控制 45
任务1 基本巡航动作 45
任务2 匀加速/减速运动 50
任务3 用函数调用简化运动程序 53
任务4 用数组进一步简化函数调用 58
工程素质和技能归纳 60
科学精神的培养 60
第5讲 选择结构程序设计——机器人的触觉导航 61
任务1 安装并测试机器人胡须 62
任务2 通过胡须导航 67
任务3 机器人进入死区后的人工智能决策 72
任务4 机器人行进过程中的碰撞保护程序 77
工程素质和技能归纳 78
科学精神的培养 79
第6讲 选择结构程序设计——机器人红外导航 80
任务1 搭建并测试IR发射和探测器对 81
任务2 探测和避开障碍物 85
任务3 高性能的IR导航 90
任务4 俯视的探测器 93
工程素质和技能归纳 98
科学精神的培养 99
第7讲 多分支结构程序设计——机器人循线竞赛 100
任务1 QTI传感器及其通信接口 101
任务2 安装QTI传感器到机器人前端 102
任务3 编写QTI传感器的测试程序 103
任务4 设计算法实现机器人无接触传感器游中国 106
任务5 修改算法实现机器人游中国 112
任务6 用数组实现机器人游中国比赛 116
任务7 改进运动执行程序提升执行的可靠性 122
工程素质和技能归纳 128
科学精神的培养 129
第二部分 综合实践案例
第8讲 教育机器人智能搬运比赛 133
任务1 给机器人安装循线传感器和搬运手爪 134
任务2 根据比赛任务设计算法 136
任务3 定义运动数据结构体存储运动数据 137
任务4 将运动函数存成另外的文件包含进来 140
任务5 循线运动函数的设计与实现 145
任务6 根据算法完成搬运子函数和主程序的编写 150
工程素质和技能归纳 151
科学精神的培养 151
第9讲 机器人灭火比赛 153
任务1 确定完成比赛所需的传感器和灭火装置 155
任务2 确定超声波传感器连接端口,编写测距函数 157
任务3 安装火焰传感器和灭火风扇,编写寻找火源和灭火程序 159
任务4 根据超声波测距信息编写导航程序 160
任务5 完成灭火主程序的编写 170
工程素质和技能归纳 171
科学精神的培养 171
第10讲 擂台机器人程序设计 172
任务1 红外线擂台机器人的软件设计 174
任务2 优化红外线擂台机器人软件 179
任务3 超声波擂台机器人的软件设计 182
任务4 遥控擂台机器人的软件设计 183
工程素质和技能归纳 192
科学精神的培养 193
附录A C语言概要归纳 194
附录B C语言中的关键字索引 206
附录C 无焊锡面包板 207
附录D 中国教育机器人大赛简介 210
附录E 完成本书项目学习所需配件清单 212