新書推薦:
《
盗墓笔记之秦岭神树4
》
售價:HK$
57.3
《
战胜人格障碍
》
售價:HK$
66.7
《
逃不开的科技创新战争
》
售價:HK$
103.3
《
漫画三国一百年
》
售價:HK$
55.2
《
希腊文明3000年(古希腊的科学精神,成就了现代科学之源)
》
售價:HK$
82.8
《
粤行丛录(岭南史料笔记丛刊)
》
售價:HK$
80.2
《
岁月待人归:徐悲鸿自述人生艺术
》
售價:HK$
61.4
《
女人的中国医疗史:汉唐之间的健康照顾与性别
》
售價:HK$
103.8
|
編輯推薦: |
1.本书系统介绍了面向过程的程序设计,并结合现代编程思想,将C语言程序设计与面向对象编程(C#)有机结合起来。
2.全书围绕人工智能(机器博弈)热点展开,并与大学生科技竞赛相结合,通过拓展阅读扩宽人工智能(机器博弈)的专业知识。
3.全书采用贯穿式案例设计,采用大量实例由浅入深地展开教学。配套教学课件、微课视频、程序源码、课后习题及答案等丰富的学习资源,读者可从清华大学出版社网站下载。
4.本书可作为高等院校程序设计类课程的教材或教辅资料,也可作为大学生机器博弈类科技竞赛的入门教材,还可作为机器博弈爱好者的参考书。
|
內容簡介: |
本书以机器博弈为例,系统地介绍了C语言程序设计。本书共13章,主要包括C语言概述、算法基础、数据类型与表达式,选择结构、循环结构、数组、函数、预处理与位运算、指针、结构体和链表、文件、面向对象编程基础等内容,并在每章后附加人工智能(机器博弈)相关知识的扩展阅读。 本书可作为高等院校程序设计课程的教材或教辅资料,也可作为机器博弈竞赛的入门教材及机器博弈爱好者的参考书。
|
目錄:
|
第1章C语言概述/1
1.1计算机语言/1
1.1.1低级语言和高级语言/1
1.1.2面向过程和面向对象/2
1.2C语言概述/3
1.2.1C语言的发展/3
1.2.2C语言的特点/3
1.3C语言程序示例/4
1.4C语言程序的开发过程/8
1.5小结/13
1.6习题/13
1.7扩展阅读——初识人工智能/14
第2章算法基础/16
2.1算法的概念/16
2.2算法的描述方法/17
2.3机器博弈的概念/19
2.4博弈算法/21
2.4.1搜索算法的分类与特点/21
2.4.2典型博弈算法介绍/21
2.5机器博弈项目规则/23
2.5.1井字棋规则/23
2.5.2亚马逊棋规则/23
2.5.3五子棋规则/24
2.5.4爱恩斯坦棋规则/24
2.6小结/252.7习题/25
2.8扩展阅读——机器博弈的发展历程/25
第3章数据类型与表达式/28
3.1棋局要素/29
3.2常量与变量/30
3.2.1常量/30
3.2.2变量/33
3.2.3变量的定义与声明/34
3.2.4变量初始化/35
3.3数据类型转换/36
3.3.1隐式类型转换/36
3.3.2显式类型转换/37
3.4运算符和表达式/38
3.4.1算术运算符及其表达式/38
3.4.2赋值运算符及其表达式/39
3.4.3机器博弈中的局面评估函数/40
3.5输入与输出/40
3.5.1字符输入/输出函数/40
3.5.2棋局信息输出/41
3.5.3棋局信息输入/43
3.6小结/45
3.7习题/45
3.8扩展阅读——机器博弈竞赛/46
第4章选择结构/48
4.1引例/48
4.2关系运算与逻辑运算/49
4.2.1关系运算符及其表达式/49
4.2.2逻辑运算符及其表达式/50
4.2.3井字棋落子坐标合法性判断/51
4.3if语句/52
4.3.1简单逻辑判断/52
4.3.2复杂逻辑判断/56
4.3.3井字棋步数和落子颜色判断/57
4.4switch语句/58
4.4.1switch语句的基本应用/59
4.4.2爱恩斯坦棋着法选择/60
4.5小结/60
4.6习题/60
4.7扩展阅读——机器博弈系统组成/61
第5章循环结构/63
5.1引例/63
5.23种循环语句/64
5.2.1while语句/64
5.2.2do…while语句/64
5.2.3for语句/66
5.3计数循环/67
5.3.1计数循环的基本应用/67
5.3.2蒙特卡洛方法求π的近似值/69
5.3.3井字棋随机落子/70
5.4条件循环/71
5.4.1条件循环的基本应用/71
5.4.2井字棋落子坐标控制/73
5.5循环嵌套/73
5.5.1循环嵌套的基本应用/73
5.5.2绘制五子棋棋盘/75
5.6控制转移语句/75
5.7综合程序举例——五子棋棋盘坐标及落子/77
5.8小结/80
5.9习题/80
5.10扩展阅读——博弈树/82
第6章数组/84
6.1一维数组/84
6.1.1引例/84
6.1.2一维数组的基本操作/85
6.1.3一维数组实现井字棋棋盘数字化/93
6.2二维数组/94
6.2.1二维数组的基本操作/94
6.2.2二维数组实现井字棋人人对弈/98
6.3字符数组/101
6.3.1字符数组的定义和引用/1016.3.2字符数组的输入/输出/103
6.3.3常用字符串处理函数/105
6.4综合程序举例——五子棋人人对弈程序/110
6.5小结/116
6.6习题/116
6.7扩展阅读——机器博弈中的蒙特卡洛方法/117
第7章函数/119
7.1概述/119
7.1.1基本概念与引例/119
7.1.2井字棋博弈程序的函数/122
7.2函数的定义/123
7.2.1函数定义的基本格式/124
7.2.2函数的参数/124
7.2.3return语句/128
7.2.4函数原型的声明/129
7.2.5实现博弈程序的一般过程和方法/130
7.3函数的调用/132
7.3.1函数调用的形式/132
7.3.2函数调用的过程/133
7.4递归函数的设计与调用/134
7.4.1简单递归函数的设计与调用/134
7.4.2井字棋博弈程序中的递归函数/136
7.5变量的作用域和生存期/137
7.5.1变量的作用域/138
7.5.2变量的生存期/139
7.5.3井字棋博弈程序中的全局变量/140
7.6综合程序举例/142
7.7小结/149
7.8习题/149
7.9扩展阅读——Minimax算法原理及其实现/150
第8章预处理与位运算/152
8.1预处理命令/152
8.1.1机器博弈中常量值的处理/152
8.1.2文件包含——机器博弈中多文件操作/156
8.1.3条件编译——防止机器博弈中重复包含/159
8.2位运算/161
8.3机器博弈中的Zobrist哈希技术/166
8.4小结/168
8.5习题/168
8.6扩展阅读——AlphaBeta剪枝/169
第9章指针/171
9.1指针的基本概念/171
9.1.1指针在博弈程序中的作用/171
9.1.2变量的地址/172
9.1.3指针变量的概念/174
9.2指针变量的定义与引用/174
9.2.1指针变量的定义与赋值/174
9.2.2指针变量的引用/176
9.2.3指针变量作为函数参数/177
9.3指针与数组/178
9.3.1通过指针访问数组元素/178
9.3.2指针变量所支持的运算/179
9.3.3数组名作函数参数/180
9.3.4指向数组的指针/182
9.4指针与字符串/184
9.5指向函数的指针/186
9.6指针型函数/187
9.7指针数组和多级指针/188
9.7.1指针数组的概念/188
9.7.2多级指针/190
9.7.3main函数的参数/190
9.8指针在博弈程序中的应用/191
9.8.1用命令行参数设置博弈程序的先后手/192
9.8.2构建大小可变的棋盘/193
9.9综合程序举例/194
9.10小结/198
9.11习题/199
9.12扩展阅读——遗传算法/201
第10章结构体和链表/203
10.1结构体的基本操作——记录竞赛相关信息/203
10.1.1记录五子棋棋谱数据/203
10.1.2结构体的声明和定义/204
10.1.3结构体的初始化和引用/207
10.1.4类型定义符typedef/211
10.2结构体指针——记录竞赛得分信息/211
10.2.1指向结构体变量的指针/211
10.2.2指向结构体数组的指针/213
10.3单向链表——记录赛队成绩/213
10.3.1概念/214
10.3.2动态存储分配/216
10.3.3链表的基本操作/218
10.4综合程序举例——比赛积分数据维护/225
10.5小结/227
10.6习题/227
10.7扩展阅读——人工神经网络/228
第11章文件/230
11.1文件的概述/230
11.2文件的打开和关闭/232
11.2.1文件指针/232
11.2.2打开或关闭文件——棋谱文件的打开或关闭/233
11.3文件的读写函数/236
11.3.1字符读写函数——存取五子棋棋盘/236
11.3.2字符串读写函数——读取名言警句/240
11.3.3格式化读写函数——保存落子信息/241
11.3.4块读写函数——保存赛队信息/244
11.4文件的定位函数/245
11.5综合程序举例——五子棋棋谱的读写/246
11.6小结/250
11.7习题/250
11.8扩展阅读——机器学习/251
第12章浅谈面向对象/253
12.1面向对象概念/253
12.2面向对象设计/254
12.2.1类的基本概念/254
12.2.2类的实例化/256
12.3Windows窗体设计/258
12.4综合程序举例/265
12.5小结/268
12.6习题/269
12.7扩展阅读——深度学习/269
第13章项目实战/271
13.1猜数游戏挑战赛/271
13.1.1功能与要求/271
13.1.2程序的构成/271
13.1.3程序运行截图/272
13.2简易五子棋/273
13.2.1关键数据结构设计/273
13.2.2系统设计/274
13.2.3函数功能及说明/280
13.2.4数据结构和搜索算法的优化/281
13.3综合程序举例——五子棋的棋盘设计(C#)/283
13.4小结/291
13.5扩展阅读——AlphaGo/292
附录AC语言运算符优先级和结合性表/295
参考文献/297
|
內容試閱:
|
信息技术的发展日新月异,神经网络、机器学习、大数据、元宇宙等人工智能技术迅猛发展,深深地影响着人们的学习、生活和工作方式。培养学生的计算思维能力与人工智能素养已成为大学计算机教育的基本任务之一,而计算机程序设计是培养和训练在校大学生计算思维能力和人工智能素养的重要基础课程。
举世瞩目的围棋AI程序AlphaGo与人类顶级棋手之间的人机博弈,引发了全球人工智能的热潮。作为人工智能领域最重要的研究方向之一,机器博弈引起越来越多专家、学者及在校大学生的关注。本书结合当今人工智能技术热点,以机器博弈竞赛项目为例,将重要的知识点与典型的案例相结合,采用项目驱动式程序设计案例教学。本书具有以下特点:
(1) 将程序设计与人工智能热点——机器博弈技术相结合。本书的扩展阅读增加了机器博弈的相关知识,拓展了知识面,培养了人工智能素养,为学生后续在相关领域进一步学习与研究奠定了基础。
(2) 将程序设计与学生兴趣(棋类小游戏)相结合。为了增加趣味性,本书以机器博弈部分棋类项目(如井字棋、五子棋、亚马逊棋)为案例,鼓励学生由单纯地玩游戏到利用所学程序设计知识开发小游戏,使其获得一种成就感,进而产生继续学习的积极性,达到寓教于乐的教学效果。
(3) 将程序设计与实践应用开发相结合。本书以实际应用为背景,引导学生后续参加相关科技竞赛及大学生创新创业项目,将程序设计与开发实践有机地融合在一起,通过介绍机器博弈的相关知识,引发学生对人工智能相关技术深入研究的积极性。通过编程解决机器博弈项目中的实际问题,使学生进一步体会程序设计的实用性。
(4) 将面向过程与面向对象的程序设计思想相结合。本书主要采用C语言讲解面向过程的程序设计,但为了更好地体现现代软件设计与开发的思想,还特别在相关章节引入了C#语言,介绍面向对象的程序设计思想。
本书既可作为高等院校大学生及机器博弈爱好者的程序设计教材,也可作为中国计算机博弈大赛和其他机器博弈竞赛参赛者的入门参考书。全书共13章,其中第1、12章由郭建新编写;第2、3章由邱虹坤编写;第4、5章由王晓岩编写;第6、8章由孙玉霞编写;第7、9章由刘成编写;第10、11章由杨煦编写;第13章由王亚杰编写。全书案例由王亚杰设计,扩展阅读部分由邱虹坤编写。
在本书编写与出版过程中,编者参阅并引用了一些参考文献,在此对文献的作者表示衷心感谢。由于编者水平有限,书中难免有不妥与疏漏之处,恳请专家和读者批评指正。
编者
2023年5月
|
|