描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115624710
1. 全新自研: 作为华为首款自研编程语言,仓颉融合现代编程技术精髓,展现华为技术创新实力。
2. 专业教学: 具有丰富教学经验的教育专家和华为认证开发者专家联合撰写,内容具备可靠性和前沿性。
3. 全面覆盖: 从基础语法到高级特性,全面介绍仓颉编程的各个方面,适合初学者快速上手。
4. 实战导向: 结合大量示例和练习,让读者在实践中巩固知识,提升编程能力。
5. 资源支持: 提供源代码、思维导图等丰富资源,助力读者高效学习。
本书通过丰富的示例和大量的练习,简明扼要地阐述了仓颉编程语言的基本知识和核心概念。全书共15章,涵盖起步、变量、简单的数据操作、流程控制之if表达式、流程控制之循环表达式、函数初级、面向对象编程、struct类型、enum类型和模式匹配、函数高级、基础Collection类型、泛型、包管理、扩展、数值和字符串操作等内容。其中,“面向对象编程”这一章详细讲解了一系列重要的概念,如类、对象、封装、继承、多态、重写、抽象类和接口等,并通过一个小型的课务管理项目对上述概念进行了深入阐释。本书适合希望快速上手仓颉编程语言的初学者阅读。
目 录
第 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
评论
还没有评论。