{ }codelper

学习 › Craykon

各语言特有 · 43

Craykon 独有的规则

用母语写的关键字、会让计算停下的“空”、严格的 ==、不会往下贯穿的选择。

本单元适用于 Craykon。
这一课讲的是 Craykon 本身。
其他 7 种语言的关键字只有英语(if、for、return)。

Craykon 的关键字可以用母语写,而且空、==、选择 都比其他语言更严格。
下面的示例把缺席(-)存成 空 的分数列表里跳过空值,其余的用 选择 评等级,最后求平均分。

n = 控制台.读行().转数字();점수들 = [];循环 (i = 0; i < n; i++){    줄 = 控制台.读行();    如果 (줄 == "-")    {        점수들.添加(空);    }    否则    {        점수들.添加(줄.转数字());    }}합 = 0;낸사람 = 0;遍历 (점수 在 점수들){    如果 (점수 == 空)    {        控制台.输出("? " + 점수);        继续;    }    합 += 점수;    낸사람 += 1;    选择 (数学.向下取整(점수 / 10))    {        情况 10:        情况 9:            控制台.输出(점수 + " A");            跳出;        情况 8:            控制台.输出(점수 + " B");            跳出;        默认:            控制台.输出(점수 + " C");            跳出;    }}控制台.输出(합 / 낸사람);控制台.输出("85" == 85);
stdin
5
92
-
78
85
-
stdout
92 A
? 빈값
78 C
85 B
? 빈값
85
false

要点

  • 关键字可以用母语写。
    在一个脚本里混着写也还是同一个程序,所以 如果 (n > 3) { Console.WriteLine(n); } 也能运行。
  • 保存和运行的程序只有一个,所以切换界面语言时,同一段代码会用那种语言重新显示。
    在编辑器里同一段代码也可以用图块拼出来,图块和文字可以来回切换着修改。
  • 空 表示“没有值”(其他语言的 null、None)。
    拿空来计算或比较大小,程序会当场停下。
    和文字连接时不会停,而是显示成 빈값(空的韩语名字)(示例中的 ? 빈값)。
  • == 是严格的。
    类型不同就一定为假,所以 0 == 假 也是 假(屏幕上显示 false)。
    可以把它看成 JavaScript 的 ===。
  • 选择 只执行匹配的那一个情况,不会往下贯穿,所以不用写 跳出。
    多个值用逗号写在一起,如 情况 10, 9:。
  • 数字只有一种(和 JavaScript 一样的 64 位浮点数)。
    7 / 2 是 3.5,所以取十位用 数学.向下取整(점수 / 10),整数除法用 数学.商(7, 2)(→ 3)。
    超过 2^53 的整数不精确。

各语言的写法

Craykon中文关键字 如果、否则、循环、遍历、当、返回、选择 对应英语的 if、else、for、foreach、while、return、switch,韩语的 만약、반복…,日语的 もし、繰り返す…。
名字也一样,控制台.输出、Console.WriteLine、콘솔.쓰기、コンソール.書く 都是同一个东西

常见错误

拿空来计算

分数 = 空;
控制台.输出(分数 + 1);

→ 报错“不能用空来计算(+)”并停下。JavaScript 中 null + 1 得到 1,undefined + 1 得到 NaN,悄悄算出错误的数;Craykon 不会算出这种数

计算之前先用 如果 (分数 == 空) 检查。

把关键字当变量名

情况 = 3;

→ 报错,提示 case、default 只能在选择(switch)里用。所有语言的关键字都是保留字,所以 自己、情况、在、if、경우 也都不能当名字

换一个不是关键字的名字。

把读到的文字直接和数字比较

控制台.输出("85" == 85);

→ false —— 用 控制台.读行() 读到的值总是文字,类型不同时 == 为假

要和数字比较,先用 .转数字() 转换。

各语言的差异
空一进入计算就会停下。
如果列表或输入里可能混有空,在相加或比较之前先用 == 空 把它挑出来。

练习题