![](http://img3m1.ddimg.cn/53/9/29627981-1_u_1695021548.jpg)
開本:16開 紙張:膠版紙 包裝:平裝-膠訂 是否套裝:否 國際標準書號ISBN:9787302641711 叢書名:清華開發者學堂 作者:邱虹坤、王亞傑、孫玉霞、劉成、王曉岩、郭建新、楊煦 出版社:清華大學出版社 出版時間:2023年09月 
"編輯推薦 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第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) 將程序設計與學生興趣(棋類小遊戲)相結合。為了增加趣味性,本書以機器博弈部分棋類項目(如井字棋、五子棋、亞馬遜棋)為案例,鼓勵學生由單純地玩遊戲到利用所學程序設計知識開發小遊戲,使其獲得一種成就感,進而產生繼續學習的積極性,達到寓教於樂的教學效果。信息技術的發展日新月異,神經網絡、機器學習、大宇宙等人工智能技術迅猛發展,深深地影響著人們的學習、生活和工作方式。培養學生的計算思維能力與人工智能素養已成為大學計算機教育的基本任務之一,而計算機程序設計是培養和訓練在校大學生計算思維能力和人工智能素養的重要基礎課程。 舉世矚目的圍棋AI程序AlphaGo與人類頂級棋手之間的人機博弈,引發了全球人工智能的熱潮。作為人工智能領域最重要的研究方向之一,機器博弈引起越來越多專家、學者及在校大學生的關注。本書結合當今人工智能技術熱點,以機器博弈競賽項目為例,將重要的知識點與典型的案例相結合,采用項目驅動式程序設計案例教學。本書具有以下特點: (1) 將程序設計與人工智能熱點——機器博弈技術相結合。本書的擴展閱讀增加了機器博弈的相關知識,拓展了知識面,培養了人工智能素養,為學生後續在相關領域進一步學習與研究奠定了基礎。 (2) 將程序設計與學生興趣(棋類小遊戲)相結合。為了增加趣味性,本書以機器博弈部分棋類項目(如井字棋、五子棋、亞馬遜棋)為案例,鼓勵學生由單純地玩遊戲到利用所學程序設計知識開發小遊戲,使其獲得一種成就感,進而產生繼續學習的積極性,達到寓教於樂的教學效果。 (3) 將程序設計與實踐應用開發相結合。本書以實際應用為背景,引導學生後續參加相關科技競賽及大學生創新創業項目,將程序設計與開發實踐有機地融合在一起,通過介紹機器博弈的相關知識,引發學生對人工智能相關技術深入研究的積極性。通過編程解決機器博弈項目中的實際問題,使學生進一步體會程序設計的實用性。 (4) 將面向過程與面向對像的程序設計思想相結合。本書主要采用C語言講解面向過程的程序設計,但為了更好地體現現代軟件設計與開發的思想,還特別在相關章節引入了C#語言,介紹面向對像的程序設計思想。 本書既可作為高等院校大學生及機器博弈愛好者的程序設計教材,也可作為中國計算機博弈大賽和其他機器博弈競賽參賽者的入門參考書。全書共13章,其中第1、12章由郭建新編寫;第2、3章由邱虹坤編寫;第4、5章由王曉岩編寫;第6、8章由孫玉霞編寫;第7、9章由劉成編寫;第10、11章由楊煦編寫;第13章由王亞傑編寫。全書案例由王亞傑設計,擴展閱讀部分由邱虹坤編寫。 在本書編寫與出版過程中,編者參閱並引用了一些參考文獻,在此對文獻的作者表示衷心感謝。由於編者水平有限,書中難免有不妥與疏漏之處,懇請專家和讀者批評指正。
編者 2023年5月
![](http://img3m1.ddimg.cn/53/9/29627981-2_u_1695021548.jpg)
![](http://img3m1.ddimg.cn/53/9/29627981-3_u_1695021548.jpg)
![](http://img3m1.ddimg.cn/53/9/29627981-4_u_1695021549.jpg)
![](http://img3m1.ddimg.cn/53/9/29627981-5_u_1695021549.jpg)
![](http://img3m1.ddimg.cn/53/9/29627981-6_u_1695021549.jpg)
![](http://img3m1.ddimg.cn/53/9/29627981-7_u_1695021549.jpg)
![](http://img3m1.ddimg.cn/53/9/29627981-8_u_1695021549.jpg)
|