倉頡編程快速上手
劉玥 張榮超
相關主題
商品描述
本書通過豐富的示例和大量的練習,簡明扼要地闡述了倉頡編程語言的基本知識和核心概念。全書共15章,涵蓋起步、變量、簡單的數據操作、流程控制之if表達式、流程控制之循環表達式、函數初級、面向對象編程、struct類型、enum類型和模式匹配、函數高級、基礎Collection類型、泛型、包管理、擴展、數值和字符串操作等內容。其中,“面向對象編程”這一章詳細講解了一系列重要的概念,如類、對象、封裝、繼承、多態、重寫、抽象類和接口等,並通過一個小型的課務管理項目對上述概念進行了深入闡釋。本書適合希望快速上手倉頡編程語言的初學者閱讀。
作者簡介
刘玥,九丘教育CEO,曾在高校任教十余年,具有丰富的课堂教学经验,尤其擅长讲授程序设计、算法类课程。
张荣超,九丘教育教学总监、华为开发者专家(HDE)、华为首届HarmonyOS开发者创新大赛优秀导师、OpenHarmony项目群技术指导委员会(TSC)委员。
目錄大綱
目 錄
第 1章 起步 1
1.1 關於倉頡 1
1.2 搭建開發環境 1
1.3 我的第 一個倉頡程序 1
第 2章 變量 5
2.1 變量的聲明 5
2.1.1 在“第 一個”倉頡程序中聲明
一個變量 5
2.1.2 聲明幾個不同類型的變量 6
2.1.3 在聲明變量時默認數據類型 9
2.2 變量的使用 9
2.2.1 讀取變量值 10
2.2.2 對可變變量進行賦值 11
2.2.3 在賦值時避免類型錯誤 14
第3章 簡單的數據操作 16
3.1 存儲數值的數據類型 16
3.1.1 認識整數類型 16
3.1.2 整數類型可變變量的自增
和自減運算 18
3.1.3 認識浮點類型 18
3.1.4 數值類型的算術運算 20
3.1.5 避免算術運算中的類型錯誤 22
3.2 存儲字符的數據類型 25
3.2.1 使用字符類型存儲單個字符 26
3.2.2 使用字符串類型存儲多個字符 27
3.2.3 在輸出字符串時使用換行符
和製表符 29
3.2.4 拼接字符串 31
3.2.5 使用插值字符串 32
3.3 其他數據類型 33
3.3.1 元組類型 33
3.3.2 Unit和Nothing類型 34
第4章 流程控制之if表達式 37
4.1 條件測試 37
4.1.1 比較數值類型數據的大小 37
4.1.2 測試是否相等 37
4.1.3 檢查復雜的條件 38
4.2 if表達式 41
4.2.1 單分支的if表達式 41
4.2.2 雙分支的if表達式 41
4.2.3 嵌套的if表達式 45
第5章 流程控制之循環表達式 49
5.1 do-while表達式 49
5.1.1 使用do-while表達式輸出1到10
之間的數 49
5.1.2 使用do-while表達式計算
階乘 50
5.1.3 使用break表達式結束循環 51
5.1.4 在循環中使用continue
表達式 52
5.2 while表達式 53
5.2.1 使用while表達式計算階乘 54
5.2.2 在循環中使用標志 54
5.2.3 在while表達式中使用break
表達式和continue表達式 55
5.3 for-in表達式 56
5.3.1 瞭解區間類型 57
5.3.2 使用for-in表達式計算階乘 58
5.3.3 使用where條件 59
5.3.4 尋找最小公倍數 60
5.4 循環表達式的嵌套 61
5.4.1 尋找完全數 62
5.4.2 尋找自除數 63
第6章 函數初級 67
6.1 函數的定義和調用 67
6.1.1 一個簡單的無參函數 67
6.1.2 使用非命名參數 68
6.1.3 使用命名參數 71
6.1.4 使用return返回值 73
6.1.5 瞭解函數的返回值類型 76
6.2 函數的重載 78
6.2.1 定義重載函數 79
6.2.2 調用重載函數 79
6.3 變量的作用域 80
6.3.1 程序的基本結構 80
6.3.2 全局變量的作用域 82
6.3.3 局部變量的作用域 82
6.3.4 同名變量 83
第7章 面向對象編程 86
7.1 類的定義和對象的創建 86
7.1.1 定義類 86
7.1.2 創建類的實例 89
7.1.3 聲明並使用靜態成員變量 90
7.1.4 定義並調用靜態成員函數 92
7.1.5 重載構造函數 93
7.1.6 類是引用類型 96
7.1.7 組織代碼 98
7.2 封裝 99
7.2.1 直接修改實例成員變量 99
7.2.2 通過函數讀寫private實例成員
變量 100
7.2.3 通過成員屬性讀寫成員變量 103
7.3 繼承 106
7.3.1 定義並繼承父類 106
7.3.2 創建新的子類 109
7.3.3 重寫和重定義 111
7.3.4 使用組合實現代碼復用 114
7.4 多態 116
7.4.1 將子類對象賦給父類類型的
變量 116
7.4.2 通過繼承實現多態 117
7.5 抽象類 119
7.5.1 將已有的類改造為抽象類 120
7.5.2 通過抽象函數和抽象類實現
多態 124
7.6 接口 125
7.6.1 定義接口 126
7.6.2 實現接口 127
7.6.3 通過接口實現多態 132
7.6.4 繼承接口 133
7.6.5 面向接口編程示例 134
第8章 struct類型 139
8.1 struct類型的定義和實例的
創建 139
8.1.1 定義struct類型 139
8.1.2 創建struct類型的實例
並訪問其成員 140
8.2 struct類型和class類型的
區別 141
8.2.1 struct類型是值類型 141
8.2.2 修改struct的實例成員 143
第9章 enum類型和模式匹配 145
9.1 enum類型的定義和enum值的
創建 145
9.1.1 定義enum類型 145
9.1.2 創建enum值 147
9.2 enum值的模式匹配 148
9.2.1 使用match表達式匹配
enum值 148
9.2.2 瞭解另一種match表達式 153
9.3 模式 155
9.3.1 使用常量模式 155
9.3.2 使用通配符模式 157
9.3.3 使用綁定模式 157
9.3.4 使用類型模式 159
9.3.5 使用元組模式 161
9.3.6 使用枚舉模式 162
9.3.7 判斷模式的Refutability 164
9.4 模式的其他用法 166
9.4.1 在變量聲明中使用irrefutable
模式 166
9.4.2 在for-in表達式中使用irrefutable
模式 168
9.4.3 在if-let表達式中使用模式 169
9.4.4 在while-let表達式中使用
模式 171
9.5 Option類型 173
9.5.1 瞭解Option類型的定義 173
9.5.2 創建Option值 173
9.5.3 解構Option值 175
9.5.4 使用as操作符進行類型
轉換 179
第 10章 函數高級 184
10.1 函數是“一等公民” 184
10.1.1 判斷函數類型 184
10.1.2 將函數作為變量值 185
10.1.3 將函數作為實參 186
10.1.4 將函數作為返回值 187
10.2 lambda表達式 189
10.2.1 定義lambda表達式 189
10.2.2 使用lambda表達式 190
10.2.3 比較lambda表達式和函數的
異同 192
10.2.4 使用“尾隨lambda”
語法糖 194
10.3 嵌套函數和閉包 195
10.3.1 定義和使用嵌套函數 195
10.3.2 在閉包中捕獲變量 197
10.3.3 閉包的工作原理和特點 200
10.4 再論重載函數 202
10.4.1 函數重載決議 202
10.4.2 對一元操作符進行重載 205
10.4.3 對二元操作符進行重載 207
10.5 mut函數 208
10.5.1 在struct中使用mut函數 209
10.5.2 在interface中使用mut
函數 210
第 11章 基礎Collection類型 212
11.1 Array 212
11.1.1 使用字面量創建Array 212
11.1.2 使用構造函數創建Array 213
11.1.3 獲取Array的元素個數 214
11.1.4 訪問Array的元素 215
11.1.5 修改Array的元素 218
11.1.6 Array是引用類型 220
11.2 ArrayList 222
11.2.1 創建ArrayList 222
11.2.2 訪問和修改ArrayList的
元素 223
11.2.3 向ArrayList中添加元素 225
11.2.4 從ArrayList中刪除元素 227
11.3 HashSet 230
11.3.1 創建HashSet 230
11.3.2 訪問HashSet的元素 231
11.3.3 向HashSet中添加元素 233
11.3.4 從HashSet中刪除元素 234
11.4 HashMap 236
11.4.1 創建HashMap 237
11.4.2 訪問HashMap的元素 238
11.4.3 向HashMap中添加元素
或修改元素 241
11.4.4 從HashMap中刪除元素 243
第 12章 泛型 246
12.1 泛型類型 246
12.1.1 定義和使用泛型class 247
12.1.2 定義和使用泛型struct 251
12.1.3 定義和使用泛型enum 252
12.1.4 定義和使用泛型interface 253
12.2 泛型函數 255
12.2.1 定義和調用泛型函數 256
12.2.2 為泛型函數添加泛型約束 257
第 13章 包管理 259
13.1 包的聲明 259
13.1.1 工程的基本結構 259
13.1.2 聲明包 260
13.2 頂層聲明的可見性 261
13.2.1 頂層聲明的默認可見性 261
13.2.2 頂層聲明的public可見性 262
13.3 頂層聲明的導入 265
13.3.1 使用import導入其他包中的
public頂層聲明 265
13.3.2 使用import as進行重命名 268
13.3.3 使用public import對導入的
頂層聲明重導出 270
第 14章 擴展 272
14.1 直接擴展和接口擴展 272
14.1.1 定義和使用直接擴展 272
14.1.2 定義和使用接口擴展 275
14.1.3 擴展泛型類型 278
14.2 擴展的導出和導入 278
14.2.1 導出和導入直接擴展 278
14.2.2 導出和導入接口擴展 280
第 15章 數值和字符串操作 283
15.1 生成隨機數據 283
15.1.1 生成各種類型的隨機數據 283
15.1.2 生成指定範圍內的
隨機整數 284
15.1.3 復現隨機數據 285
15.1.4 生成隨機數組 286
15.2 通用的數學操作 286
15.2.1 計算三角函數與雙曲函數 286
15.2.2 對浮點數取整 288
15.2.3 其他數學操作 289
15.3 格式化輸出 289
15.3.1 輸出非負數時加上正號 290
15.3.2 將整數類型輸出為二、八、
十六進制 290
15.3.3 使用科學記數法或十進制
表示浮點數 291
15.3.4 控制浮點數的輸出精度 292
15.3.5 控制輸出寬度 292
15.4 字符串操作 294
15.4.1 將字符串轉換為字符數組 294
15.4.2 統計和查找 295
15.4.3 去除前綴和後綴 296
15.4.4 替換子字符串 297
15.4.5 分割和連接字符串 298
15.4.6 大小寫轉換 299
15.4.7 類型轉換 299
15.4.8 StringBuilder 301