各语言特有 · 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);5 92 - 78 85 -
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 —— 用 控制台.读行() 读到的值总是文字,类型不同时 == 为假
要和数字比较,先用 .转数字() 转换。
各语言的差异
空一进入计算就会停下。
如果列表或输入里可能混有空,在相加或比较之前先用
空一进入计算就会停下。
如果列表或输入里可能混有空,在相加或比较之前先用
== 空 把它挑出来。