斯坦福程序設計入門課:實現

Eric S. Roberts 編程思考者團隊

  • 出版商: 機械工業
  • 出版日期: 2021-01-01
  • 售價: $714
  • 貴賓價: 9.5$678
  • 語言: 簡體中文
  • 頁數: 386
  • 裝訂: 平裝
  • ISBN: 7111669428
  • ISBN-13: 9787111669425

立即出貨

買這商品的人也買了...

相關主題

商品描述

本書通過使用一門叫的語言,教會你如何編寫程序,引導你走上奇妙的計算機科學的旅程。
語言是基於Web的應用程序的核心語言。
書中所有示例代碼都可以在任何瀏覽器上運行,包括你手機上的瀏覽器。
雖然本書是使用來演示,然而,更重要的是,
本書著重講解的是編程基本原則,其中的道理可以用在任何其他語言中。
本書旨在用於大學課程中的第一門編程課。
它覆蓋了傳統計算機科學首門課程(通常稱為CS1)的所有內容。

作者簡介

編程思考者團隊,成立於2019年10月份,由一群熱愛代碼並樂於思考的程序員們因緣際會而成。
團隊幾乎人人都有自己的技術博客(具體成員的詳細介紹參見譯者序中的鏈接)。
團隊的活動除了平時彼此的技術交流之外,也致力於為軟件開發行業的發展貢獻出自己的一份力量。
即便這份力量比較微薄,也希望整個行業因本團隊的存在而略有不同。
本譯作是我們的第一部作品,希望能與更多的同行者們一起掌握和夯實編程基礎知識。

目錄大綱

目錄

譯者序
寫給學生的話
寫給教師的話
致謝
第1章輕鬆入門…… 1
1.1 Karel介紹…… 2
1.1.1 Karel的編程…… 2
1.1.2 Karel的世界…… 3
1.1.3 Karel的內置函數…… 3
1.2教Karel解決問題…… 4
1.2.1開始起步…… 4
1.2.2定義函數…… 5
1.2.3完善程序…… 6
1.2.4使用庫函數…… 7
1.2.5分解策略…… 7
1.3控制語句…… 9
1.3.1條件語句…… 9
1.3.2循環語句…… 11
1.3.3解決通用問題…… 13
1.4逐步求精法…… 15
1.4.1一個逐步求精法的練習…… 15
1.4.2自上而下設計的原則…… 15
1.4.3求精第一個子問題…… 16
1.4.4編寫下一層代碼…… 17
1.4.5完成…… 18
1.5 Karel世界裡的算法…… 19
總結…… 20
複習題…… 22
練習題…… 22

第2章簡介…… 34
2.1數據和類型…… 35
2.2數值數據…… 35
2.2.1中數字的表示…… 36
2.2.2算術表達式…… 36
2.2.3優先級…… 38
2.3變量…… 38
2.3.1變量聲明…… 39
2.3.2賦值…… 39
2.3.3自增和自減操作符…… 40
2.3.4命名約定…… 41
2.3.5常量…… 41
2.3.6順序計算…… 42
2.4函數…… 42
2.4.1用實現函數…… 43
2.4.2庫函數…… 45
2.5字符串數據…… 46
2.5.1字符串操作…… 47
2.5.2編寫簡單的字符串函數…… 48
2.6在瀏覽器中運行…… 49
2.6. 1 “Hello World”程序…… 49
2.6.2和Web …… 51
2.6.3程序的HTML模板…… 51
2.7測試和調試…… 53
2.7.1防禦式編程…… 54
2.7.2成為一名優秀的調試者…… 54
2.7.3編程的各個階段…… 54
2.7.4心理障礙的一個例子…… 57
2.7.5編寫有效的測試程序…… 58
2.8軟件維護…… 60
總結…… 61
複習題…… 63
練習題…… 65

 第3章控制語句…… 68
3.1布爾數據…… 69
3.1.1關係操作符…… 69
3.1.2邏輯操作符…… 70
3.1.3短路求值…… 72
3.2 if語句…… 73
3.2.1 if語句的其他形式…… 74
3.2.2 “:”操作符…… 75
3.3 switch語句…… 76
3.4 while語句…… 78
3.5 for語句…… 81
3.5.1 for和while的關係…… 84
3.5.2嵌套的for語句…… 84
3.6算法編程…… 86
3.6.1早期的平方根算法…… 87
3.6.2尋找**的公約數…… 89
3.6.3歐幾里得算法…… 90
3.7避免使用模糊的真假值…… 92
總結…… 93
複習題…… 94
練習題…… 95

第4章簡單圖形…… 100
4.1圖形版“Hello World” …… 101
4.2類、對象和方法…… 102
4.2.1創建對象…… 102
4.2.2向對象發送消息…… 103
4.2.3引用…… 104
4.2.4封裝…… 105
4.3圖形對象…… 105
4.3.1 GRect類…… 105
4.3.2 GOval類…… 108
4.3.3 GLine類…… 109
4.3.4 GLabel類… … 109
4.4圖形窗口…… 114
4.5創建圖形化應用程序…… 115
4.5.1指定坐標和大小…… 115
4.5.2使用簡單的分解策略…… 117
4.5.3在圖形應用程序中使用控制語句… … 119
4.5.4返回圖形對象的函數…… 121
總結…… 122
複習題…… 123
練習題…… 124

第5章函數…… 132
5.1快速回顧函數…… 133
5.1.1函數定義的語法…… 133
5.1.2傳遞參數…… 134
5.1.3可選參數…… 134
5.1.4謂詞函數…… 135
5.2程序庫…… 136
5.2.1創建自己的程序庫…… 136
5.2.2信息隱藏原則… … 137
5.2.3接口概念…… 138
5.3一個支持隨機選擇的程序庫…… 138
5.3.1設計RandomLib.js庫的接口…… 139
5.3.2實現RandomLib.js庫…… 140
5.3.3使用RandomLib.js庫…… 142
5.4函數調用的機制…… 144
5.4.1調用函數的步驟…… 144
5.4.2組合函數…… 145
5.4.3跟踪組合函數…… 146
5.5遞歸函數…… 149
5.5.1 fact的遞歸公式…… 149
5.5.2跟踪遞歸過程…… 150
5.5.3遞歸的信仰之躍…… 153
5.5.4斐波那契函數…… 153
5.5.5計算斐波那契序列中的項…… 154
5.5.6在遞歸實現中獲得信心…… 155
5.5.7遞歸實現的效率…… 155
總結…… 158
複習題…… 159
練習題…… 160

第6章編寫交互式程序…… 164
6.1一等函數…… 165
6.1.1將函數聲明為數據值…… 165
6.1.2傳遞函數作為參數…… 166
6.2一個簡單的交互式示例…… 167
6.3控制對象的屬性…… 169
6.4響應鼠標事件…… 170
6.4.1簡單的畫線程序…… 171
6.4.2在畫布上拖動對象…… 173
6.5基於計時器的動畫…… 175
6.5.1 setTimeout和setInterval函數…… 175
6.5.2動畫的簡單示例…… 176
6.5.3跟踪動畫的狀態…… 177
6.6擴展圖形庫…… 179
6.6.1 GArc類…… 179
6.6.2 GPolygon類…… 181
6.6.3 GCompound類…… 184
總結…… 186
複習題…… 188
練習題…… 189

第7章字符串…… 197
7.1二進製表示法…… 198
7.1.1二進制記數法…… 198
7.1.2將整數存儲為位序列…… 199
7.1.3十六進制記數法…… 200
7.1.4表示非數值數據…… 201
7.1.5表示字符…… 202
7.2字符串操作…… 203
7.2.1確定字符串的長度…… 205
7.2.2從字符串中選擇字符…… 205
7.2.3提取字符串的一部分…… 206
7.2.4在字符串中搜索…… 206
7.2.5大小寫轉換…… 207
7.2.6 startsWith、endsWith和trim方法…… 207
7.2.7數字和字符串之間的轉換…… 208
7.3字符分類…… 209
7.4字符串常見的代碼模式…… 210
7.4.1遍歷字符串中的字符…… 210
7.4.2拼接字符串…… 211
7.4.3遍歷和拼接的組合模式…… 212
7.5字符串應用程序…… 212
7.5.1檢查回文…… 212
7.5.2生成縮寫詞…… 213
7.5.3將英語翻譯成Pig Latin …… 214
7.5.4實現簡單的密碼…… 216
7.6從控制台讀取數據…… 218
總結…… 220
複習題…… 221
練習題…… 222

第8章數組…… 229
8.1數組介紹…… 230
8.1. 1數組表示法…… 230
8.1.2數組的元素選擇…… 231
8.1.3數組作為引用傳遞…… 233
8.1.4訪問數組邊界之外的元素…… 234
8.2數組操作…… 235
8.2.1添加和移除數組元素…… 236
8.2.2重新給數組元素排序的方法…… 239
8.2.3字符串和數組互相轉換…… 240
8.2.4 ArrayLib.js庫…… 241
8.3使用數組製表…. ..