新書推薦:
《
超加工人群:为什么有些食物让人一吃就停不下来
》
售價:HK$
99.7
《
历史的教训(浓缩《文明的故事》精华,总结历史教训的独特见解)
》
售價:HK$
62.7
《
不在场证明谜案(超绝CP陷入冤案!日本文坛超新星推理作家——辻堂梦代表作首次引进!)
》
售價:HK$
58.2
《
明式家具三十年经眼录
》
售價:HK$
524.2
《
敦煌写本文献学(增订本)
》
售價:HK$
221.8
《
耕读史
》
售價:HK$
109.8
《
地理计算与R语言 [英] 罗宾·洛夫莱斯 [德]雅纳·蒙乔 [波兰] 雅库布·诺沃萨德
》
售價:HK$
121.0
《
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
》
售價:HK$
87.4
|
編輯推薦: |
(1)强化数学基础,夯实计算思维,重点讲解计算方法等内容。本书涉及的数学知识主要来源于初等数学内容,并针对我国中学生计算思维薄弱的特点讲解了计算方法的内容,充分利用我国学生数学基础好的优势,降低学习的门槛。
(2)构化程序设计思想和面向对象程序设计思想有机融合,旨在节约学生的学习的时间。按照先有数再有运算的数学思维,以计算和数据并重的观点组织内容,将结构化程序设计思想和面向对象程序设计思想融合,在程序设计方法上形成一个整体。
(3)图文并茂,通俗易懂。通过使用大量的计算顺序图、运算序列图、内存图和流程图等图形语言,全面讲解程序的计算和数据等内容,以便加强对读者软件设计能力的培养。
(4)紧跟国际工程教育思路,注重实践。将计算机语言、计算机系统、开发环境等回归到工具,强调运用这些工具解决实际问题。
|
內容簡介: |
本书以基础理论和编程实践相结合的方式,图文并茂地介绍设计程序所需的数学知识、计算机基础知识和计算机语言基本知识,从计算和数据角度系统地介绍了设计程序的基本原理、基本方法和典型编程模式,并使用C/C 语言实现设计的程序。全书分为两部分,共10章。部分为基础篇,包括概述、表达式和数据类型、构造分支、构造循环、函数等知识;第二部分为应用篇,包括程序组织、数组、指针和引用、结构、底层编程等知识。书中的每个知识点都从数学引入,有相应的数学推导、编程步骤、实现代码和编程要点。 本书适合作为全国高等院校计算机及相关专业的程序设计课程的教材,也可供从事软件开发的专业人员自学使用。
|
關於作者: |
张力生,男,教授,重庆邮电大学软件工程学院副院长。1985年7月毕业于西南师范学院计算数学专业,后取得计算机教育硕士,先后工作于解放军通信学院、第三军医大学、重庆渝开发集团公司和重庆邮电大学,具有20余年高校教学经历和10余年企业工作和软件开发经历,主要从事数据挖掘、软件模型及形式化方法等方面的教学与科研工作。
主讲《计算机程序设计》、《计算机网络》、《数据库原理与设计》等本科生课程,《软件建模》研究生课程。
|
目錄:
|
部分 基 础 篇
第1章 概述 3
1.1 计算机 3
1.2 计算机语言 4
1.3 为什么选择C/C 语言 5
1.4 简单程序 6
1.5 编译和连接 6
1.6 调试程序 7
1.7 本章小结 9
1.8 习题 9
第2章 表达式和数据类型 10
2.1 表达式 10
2.1.1 四则运算中的计算 10
2.1.2 在计算机中的计算顺序 11
2.1.3 表达式的运算序列 12
2.1.4 计算表达式的基本方法 14
2.2 算术运算 18
2.2.1 算术运算的语法和语义 18
2.2.2 编写表达式 20
2.2.3 表达式语句 21
2.3 变量及其运算 21
2.3.1 计算机中的变量 22
2.3.2 赋值运算 26
2.4 整型 30
2.4.1 理解整数与进制 30
2.4.2 整数的数据类型 33
2.4.3 自增和自减运算 37
2.5 字符型 40
2.5.1 字符集 40
2.5.2 使用字符型 41
2.6 实数型 43
2.6.1 浮点数记数法 43
2.6.2 实数型分类 45
2.6.3 实数的字面表示 45
2.6.4 实数型的精度和范围 45
2.7 算术类型转换 46
2.7.1 整数的数据类型转换 46
2.7.2 算术运算的自动类型规则 48
2.7.3 强制数据类型转换 49
2.8 计算表达式的方法 50
2.8.1 确定表达式的运算顺序 51
2.8.2 标注数据类型 51
2.8.3 计算表达式的值 52
2.9 字符流和输出格式 53
2.9.1 字符流的工作原理 53
2.9.2 控制输出单元的格式 54
2.10 表达式的调试与维护 55
2.10.1 调试编译错误 56
2.10.2 整型的溢出 57
2.10.3 整数的重要性 58
2.11 本章小结 58
2.12 习题 59
第3章 构造分支 61
3.1 结构化程序设计 61
3.1.1 3种基本结构 61
3.1.2 流程图 62
3.2 分支结构及条件 62
3.2.1 if语句 64
3.2.2 关系运算 65
3.2.3 逻辑运算 68
3.3 构造分支的典型模式 73
3.3.1 单分支(if…) 73
3.3.2 复合语句和空语句 74
3.3.3 双分支(if…else…) 77
3.3.4 if语句嵌套 78
3.3.5 多分支(if…else if…else) 81
3.4 使用switch语句 82
3.5 条件运算 86
3.5.1 条件运算的语法语义 86
3.5.2 条件运算表达式举例 86
3.6 I/O流及其运算 89
3.6.1 输出数据 90
3.6.2 输入数据 92
3.7 分支的调试与维护 96
3.7.1 代码格式的重要性 96
3.7.2 调试分支的逻辑错误 97
3.8 本章小结 98
3.9 习题 99
第4章 构造循环 101
4.1 从顺序到循环 101
4.1.1 数列求和问题 102
4.1.2 数学归纳法中的递推 103
4.2 使用递推构造循环 105
4.2.1 累加和 105
4.2.2 调和级数 107
4.2.3 while语句 108
4.2.4 逗号运算 109
4.3 循环变量模式 110
4.3.1 循环变量模式的流程框架 110
4.3.2 循环变量模式的代码框架 111
4.3.3 数列求积问题 112
4.4 嵌套循环编程模式 113
4.5 循环语句 116
4.5.1 do…while语句 116
4.5.2 for语句 118
4.5.3 转向语句 120
4.6 应用举例 122
4.6.1 计算阶乘的累加和 122
4.6.2 程序的运行效率 125
4.6.3 计算ln2 125
4.6.4 判断素数 129
4.6.5 输出图形 133
4.7 循环的调试与维护 136
4.7.1 调试循环的基本方法 136
4.7.2 维护循环代码 138
4.8 本章小结 138
4.9 习题 139
第5章 函数 141
5.1 数学函数与黑盒思维 141
5.2 计算机函数 144
5.2.1 定义函数 145
5.2.2 函数的调用 146
5.2.3 函数调用的内部机制 148
5.2.4 函数的原型 151
5.3 变量管理 153
5.3.1 局部变量、全局变量 154
5.3.2 复合语句的语义 157
5.3.3 访问变量的规则 158
5.4 复合函数与分层的思想 159
5.4.1 复合函数 160
5.4.2 数学公式中的复合函数 161
5.4.3 分层思想 162
5.5 函数的嵌套调用 164
5.6 递归函数 165
5.6.1 数学归纳法中的递归 166
5.6.2 递归函数举例 166
5.6.3 递归调用过程的内部实现 167
5.6.4 编写递归函数的方法 168
5.7 重载函数与默认参数值 171
5.7.1 重载函数 171
5.7.2 匹配重载函数的步骤 172
5.7.3 默认参数值 174
5.8 函数模板 175
5.9 应用举例 177
5.9.1 求公约数 178
5.9.2 汉诺塔问题 179
5.10 函数的调试与维护 180
5.10.1 白盒测试和黑盒测试 181
5.10.2 测试用例和白盒测试技术 181
5.11 本章小结 183
5.12 习题 183
第二部分 应 用 篇
第6章 组织程序 187
6.1 目前所处的学习阶段 187
6.2 模块化程序设计思想 189
6.3 模块与多文件结构 190
6.3.1 划分模块的原则 191
6.3.2 源文件与头文件 192
6.4 使用多文件结构 193
6.4.1 IDE功能介绍 193
6.4.2 使用多文件结构步骤 193
6.5 预编译与模块接口 195
6.5.1 预编译 195
6.5.2 模块接口 197
6.6 调试与维护 200
6.6.1 测试驱动开发 201
6.6.2 调试函数与黑盒测试 201
6.7 本章小结 201
6.8 习题 202
第7章 数组 203
7.1 数据的重要性 203
7.2 一维数组 203
7.2.1 数组定义 204
7.2.2 数组初始化 206
7.2.3 访问数组元素 208
7.3 二维数组 211
7.4 二维数组初始化 215
7.5 数组应用 217
7.5.1 矩阵乘法 217
7.5.2 冒泡排序法 220
7.5.3 Josephus问题 223
7.6 本章小结 229
7.7 习题 230
第8章 指针和引用 231
8.1 指针及运算 231
8.1.1 指针的概念 231
8.1.2 定义指针变量 232
8.1.3 指针的基本运算 233
8.1.4 指针的加减运算 236
8.2 动态管理堆内存 238
8.2.1 malloc( )和free( ) 238
8.2.2 new与delete 240
8.3 函数调用中传递数组 241
8.3.1 传递一维数组 241
8.3.2 传递二维数组 243
8.3.3 返回指针 244
8.4 字符数组 246
8.4.1 定义字符数组 246
8.4.2 字符串常量 248
8.4.3 字符串的基本运算 249
8.4.4 使用字符串运算 252
8.4.5 使用字符数组的安全性 254
8.4.6 字符串数组 256
8.5 函数指针与数据排序 257
8.6 引用 260
8.6.1 传值调用的局限 260
8.6.2 传地址调用 261
8.6.3 引用的概念 262
8.6.4 传引用调用 263
8.7 应用举例 264
8.7.1 消除指针提高安全性 264
8.7.2 使用函数模板重用代码 266
8.7.3 字符串排序 270
8.8 程序安全性问题 272
8.8.1 限制变量访问 272
8.8.2 提高函数调用的安全性 273
8.9 本章小结 274
8.10 习题 274
第9章 结构 277
9.1 声明结构 277
9.2 定义和访问结构变量 279
9.3 使用结构 281
9.3.1 使用点运算访问成员变量 281
9.3.2 使用指针访问变量 283
9.4 应用举例 284
9.4.1 使用动态数组管理员工信息 284
9.4.2 使用指针数组管理员工信息 286
9.4.3 多维表 288
9.4.4 Josephus问题 290
9.5 本章小结 297
9.6 习题 298
第10章 底层编程 299
10.1 进制和计算方法 299
10.1.1 十进制及计算方法 299
10.1.2 自然数的二进制及计算方法 303
10.1.3 整数的补码 304
10.1.4 十六进制 306
10.2 位运算 307
10.2.1 移位运算 307
10.2.2 按位逻辑运算 309
10.2.3 编程实现加减法运算 310
10.2.4 编程实现整数乘法 312
10.2.5 R进制计算机 315
10.2.6 IP地址 320
10.3 联合 323
10.3.1 声明联合和定义变量 323
10.3.2 字节的顺序 324
10.3.3 图像的像素点 326
10.3.4 IP地址 327
10.4 本章小结 329
10.5 习题 329
附录A ASCII表 331
附录B 运算表 332
参考文献 336
|
內容試閱:
|
在软件无处不在的时代,程序设计课程的重要性毋庸置疑。本书先通过数学带领读者学习计算和描述计算的表达方式,然后讲解如何使用计算机语言编程。
编程具有较强的科学性和系统性,本书强调使用数学模型解决问题,针对我国学生数学基础好但计算思维薄弱的特点,从四则运算、函数和数学归纳法等初等数学内容入手学习计算方法和表达方式,并融入计算理论、程序理论和计算机系统等基本原理,从计算和数据两条主线,由浅入深地讨论编程的基本知识、基本原理和基本方法,旨在培养能够运用数学知识编程的优秀人才。本书的主要范围如图0.1所示。
图0.1 本书的主要范围
编程也是工程性工作,主要涉及详细设计、编码实现两个阶段的工作。详细设计阶段的主要工作是抽象数据和设计计算流程。本书使用流程图、计算顺序图、运算序列图以及内存图等图形语言作为描述数据和计算流程的工具,介绍数学模型中数的表示方法和计算流程,在冯?诺依曼机上详细讨论数据存储方式和运算的实现原理,着重介绍运用数及运算、数学公式(函数)等数学知识设计程序流程、定义数据的方法。
编码实现阶段的主要工作是使用计算机语言描述设计的数据和计算流程,并调试通过。计算机语言的表达方法主要来源于数学和自然语言,本书选用C/C 语言作为编程语言工具,介绍计算机语言的知识,分层次详细介绍编写代码的步骤和方法,着重介绍怎样运用数学和自然语言的知识描述程序的数据和计算流程。
调试程序是编码实现阶段的重要工作,其工作量在编程中的占比非常高。本书选用Visual Studio作为集成开发平台,针对表达式、分支、循环、函数和程序模块详细介绍调试程序的步骤和方法。
本书主要内容
全书分为基础篇和应用篇两部分,共10章。
部分为基础篇,包括第1~5章,按照计算机语言的层次关系采用自底向上的方式组织内容,主要从计算角度介绍编程的基本知识和基本方法。
第1章为概述。介绍了计算机、计算机语言和程序等基本概念,举例说明了编译和连接的功能和作用,以及调试程序的一般步骤,让读者对编程有一个基本的了解。
第2章为表达式和数据类型。从数和四则运算引入表达式和数据类型的概念,主要讨论了基本运算在冯?诺依曼机上的语义和表达式的运算序列,举例说明了计算表达式的步骤和方法,讨论了整型、字符型和实数型等基本数据类型的表示原理和存储格式,介绍了字符流和控制输出格式的方法,并介绍了编写、调试和维护表达式的步骤和方法。
第3章为构造分支。从分段函数引入分支的概念,主要介绍使用流程图描述程序流程的方法,深入讨论了通过分段函数构造分支的方法,讨论了关系表达式、逻辑表达式和条件表达式,举例说明了编写分支程序的4种典型模式,深入讨论了I/O流及其运算,后介绍了编写、调试和维护分支程序的步骤和方法。
第4章为构造循环。从数学归纳法引入了循环的概念,主要介绍了构造循环的基本知识和基本原理,讨论了在数列上采用递推方式构造循环的一般步骤和基本方法,举例说明了递推公式的推导思路,介绍了while语句、for语句和do…while语句等循环语句及循环的通用流程框架,讨论了使用循环变量模式和嵌套模式编写程序的方法,后介绍了调试和维护循环程序的步骤和方法。
第5章为函数。从数学函数引入计算机函数的概念,主要介绍了变量和函数的基本知识,介绍了使用“栈”机制管理变量和实现函数调用的原理,讨论了使用“栈”机制分析函数内部执行过程的方法,介绍了定义和调用函数的方法,讨论了描述函数调用关系的方法,举例说明了使用数学递归函数编写计算机递归函数和构造循环的方法,介绍了函数模板以及重载函数技术,后介绍了调试和维护函数的步骤和基本方法。
第二部分为应用篇,包括第6~10章,按照数据类型或应用场景组织内容,主要从数据角度介绍编程的基本知识和基本方法。
第6章为程序组织。在总结前面内容的基础上,主要介绍了模块化程序设计思想以及相关的基本知识,着重介绍了多文件结构以及使用方法,介绍了预编译技术以及支持多文件结构程序的基本原理和方法,并介绍了在模块层次上调试程序的基本知识。
第7章为数组。介绍了“程序=数据结构 算法”的观点,开始从数据角度介绍编程技术。从数列和矩阵引入数组的概念,介绍了一维数组和二维数组,讨论了其存储结构,举例说明了使用数组管理数据和描述问题的步骤和基本方法。
第8章为指针和引用。从内存的逻辑地址引入指针的概念,主要介绍了指针及其运算,讨论了使用指针访问变量或数组元素的方法,介绍了动态管理堆内存技术,讨论了参数传递的原理,举例说明了各类参数传递的应用场景和编程方法,介绍了字符数组,举例说明了使用字符数组处理字符串的基本方法。介绍了引用及其使用方法,后讨论了程序安全性。
第9章为结构。从向量引入结构的概念,主要介绍了声明结构、定义结构变量以及相关运算等知识,讨论了结构的存储结构和访问结构成员的方法,介绍了使用结构描述二维表并管理其数据的方法,以及使用结构实现链表的基本方法。
第10章为底层编程。从整数的记数法引入“按位”计算,介绍十进制、二进制。举例说明了自然数和整数的数值计算方法,讨论了使用补码表示整数的原理,介绍了位运算、联合等底层编程知识和技术。举例说明了基本运算的内部实现原理和方法,详细讲解了在实际应用中抽象、定义底层数据及运算的基本原理和编程方法,介绍了一个简单的R进制计算机,讨论了对其扩展的路径和方法,可作为进一步学习、训练的示例。
后,提供了ASCII表和运算表两个附录,以方便读者查阅。其中,运算表详细描述了常用运算的语法和语义,以及优先级和结合性,是编程的基础资料。
本书特色
(1)强化数学基础,夯实计算思维,重点讲解计算方法等内容。本书涉及的数学知识主要来源于初等数学内容,并针对我国中学生计算思维薄弱的特点讲解了计算方法的内容,充分利用我国学生数学基础好的优势,降低学习的门槛。
(2)结构化程序设计思想和面向对象程序设计思想有机融合,旨在节约学生的学习时间。按照先有数再有运算的数学思维,以计算和数据并重的观点组织内容,将结构化程序设计思想和面向对象程序设计思想融合,在程序设计方法上形成一个整体。
(3)图文并茂,通俗易懂。通过使用大量的流程图、计算顺序图、运算序列图和内存图等图形语言,全面讲解程序的计算和数据等内容,以便加强对读者软件设计能力的培养。
(4)紧跟国际工程教育思路,注重实践。将计算机语言、计算机系统、开发环境等回归到工具,强调运用这些工具解决实际问题。
配套资源
为便于教与学,本书配有530分钟微课视频、源代码、教学课件、教学大纲、授课计划、习题答案、考试试卷及答案。
(1)获取微课视频方式:读者可以先扫描本书封底的文泉云盘防盗码,再扫描书中相应的视频二维码,观看教学视频。
(2)获取源代码方式:先扫描本书封底的文泉云盘防盗码,再扫描下方二维码,即可获取。
(3)其他配套资源可以扫描本书封底的课件二维码下载。
进一步学习的内容
当读者完成本书的学习时,是否能成为一名编程的专家呢?答案当然是否定的。但在程序设计领域已经有了一个良好的开始,比较好地掌握了编程所需的基本知识和基本原理,并得到了较好的编程训练。能够编写比较简单的程序,能够从计算角度理解复杂的程序,为进一步的学习打下了良好的理论和实践基础。
当读者完成本书的学习后,进一步学习的好方法是大量阅读程序并开发一个真正能被别人使用的程序。编程开源区、开发环境中都有很多经典的代码,可供读者选择,但在阅读程序时,需要从数据和计算流程两个方面理解。
还可以进一步从更高层次学习抽象数据和计算的方法,学习面向对象的编程知识和技术。面向对象编程的教材很多,好选择整合了面向对象设计和编程实现内容的教材,面向对象设计的成果一般会使用UML描述,在选择教材时,可通过是否使用了UML简单判断是否包含了面向对象设计内容。
读者对象
本书适合作为全国高等院校计算机及相关专业的程序设计课程的教材,也可供从事软件开发的专业人员自学使用。
本书的编写参考了诸多相关资料,在此表示衷心的感谢。限于个人水平和时间仓促,书中难免存在疏漏之处,欢迎读者批评指正。
作 者
2022年1月
|
|