「Mac玩转仓颉内测版5」入门篇5 - Cangjie控制结构(上)

本篇探讨Cangjie编程语言中的控制结构,主要包括条件表达式。控制结构是管理程序执行流程的核心部分,能够帮助编写复杂且灵活的逻辑程序。

关键词
  • Cangjie编程
  • 控制结构
  • 条件表达式
  • 分支结构
  • if表达式
  • 多级条件判断

一、控制结构概述

控制结构用于管理程序的执行流程。在Cangjie中,控制结构包括条件表达式(如 if )和循环表达式(如 for-inwhiledo-while)。这些结构允许根据不同条件执行代码块或重复执行操作。

1.1 表达式的定义

在Cangjie中,凡是可求值的语言元素都视为表达式,包括条件表达式、循环表达式和 try 表达式等。Cangjie为强类型语言,所有表达式不仅可求值,还有明确的类型。

1.1.1 Cangjie中的表达式

Cangjie表达式简化了传统编程语言中的定义,所有可计算的元素皆为表达式。这包括条件判断、循环操作等,表达式结果具有固定类型。


二、条件表达式

条件表达式用于根据某个条件决定执行哪段代码。在Cangjie中,主要使用 if 表达式。

2.1 if 表达式

if 表达式的基本形式如下:

cangjie 复制代码
if (条件) {
    分支1
} else {
    分支2
}
2.1.1 if 表达式的执行规则
  • 计算条件表达式:
    • 值为 true 时,执行分支1;
    • 值为 false 时,执行分支2。
  • 继续执行 if 表达式后的代码。

else 分支可以省略,仅在条件成立时执行代码。

示例:根据年龄判断是否成年人

cangjie 复制代码
main(): Int64 {
    let age: Int = 20
    if (age >= 18) {
        println("您是成年人。")
    }
    else {
        println("您是未成年人。")
    }
    
    return 0
}

输出示例:

复制代码
您是成年人。

2.2 多级条件判断

通过 else if 可以执行多级条件判断,处理更复杂的分支逻辑。

2.2.1 多级条件示例
cangjie 复制代码
main(): Int64 {
    let temperature = 10
    if (temperature > 30) {
        println("天气炎热")
    }
    else if (temperature > 20) {
        println("天气温暖")
    }
    else if (temperature > 10) {
        println("天气凉爽")
    }
    else {
        println("天气寒冷")
    }
    
    return 0
}

输出示例:

复制代码
天气寒冷

2.3 if 表达式的值与类型

if 表达式用于变量初始化时,其值和类型由分支的返回值决定。如果没有 else 分支,if 表达式的类型为 Unit,值为 ()。

2.3.1 使用 if 表达式初始化变量
cangjie 复制代码
main(): Int64 {
    let score = 85
    let grade = if (score >= 90) {
        "A"
    } else if (score >= 80) {
        "B"
    }
    else {
        "C"
    }
    println("您的成绩等级是:${grade}")
    
    return 0
}

输出示例:

复制代码
您的成绩等级是:B

小结

本篇介绍了Cangjie中的控制结构,重点阐述了条件表达式的用法。通过多个示例展示了如何使用 if 表达式控制程序的执行流程。


下篇预告

下一篇将探讨Cangjie中的 whiledo-while 表达式的使用及其实际应用,帮助读者进一步掌握控制结构的灵活应用。


上一篇: 「Mac玩转仓颉内测版4」入门篇4 - Cangjie变量命名规则
下一篇:「Mac玩转仓颉内测版6」入门篇6 - Cangjie控制结构(中)

作者:SoraLuna

链接:https://www.nutpi.net/thread?topicId=107

來源:坚果派

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


相关推荐
AI小老六2 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
胡萝卜术2 小时前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize3 小时前
初识DFS 与 BFS:递归、队列与图遍历
算法
fthux3 小时前
如果你用 Mac,那你可能需要 Noti Shift
macos·开源·github
罗西的思考16 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
美团技术团队20 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC2 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC2 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK2 天前
线段树维护区间 k 次方和
c++·数学·算法·stl