辛蒂JS公司

编程

控制操作员

程序流程

我们首先描述那些允许生成条件分支和各种循环的操作符。用户应该知道,在遍历列表的不同方式中也会出现其他类型的循环结构。它们在本节中进行了描述基本列表操作.

条件运算符:如果(бbool›,бexpr›)

描述:如果布尔条件嘘声›计算结果为真的,然后是表达式出口›已评估。的典型用法如果-运算符是副作用的条件评估。

例子:如果x个具有负值。

x=5;如果(x<0,println(“x现在为负数”);x=-3;如果(x<0,println(“x现在为负数”);
x现在为负值

返回值:在这种情况下如果-功能是expr›。否则,___返回。

x=5;如果(x<0,-1);
___
x=-3;如果(x<0,-1);
-1

条件分支运算符:如果(бbool›、бexpr1›、expr2›)

描述:如果布尔条件›布尔›计算结果为真的,然后是表达式expr1›已评估。如果嘘声›计算结果为,那么expr2›已评估。无论哪种情况,都会返回计算的表达式的值。因此,这个三元版本的如果-运算符对if/then/else功能进行编码。此版本的如果-操作员:首先如果-运算符用于强制程序部件的条件求值(这通常会导致副作用)。

例子:此代码片段在控制台上打印一条消息,显示是否x个为正、负或零。

描述(x):=如果(x<0,println(“x现在为负数”),如果(x>0,println(“x现在为正”),println(“x为零”)));描述(5);
x现在为正
描述(0);
x为零
描述(-7);
x现在是负数

第二次使用如果-运算符是根据由嘘声›.这在定义函数时特别有用。

例子:此代码片段定义了函数f(x)为绝对值函数(对于x个).

f(x):=如果(x>0,x,-x);f(5)
5
f(-7)
7

例子:此代码片段采用几何元素A类(很可能是一个点),并根据其值将其颜色设置为红色或蓝色x个-坐标。

跳过测试:我们还不能在测试中使用几何元素。
A.color=如果(A.x>0,(1,0,0),(0,0,1))

触发运算符:触发器(›bool›,›expr›)

CindyJS中尚不可用!

描述:这个触发运算符与如果操作员。与…对比如果,的触发操作符具有动态风格。表达式出口›在任何时候进行评估嘘声›更改自真的.这意味着在拖动建筑时,如果<bool>在以前的实例中,现在真的.该操作符的目的是在拖动结构时,每当发生事件时触发副作用。下面的代码片段演示了这种行为。

例子:此代码片段将在任何时候打印消息A类穿过-轴。

跳过测试:尚未实现操作符“触发器”。
触发器(A.x<0,println(“A现在进入x负半平面”)触发器(A.x>0,println(“A现在进入x正半平面”)

while循环:而(бbool›,бexpr›)

描述:这个虽然运算符对表达式求值出口›只要条件允许嘘声›是真的。最后一次求值的结果作为函数的值返回。

例子:

x=0;总和=0;erg=当(x<4,x=x+1;总和=总和+x;println(x+“-->”+总和);总和);

此代码片段生成输出

1  -->  12  -->  33  -->  64-->10

评估结果为

伯格
10

评估后,变量的值伯格10.提醒一句:人们应该意识到这样一个事实虽然如果从未满足条件,操作可能很容易创建无限循环。


重复循环:重复(б数字›,б表达›)

描述:此运算符在CindyScript中提供了最简单的循环类型:出口›已评估数字›次。返回最后一次评估的结果。在评估期间出口›特殊变量#包含循环的运行变量。

例子:此代码生成前5个整数及其平方的列表。

重复(5,println(#+“平方是”+#^2))
1的平方等于12的平方等于43的平方等于94的平方等于165的平方等于25

修改人:这个重复循环支持多种修改器。这些修饰符可用于控制循环的开始值、停止值和步长。修饰符开始设置循环的起始值。修改器停止设置循环的结束值。修饰符设置步长。可以任意组合修改器。只要没有设置所有三个修饰符,循环就会始终执行数字›次。修改器只允许使用实值。下表显示了修饰符的不同用法。

a=[];重复(6,a=a++[#]);
[1, 2, 3, 4, 5, 6]
a=[];重复(6,开始->4,a=a++[#]);
[4, 5, 6, 7, 8, 9]
a=[];重复(6,停止->2,a=a++[#]);
[-3, -2, -1, 0, 1, 2]
a=[];重复(6,步骤->3,a=a++[#]);
[1, 4, 7, 10, 13, 16]
a=[];重复(6,停止->12,步骤->4,a=a++[#]);
[-8, -4, 0, 4, 8, 12]
a=[];重复(6,开始->3,步骤->2,a=a++[#]);
[3, 5, 7, 9, 11, 13]
a=[];重复(5,开始->3,停止->4,a=a++[#]);
[3, 3.25, 3.5, 3.75, 4]
a=[];重复(5,开始->0,停止->-3,a=a++[#]);
[0, -0.75, -1.5, -2.25, -3]
a=[];重复(6,开始->3,停止->4,步骤->0.4,a=a++[#]);
[3, 3.4, 3.8]

重复循环:重复(б数字›、б变量›、т表达式›)

描述:此运算符与运算符相同重复(б数字›,б表达›),除了一个区别:run变量现在被分配给var›.这允许使用具有不同运行变量的嵌套循环。

例子:此代码片段将绘制一个3×3的点数组。

重复(3,i,重复(3,j,绘制(i,j)));
线宽=1.2开始路径()弧(275.5、204.5、4、0、6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(275.5、204.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”strokeStyle=“rgb(0,0,0)”冲程()开始路径()弧(275.5、179.5、4、0、6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(275.5、179.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”冲程()开始路径()弧(275.5、154.5、4、0、6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(275.5、154.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”冲程()开始路径()弧(300.5、204.5、4、0、6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(300.5、204.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”冲程()开始路径()弧(300.5、179.5、4、0、6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(300.5、179.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”冲程()开始路径()弧(300.5、154.5、4、0、6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(300.5、154.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”冲程()开始路径()弧(325.5204.5,4,0,6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(325.5、204.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”冲程()开始路径()弧(325.5、179.5、4、0、6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(325.5、179.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”冲程()开始路径()弧(325.5、154.5、4、0、6.283185307179586)fillStyle=“rgb(0255,0)”填充()开始路径()弧(325.5、154.5、4.6、0、6.283185307179586)fillStyle=“rgb(0,0,0)”冲程()

变量限制在本地范围内:

v=992;a=[];重复(6,v,a=a++[v]);
[1, 2, 3, 4, 5, 6]
v(v)
992

forall循环:对于所有人(list›,expr›)

描述:此操作员接受列表›作为第一个论点。它产生一个循环,其中›出口›针对列表的每个条目进行评估。在每次迭代中,运行变量#获取相应列表项的值。

例子:

a=[“this”,“is”,“a”,“list”];对于所有(a,println(#))

此代码片段生成输出

列表

forall循环:对于所有人(list›、var›和expr›)

描述:类似对于所有人(list›,expr›),但运行变量现在已命名var›.同样,变量是表达式的局部变量。

v=993;对于所有([1,2,3],v,println(v))
12
v(v)
993

强制评估:评估(expr›、modif1›、modif2›…)

CindyJS中尚不可用!

描述:此运算符强制评估表达式“expr›”。可以使用修饰符列表替换表达式的自由变量。替代变量仅在本地赋值。然后,将变量设置为评估之前的值。

例子:此代码片段的计算结果为7.

跳过测试:“eval”尚未实现。
评估(x+y,x->2,y->5)
7

变量管理

以下描述解释了如何有意创建或销毁局部变量。用户应该知道,对于大多数情况,只需为变量赋值就可以动态创建变量。默认情况下,这些变量是全局变量。如果生成递归函数或想要创建函数库,则可能需要或建议使用局部变量。

创建变量:createvar(varname›)

销毁变量:删除变量(变量名›)

描述:这些操作符有助于手动管理局部变量的创建。创建值(x)创建一个名为x个,同时将旧值放入堆栈中。移除变量(x)删除局部变量并从堆栈中恢复值。请注意,通常不必显式创建变量。它们在首次使用时自动生成。这个创造者删除变量只有在希望为代码的某个局部区域保留变量名时,才应使用运算符。

例子:

x=10;println(“x现在是”+x);创造价值(x);x=5;println(“x现在是”+x);移除变量(x);println(“x现在是”+x);

此代码片段生成输出

x现在是10x现在是5x现在是10

为函数创建多个局部变量:地区性(name1›,name2›,…)

描述:此语句可以在函数的开头使用。它的效果几乎与地方的语句并创建几个局部变量。然而,与地方的语句中,当函数终止时,将自动删除变量。因此,显式调用释放不需要。通常使用起来更方便区域性的而不是使用地方的.


变量在CindyScript中具有某种持久性。如果在语句中设置了变量的值,它将保持设置状态,直到更改为止。可以使用以下运算符显式清除变量。通常,将清除()声明初始化程序事件。

清除所有变量:清除()

CindyJS中尚不可用!

描述:此运算符清除所有变量。


清除特定变量:清除(Şvar›)

CindyJS中尚不可用!

描述:此运算符清除变量var›.


对象关键变量的句柄:钥匙(var›)

CindyJS中尚不可用!

描述:通过对象›:按键›=某物›宣言。

例子:可以将自由选择的键下的值与对象关联。这可以通过类似于以下代码的代码来完成:

跳过测试:尚不支持键。
A: “年龄”=34;A: “发色”=“棕色”;

这些赋值也可以通过类似的语法进行访问,如:

跳过测试:尚未支持密钥。
println(A:“年龄”);println(A:“发色”);

操作员钥匙返回对象的所有关联键的列表。所以在这个例子中

跳过测试:尚不支持键。
println(键(A));

将返回列表[“年龄”,“发色”].