YStudio Y++

流程控制(基础支持库)

Y++ / YStudio 开发文档 · 一点滴

路径:支持库 → 基础支持库 → 流程控制(与 IDE 支持库面板同一分类)。

本页把面板里每条命令的参数、写法、示例写全。语言速览见 language.md §6–§7。

硬约束

  1. 分支/循环体必须用 {};条件写在括号里:如果 (x > 0) { }。
  2. 循环 / 遍历 的计数变量、元素变量须外部先声明;括号里只写变量名,禁止写 整数 i。
  3. 继续() / 跳出() 必须带括号;不要写「到循环尾」「跳出循环」等伪命令。
  4. 对照:计次循环 → 循环;判断循环 → 当;Y++ 没有 计次循环 / 判断循环 / 到循环 关键字。

快速开始

整数 i = 0
循环 (5, i) {
    输出(i)          // 0…4
}

整数 n = 0
当 (n < 3) {
    n = n + 1
    输出(n)
}

整数 arr[] = [10, 20, 30]
整数 项 = 0
遍历 (项, arr) {
    输出(项)
}

流程控制

如果

  • 签名:无 如果(条件){ 语句 }
  • 说明:条件为真时执行花括号内语句;可接 否则如果 / 否则。
  • 参数一│条件: 逻辑/比较表达式(== != > >= < <=,以及 且/或/非 等)
  • 示例:如果 (计数 > 0) { 输出("正数") }

否则如果

  • 签名:}否则如果(条件){ 语句 }
  • 说明:接在 如果{ } 或上一 否则如果{ } 之后,再判条件。
  • 参数一│条件: 逻辑/比较表达式
  • 示例:如果 (a == 1) { } 否则如果 (a == 2) { 输出(2) } 否则 { 输出(0) }

否则

  • 签名:}否则{ 语句 }
  • 说明:接在 如果 / 否则如果 之后,前面条件都不成立时执行。
  • 参数│无(仍须写 { })

循环

按次数或区间重复执行。三种写法由参数个数区分。

写法 签名 参数说明 示例与结果
一 循环(次数, 计数变量){ } 次数:执行几轮;计数变量:外部已声明的整数名。计数从 0 走到 次数-1 循环(5, i) → i=0,1,2,3,4
二 循环(起始, 终止, 计数变量){ } 起始/终止:含两端;步长固定为 1 循环(1, 10, n) → 1…10
三 循环(起始, 终止, 步长, 计数变量){ } 步长:每次加减量(常用正整数) 循环(1, 10, 2, k) → 1,3,5,7,9
  • 说明:计数变量须在循环前声明(如 整数 i = 0);括号内只写名字 i,不要写 整数 i。
  • 参数(摘要):
  • 次数/起始/终止/步长│整数或整数表达式
  • 计数变量│已声明的整数变量名(如 i、次数、计数)
  • 示例:
整数 i = 0
循环 (5, i) {
    输出(i)
}

整数 n = 0
循环 (1, 10, n) {
    输出(n)
}

整数 k = 0
循环 (1, 10, 2, k) {
    输出(k)
}
  • 注意:嵌套时 跳出() 只退出最内层;可用 继续() 跳过本轮剩余语句。

当

  • 签名:无 当(条件){ 语句 }
  • 说明:条件为真则重复执行;条件变假后结束。等价于其它语言的 while (条件) { }。
  • 参数一│条件: 逻辑/比较表达式
  • 注意│循环体内须修改与条件相关的变量,否则可能死循环
  • 示例:
整数 n = 0
当 (n < 10) {
    n = n + 1
    输出(n)
}

遍历

依次取出数组元素,或字典的值 / 键值对。变量均须外部已声明。

写法 签名 参数说明
数组 遍历(元素变量, 数组变量){ } 元素变量:已声明,类型与数组元素一致;数组变量:类型 名[]
字典(值) 遍历(项, 字典){ } 每轮把一个值赋给 项
字典(键+值) 遍历(键, 值, 字典){ } 同时取出键与值
  • 参数(摘要):
  • 元素变量│已声明变量名(如 项、行)
  • 数组变量│如 整数 arr[]、文本 list[](见 language.md §4.1)
  • 字典变量│通常为 通用 类型的字典
  • 示例:
整数 arr[] = [1, 2, 3]
整数 项 = 0
遍历 (项, arr) {
    输出(项)
}

文本 list[] = ["甲", "乙"]
文本 行 = ""
遍历 (行, list) {
    输出(行)
}
  • 注意:括号里不能写 整数 项;数组下标从 0 起。

继续

  • 签名:无 继续()
  • 说明:跳过本轮剩余代码,进入下一轮循环。
  • 参数│无(仍须写空括号)
  • 注意│只能写在 循环 / 当 / 遍历 的 {} 内

跳出

  • 签名:无 跳出()
  • 说明:立即结束当前这一层循环。
  • 参数│无(仍须写空括号)
  • 注意│只能写在 循环 / 当 / 遍历 的 {} 内;嵌套时只退最内层

选择

  • 签名:无 选择(表达式){ 值: { 语句 } … 默认: { 语句 } }
  • 说明:按表达式匹配分支;无匹配时走 默认。
  • 参数一│表达式: 整数或文本等
  • 整数分支│直接写数字:90: { }(不要加引号)
  • 文本分支│"B": { } 或裸标识 A: { }
  • 默认:│可选
  • 示例:
选择 (分数) {
    90: { 输出("优") }
    80: { 输出("良") }
    默认: { 输出("其他") }
}

尝试 / 捕获 / 抛出

  • 尝试 签名:尝试 { 语句 } 捕获([文本变量]) { 语句 }
  • 说明:尝试{} 内若抛出异常,跳到 捕获{};可选把说明写入已声明的 文本 变量。
  • 抛出 签名:无 抛出(文本 消息) — 主动抛出,由 捕获 接收。
  • 示例:
文本 错误 = ""
尝试 {
    抛出("自定义错误")
} 捕获 (错误) {
    输出(错误)
}

返回

  • 签名:无 返回([表达式])
  • 说明:结束当前函数;可带返回值,或写 返回()。
  • 参数一│[通用 表达式]: 可选

易错对照

错误 正确
计次循环 (…) / 判断循环 (…) 循环 (…) / 当 (…)
循环 (整数 i = 0, 10) 先 整数 i = 0,再 循环 (10, i)
遍历 (整数 项, 列表) 先 整数 项 = 0,再 遍历 (项, 列表)
继续 / 跳出 无括号 继续() / 跳出()
「到循环尾」 继续()

相关

语言基础 · 循环 · 数组声明与操作 · 字典