深入解析仓颉编程语言:条件判断、循环结构与控制流机制【华为鸿蒙应用开发】
理解仓颉编程语言中的表达式
在编程语言的世界中,表达式是至关重要的构建块。传统编程语言中的表达式由一个或多个操作数(operand)通过零个或多个操作符(operator)组合而成,总是隐含着一个计算过程,因此每个表达式都会有一个计算结果。在仓颉编程语言中,我们对表达式的定义进行了简化和扩展,几乎所有可以求值的语言元素都被视为表达式。本文将详细介绍仓颉编程语言中的各种表达式类型及其用法。
仓颉中的表达式类型
在仓颉编程语言中,表达式不仅包括传统的算术运算表达式,还包括条件表达式、循环表达式和其他控制转移表达式(如 break
和 continue
)。这些表达式都可以被求值,并作为值去使用,例如作为变量定义的初值和函数实参等。此外,作为强类型编程语言,仓颉中的每个表达式不仅可求值,还有确定的类型。
条件表达式
仓颉中的条件表达式包括 if
表达式和 if-let
表达式,具体用法如下:
if
表达式
if
表达式用于在不同条件下执行不同的代码块。其基本形式如下:
if (条件) {
分支 1
} else {
分支 2
}
其中,“条件”是布尔类型表达式,“分支 1”和“分支 2”是代码块。if
表达式将根据条件的值来决定执行哪个分支。以下是一个简单的例子:
import std.random.*
main() {
let number: Int8 = Random().nextInt8()
println(number)
if (number % 2 == 0) {
println("偶数")
} else {
println("奇数")
}
}
在这个程序中,我们使用仓颉标准库生成一个随机整数,并使用 if
表达式判断这个整数是偶数还是奇数。
if-let
表达式
if-let
表达式用于在模式匹配成功时执行特定的代码块。它的详细用法将在后续章节中介绍。
循环表达式
仓颉提供了多种循环表达式,包括 for-in
表达式、while
表达式和 do-while
表达式。每种循环表达式都有其特定的使用场景和规则。
while
表达式
while
表达式用于在条件为真时重复执行一个代码块。其基本形式如下:
while (条件) {
循环体
}
以下是一个基于二分法近似计算 2 的平方根的例子:
main() {
var root = 0.0
var min = 1.0
var max = 2.0
var error = 1.0
let tolerance = 0.1 ** 10
while (error ** 2 > tolerance) {
root = (min + max) / 2.0
error = root ** 2 - 2.0
if (error > 0.0) {
max = root
} else {
min = root
}
}
println("2 的平方根约等于:${root}")
}
do-while
表达式
do-while
表达式确保循环体至少执行一次。其基本形式如下:
do {
循环体
} while (条件)
以下是一个使用蒙特卡洛算法近似计算圆周率的例子:
import std.random.*
main() {
let random = Random()
var totalPoints = 0
var hitPoints = 0
do {
let x = random.nextFloat64()
let y = random.nextFloat64()
if ((x - 0.5) ** 2 + (y - 0.5) ** 2 < 0.25) {
hitPoints++
}
totalPoints++
} while (totalPoints < 1000000)
let pi = 4.0 * Float64(hitPoints) / Float64(totalPoints)
println("圆周率近似值为:${pi}")
}
代码块
在仓颉编程语言中,由一对大括号 {}
包围的一组表达式称为“代码块”。代码块作为程序的一个顺序执行流,其中的表达式按编码顺序依次执行。如果代码块中有至少一个表达式,其值和类型等于最后一个表达式的值和类型;如果没有表达式,则代码块的类型为 Unit
,值为 ()
。
注意,代码块本身不是一个表达式,不能被单独使用,而是依附于函数、条件表达式和循环表达式等执行和求值。
for-in
表达式
for-in
表达式用于遍历那些扩展了迭代器接口 Iterable<T>
的类型实例。其基本形式如下:
for (迭代变量 in 序列) {
循环体
}
以下是一个遍历数组并输出农历 2024 年各月干支纪法的例子:
main() {
let metaArray = [r'甲', r'乙', r'丙', r'丁', r'戊',
r'己', r'庚', r'辛', r'壬', r'癸']
let noumenonArray = [r'寅', r'卯', r'辰', r'巳', r'午', r'未',
r'申', r'酉', r'戌', r'亥', r'子', r'丑']
let year = 2024
let metaOfYear = ((year % 10) + 10 - 4) % 10
var index = (2 * metaOfYear + 3) % 10 - 1
println("农历 2024 年各月干支:")
for (noumenon in noumenonArray) {
print("${metaArray[index]}${noumenon} ")
index = (index + 1) % 10
}
}
总结
本文介绍了仓颉编程语言中常见的表达式类型及其用法,包括条件表达式、循环表达式和代码块的使用。通过理解这些表达式的定义和使用规则,我们可以编写出更为灵活和强大的程序。在后续章节中,我们将详细探讨仓颉中的其他表达式类型及其高级用法。
- 点赞
- 收藏
- 关注作者
评论(0)