新闻资讯
看你所看,想你所想

从问题到程式

从问题到程式

从问题到程式

《从问题到程式》是2005年9月1日机械工业出版社出版的图书,作者是裘宗燕。本书以程式设计为基本线索,同时深入介绍了C语言各方面的情况。书中强调的是如何认识程式、写程式和用C写出好的程式。并通过实例讨论了问题的分析和分解,找出主要步骤,确定函式抽象,找出循环,选择语言结构,最后写出程式的过程。

基本介绍

  • 书名:从问题到程式
  • 作者:裘宗燕
  • ISBN:9787111167563
  • 页数:415页
  • 出版社:机械工业出版社
  • 出版时间:2005年9月1日
  • 装帧:平装
  • 开本:16开

内容简介

书中不少实例给出了在不同考虑下可能形成的多种解法,以帮助读者理解程式设计的“真谛”。《从问题到程式》以C作为讨论程式设计的语言,讨论了基本程式设计的各方面问题。书中给出程式实例时没有採用常见的“提出问题,给出解答,再加些解释”的简单三步形式,而是增加了许多对问题的分析和讨论,以帮助读者认识程式设计过程的实质,理解从问题到程式的思考过程。书中还儘可能详尽地解释了许多与C语言和程式设计有关的问题。

作者简介

裘宗燕,1952年生,北京大学数学学院信息科学系教授。长期从事计算机软体和理论方面的研究和教学工作。专业兴趣领域包括:程式理论,软体形式化方法,複杂程式和系统的形式化模型,程式设计语言(语言特徵和语义),程式设计技术,符号计算和计算机科学教育等。近年主持或者参加了多项与本人研究兴趣相关的项目,包括国家自然科学基金项目和973项目。目前主要的研究工作集中在具有複杂状态的程式和系统的语义模型、面向对象系统的理论、Web语言和Web服务的形式化模型以及一般的软体形式化方法领域。
多年来一直从事计算机科学技术课程的教学工作,承担过多门本科生和研究生课程的教学工作,包括:算法与数据结构、程式设计语言原理、计算概论(C语言程式设计)、程式设计技术与方法、算法设计与分析、数理逻辑、理论计算机科学基础、人工智慧等。

目录

前言
本书作者简介
第1章 程式设计和C语言 1
1.1程式和程式语言 1
1.2 C语言简介 8
1.3一个简单的C程式 1O
1.4程式开发过程 13
1.5问题与程式设计 17
本章讨论的重要概念 18
练习 18
第2章 数据对象与计算 21
2.1基本字元、名字表示、标识符和关键字 21
2.2数据与类型 23
2.3基本类型与数据表示 23
2.3.1整数类型和整数的表示 23
2.3.2实数类型和实数的表示 25
2.3.3字元类型和字元的表示 26
2.3.4数据的外部表示、内部表示与转换 27
2.4运算符、表达式与计算 3O
2.4.1算术运算符 3O
2.4.2算术表达式 31
2.4.3表达式的求值 32
2.4.4计算和类型 34
2.5数学函式馆及其使用 37
2.5.1函式、函式调用 37
2.5.2数学函式及其使用 38
2.5.3函式调用中的类型转换 39
问题解释 40
几个常用程式模式 40
本章讨论的重要概念 41
练习 41
第3章 变数、函式和控制结构 43
3.1语句、複合结构 43
3.2变数——概念、定义和使用 44
3.2.1变数的定义 45
3.2.2变数的赋值与取值 46
3.2.3几个问题 48
3.3定义函式(初步) 50
3.3.1函式定义 52
3.3.2函式和程式 55
3.3.3函式与类型 56
3.3.4自定义输出函式 57
3.4关係表达式、逻辑表达式、条件表达式 58
3.4.1关係表达式和条件表达式 58
3.4.2逻辑表达式 60
3.5语句与控制结构 61
3.5.1条件语句(if语句) 62
3.5.2循环语句(1):while语句 65
3.5.3循环语句(2):for语句 68
3.6若干常用结构和问题 70
3.6.1增量和减量运算符(+;、~) 70
3.6.2逗号运算符 71
3.6.3实现二元运算符操作的赋值运算符 71
3.6.4空语句 72
3.6.5表达式和求值 73
问题解释 74
几个常用程式模式 74
本章讨论的重要概念 75
练习 75
第4章 基本程式设计技术 79
4.1循环程式设计 79
4.1.1基本循环方式 8O
4.1.2求一系列完全平方数 81
4.1.3判断素数(谓词函式) 82
4.1.4艰难的旅程(浮点误差) 83
4.1.5求立方根(叠代和逼进) 85
4.1.6求sin函式值(通项计算) 86
4.2循环程式的问题 87
4.2.1从循环中退出 87
4.2.2循环中的几种变数 89
4.3循环与递归 9O
4.3.1阶乘和乘幂(循环,递归) 9O
4.3.2 Fibonacci序列(计算与时间) 93
4.3.3为计算过程计时 94
4.3.4 Fibonacci序列的叠代计算(程式正确性与循环不变式) 95
4.3.5最大公约数 97
4.3.6河内塔(梵塔)问题 100
4.4基本输入输出 102
4.4.1格式输入函式scanf 102
4.4.2字元输入输出函式 109
4.4.3输入函式的返回值及其作用 112
4.5控制结构和控制语句 114
4.5.1 do-while循环结构 114
4.5.2流程控制语句 115
4.5.3开关语句 117
4.6程式设计实例 119
4.6.1一个简单计算器 119
4.6.2定义枚举常量 119
4.6.3单词计数问题 120
4.7程式测试和排错 123
4.7.1测试 123
4.7.2白箱测试 124
4.7.3黑箱测试 125
4.7.4排除程式里的错误 126
问题解释 127
几个常用程式模式 128
本章讨论的重要概念 128
练习 128
第5章 C程式结构 133
5.1数值类型 133
5.1.1实数类型和整数类型 133
5.1.2字元类型 133
5.1.3整数类型 134
5.1.4基本数据类型的选择 135
5.2函式和标準库函式 136
5.2.1C语言的库函式 137
5.2.2字元分类函式 137
5.2.3随机数生成函式 138
5.3函式定义和程式的函式分解 l39
5.3.1主函式 140
5.3.2程式的函式分解 141
5.3.3对函式的两种观点 142
5.3.4函式原型 146
5.4 C程式结构与变数 149
5.4.1外部定义的变数 150
5.4.2作用域与生存期 151
5.4.3外部变数和自动变数 151
5.4.4变数定义的嵌套 153
5.4.5静态局部变数 154
5.4.6变数的其他问题 155
5.4.7一个实例 l57
5.5预处理 159
5.5.1档案包含命令 159
5.5.2宏定义与宏替换 160
5.5.3条件编译命令 163
5.6定义常量 164
5.7字位运算符 165
5.8编程实例 168
5.8.1一个简单的猜数游戏 168
5.8.2加密与解密 170
本章讨论的重要概念 172
练习 l72
第6章 数组 175
6.1数组的概念、定义和使用 175
6.1.1定义数组变数 176
6.1.2数组的使用 177
6.1.3数组的初始化 179
6.1.4数组的存储实现 180
6.2数组程式实例 181
6.2.1从字元到下标 181
6.2.2筛法求素数 182
6.2.3成绩分类 183
6.2.4多项式求值 184
6.2.5定义数组的问题 185
6.3数组作为函式参数 186
6.3.1一个例子 186
6.3.2修改实参数组的元素 188
6.4字元数组与字元串 189
6.4.1字元数组 189
6.4.2字元串 189
6.4.3程式实例 191
6.4.4标準库字元串处理函式 193
6.4.5输出文本里的最长行 194
6.5两维和多维数组 198
6.5.1多维数组的初始化 198
6.5.2多维数组的表示和使用 199
6.5.3多维数组作为函式的参数 200
6.6编程实例 201
6.6.1成绩直方图 201
6.6.2一个通用带检查的整数输入函式 205
6.6.3 “计算”数组变数的大小 206
6.6.4统计c程式里的关键字 208
6.6.5数组的划分 211
6.6.6数组的排序 213
问题解释 2l5
几个常用程式模式 215
本章讨论的重要概念 215
练习 215
第7章 指针 217
7.1地址与指针 217
7.2指针变数的定义和使用 218
7.2.1指针操作 218
7.2.2指针作为函式的参数 219
7.2.3与指针有关的一些问题 222
7.3指针与数组 224
7.3.1指向数组元素的指针 224
7.3.2基于指针运算的数组程式设计 227
7.3.3数组参数与指针 228
7.3.4指针与数组操作的程式实例 229
7.3.5字元指针与字元数组 231
7.4指针数组 233
7.4.1指针数组与两维数组 234
7.4.2命令行参数及其处理 235
7.5多维数组作为参数的通用函式 238
7.6动态存储管理 240
7.6.1为什幺需要动态存储管理 24O
7.6.2 c语言的动态存储管理机制 241
7.6.3两个程式实例 244
7.6.4函式、指针和动态存储 247
7.7定义类型 250
7.7.1定义数组类型和指针类型 251
7.7.2複杂类型描述与解读 252
7.8指向函式的指针 254
7.8.1函式指针的定义和使用 254
7.8.2函式指针作为函式的参数 255
7.8.3数值积分函式 257
7.8.4若干以函式指针为参数的数组操作实用函式 259
几个常用程式模式 260
本章讨论的重要概念 260
练习 261
第8章 档案和输入输出 263
8.1档案的概念 263
8.1.1流和档案指针 263
8.1.2缓冲式输入输出 264
8.2档案的使用 265
8.2.1档案的打开和关闭 265
8.2.2输入输出函式 267
8.2.3程式实例 268
8.2.4直接输入输出函式 270
8.3标準流输入输出与格式控制 271
8.3.1行式输入和输出 271
8.3.2输入格式控制 272
8.3.3输出格式控制 276
8.3.4以字元串作为格式化输入输出对象 278
8.3.5标準错误流 278
8.4程式实例 279
8.4.1求档案数据的平均值 279
8.4.2一个背单词程式 281
8.4.3资金账目系统 285
练习 288
第9章 结构和其他数据机制 291
9.1结构(struct) 291
9.1.1结构声明与变数定义 291
9.1.2结构变数的初始化和使用 296
9.1.3结构、数组与指针 297
9.2结构与函式 299
9.2.1处理结构的函式 299
9.2.2程式实例 302
9.3联合(union) 306
9.4枚举(enum) 308
9.5编程实例 310
9.5.1数据组的排序 310
9.5.2複数的表示和处理 312
9.6连结结构(自引用结构) 315
9.6.1连结结构 315
9.6.2自引用结构的定义 317
9.6.3程式实现 318
9.6.4数据与查找 321
9.7栏位 322
问题解释 323
本章讨论的重要概念 323
练习 323
第10章 程式开发技术 327
10.1分别编译和C程式的分块开发 327
10.1.1分块开发的问题和方法 327
10.1.2程式实例:学生成绩处理 328
10.1.3分块重整 333
10.1.4其他安排和考虑 336
10.1.5模组化思想和技术 338
10.1.6单一头档案结构和多个头档案结构 342
10.2功能模组和程式库 345
10.2.1複数模组 345
10.2.2目标档案和库 348
10.2.3防止重複包含 349
10.3错误报告和处理 349
10.3.1建立统一的错误报告机制 349
10.3.2定义变参数的错误报告函式 350
10.3.3运行中错误的检查和处理 352
10.4程式的配置 358
10.4.1程式的行为参数和启动时的配置 358
10.4.2互动式配置 360
10.4.3通过命令行参数 361
10.4.4採用配置档案 362
10.5程式开发过程 362
10.5.1自上而下的开发 363
10.5.2自下而上的开发 365
10.5.3实际开发过程 365
练习 367
第11章 标準库 371
11.1标準库结构 371
11.1.1标準定义() 372
11.1.2错误信息() 372
11.2几个已经介绍过的头档案 373
11.2.1数学函式() 373
11.2.2字元处理函式() 374
11.3字元串函式(string.h>) 375
11.3.1一些字元串函式 375
11.3.2存储区操作 378
11.4功能函式() 379
11.4.1几个整数函式 380
11.4.2数值转换 380
11.4.3执行控制 381
11.4.4与执行环境互动 381
11.4.5常用函式bsearch和qsort 382
11.5日期和时间() 383
11.6实现特徵(和) 385
11.6.1整数类型特徵 385
11.6.2浮点数类型特徵 386
11.7其他与输入输出有关的函式() 386
11.7.1符号常量和类型 386
11.7.2档案操作函式 387
11.7.3流缓冲区操作函式 388
11.7.4档案定位及定位函式 389
11.7.5其他有关函式 390
11.7.6採用va—list参数的输出函式 391
11.8定义变长度参数表(<stdarg.h) 392
11.9非局部控制转移() 395
11.10调试断言和信号处理(和) 397
11.11标準库的其他功能 398
11.11.1本地化 398
11.11.2多位元组字元 400
本章讨论的重要概念 400
练习 400
附录A C语言运算符表 401
附录B C语言速查 403
附录C C99简介 409
进一步学习的建议 413
参考文献 416

媒体评论

书评
本书以程式设计为基本线索,同时深入介绍了C语言各方面的情况。书中强调的是如何认识程式、写程式和用C写出好的程式。并通过实例讨论了问题的分析和分解,找出主要步骤,确定函式抽象,找出循环,选择语言结构,最后写出程式的过程。书中不少实例给出了在不同考虑下可能形成的多种解法,以帮助读者理解程式设计的“真谛”。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com