wangjicheng886的个人空间 https://blog.eetop.cn/1774723 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

skill language user guide 50--52

已有 570 次阅读| 2023-6-24 22:09 |系统分类:芯片设计

The for Function 

The index in a for expression is saved before the for loop and is restored to its saved value  after the for loop is exited. SKILL does most of its error checking during execution. Error  messages involving for expressions can be obscure. Be sure to 

在for循环中,索引值会在进入for循环之前被保存,并在退出for循环后恢复到保存的值。SKILL大部分的错误检查都是在执行过程中完成的。与for表达式相关的错误信息可能会比较难理解。请务必:

Be aware of the placement of the parentheses: for( … ).  注意圆括号的放置位置:for( ... )。

Avoid white space immediately after the for keyword.      避免在for关键字之后紧接着有空格。

The example below adds the integers from one to five to an intermediate sum. i is a variable  used as a counter for the loop and as the value to add to sum. Counting begins with one and  ends with the completion of the fifth loop. i increases by one for each iteration through the  loop

下面的例子将整数1到5加到一个中间总和中。i是用作循环计数器的变量,并作为要添加到总和的值。计数从1开始,并在完成第五次循环后结束。每次通过循环迭代时,i增加一次。


sum = 0       ;创建一个变量sum并将其初始化为0

for( i 1 5    ;使用for循环,设定计数器变量i的初始值为1,结束值为5。

     sum = sum + i  

     println( sum )    ;在每次循环中,将i的值加到sum上,并将结果打印输出。

     

=> t


SKILL prints the value of sum with a carriage return for each pass through the loop:1

3

6

10

15

The for function always returns t.


The foreach Function 

The foreach function is very useful for performing operations on each element in a list. Use  the foreach function to evaluate one or more expressions for each element of a list of  values.

foreach函数非有用,可以对列表中的每个元素执行操作。使用foreach函数可以对值列表的每个元素求解一个或多个表达式。


rectCount = lineCount = polygonCount = 0      ;创建变量rectCount、lineCount和polygonCount,并将它们都初始化为0。

shapeTypeList = '( "rect" "polygon" "rect" "line" ) ;创建列表,其中包含元素:"rect"、"polygon"、"rect"和"line"。

foreach( shapeType shapeTypeList    ;代码使用foreach循环遍历shapeTypeList列表中的每个元素,并将当前元素的值赋给变量shapeType

         case( shapeType            ;在foreach循环的case部分,针对不同的shapeType(即列表中的元素)进行判断:

                  ( "rect" ++rectCount ) ;如果shapeType是"rect",则通过自增运算符(++)将rectCount加1。

                  ( "line" ++lineCount ) ;如果shapeType是"line",则通过自增运算符(++)将lineCount加1。

                  ( "polygon" ++polygonCount ) ;如果shapeType是"polygon",则通过自增运算符(++)将polygonCount加1。

                  ( t ++miscCount ) ;如果shapeType不是上述三种情况,则通过自增运算符(++)将miscCount加1(该变量在代码中未被定义)。

                  );case  ;循环结束后,可以得到每个形状类型出现的次数,分别保存在rectCount、lineCount和polygonCount中。

         ) ; foreach  

=> ( "rect" "polygon" "rect" "line" )


When evaluating a foreach expression, SKILL determines the list of values and repeatedly  assigns successive elements to the index variable, evaluating each expression in the  foreach body. The foreach expression returns the list of values over which it iterates.

在评估foreach表达式时,SKILL确定值列表,并不断将连续的元素分配给索引变量,评估foreach主体中的每个表达式。foreach表达式返回迭代的值列表。

In the example: 

The variable shapeType is the index variable. Before entering the foreach loop, SKILL  saves the current value of shapeType. SKILL restores the saved value after completing  the foreach loop. 

变量shapeType是索引变量。在进入foreach循环之前,SKILL保存了shapeType的当前值,并在完成foreach循环后恢复保存的值。

The variable shapeTypeList contains the list of values. SKILL successively assigns  the values in shapeTypeList to shapeType, evaluating the body of the foreach loop  once for each separate value.  

变量shapeTypeList包含值列表。SKILL逐个将shapeTypeList中的值赋给shapeType,在每个单独的值上评估foreach循环的主体部分。

The body of the foreach loop is a single case expression.  

foreach循环的主体是一个单独的case表达式。

The return value of the foreach loop is the list contained in variable shapeTypeList.  

foreach循环的返回值是变量shapeTypeList中包含的列表。

If you have executed the example above, you can examine the effect of the iterations by typing  the name of the counter:

如果你执行了上面的示例,可以通过输入计数器的名称来检查迭代的效果。


rectCount    => 2 

lineCount    => 1 

polygonCount => 1


Developing a SKILL Function 

Developing a SKILL function includes the following tasks.  开发一个SKILL函数包括以下任务:

Grouping several SKILL statements into a single SKILL statement  将多个SKILL语句分组为单个SKILL语句

Declaring a SKILL function with the procedure function  使用procedure function声明一个SKILL函数

Defining function parameters  

Maintaining your source code  

Loading your SKILL source code  

Redefining a SKILL function


Grouping SKILL Statements 

Sometimes it is convenient to group several SKILL statements into a single SKILL statement.  Use braces { and } to group a collection of SKILL statements into a single SKILL statement.  The return value of the single statement is the return value of the last SKILL statement in the  group. You can assign this return value to a variable.

有时候将多个SKILL语句分组为一个单独的SKILL语句是很方便的。

使用大括号 { 和 } 将一组SKILL语句分组为一个单独的SKILL语句。

这个单一语句的返回值是该组中最后一个SKILL语句的返回值。你可以将这个返回值赋给一个变量。


This example computes the pixel height of bBox and assigns it to the bBoxHeight variable:

这个例子计算了bBox的像素高度,并将其赋值给变量bBoxHeight:

bBoxHeight = {  

     bBox = list( 100:150 250:400)  ;定义了一个名为bBox的列表,其中包含两个元素:100:150和250:400。

     ll = car( bBox )    ;将bBox的第一个元素赋值给变量ll。

     ur = cadr( bBox )   ;将bBox的第二个元素赋值给变量ur。

     lly = yCoord( ll )  ;调用函数yCoord,并将ll作为参数传入,将返回值赋给变量lly。函数yCoord用于获取一个点的y坐标。

     ury = yCoord( ur )  ;调用函数yCoord,并将ur作为参数传入,将返回值赋给变量ury。

     ury - lly    ;计算ury - lly,得到边界框的高度。

     }

The ll and ur variables hold the lower-left and upper-right coordinates of the bounding  box.  

ll和ur变量保存了边界框的左下角和右上角坐标。

The xCoord and yCoord functions return the x and y coordinate of a point.  

xCoord和yCoord函数返回一个点的x和y坐标。

The ury - lly expression computes the height. This last statement in the group  determines the return value of the group. 

ury - lly表达式计算出高度。这个组中的最后一条语句确定了组的返回值。 

The return value is assigned to the bBoxHeight variable.

返回值被赋给bBoxHeight变量。


You can declare the variables ll, ur, ury, and lly to be local variables. Use the prog or  let functions to define a collection of local variables for a group of several statements.  However, defining local variables is not recommended for novices.你可以将变量ll、ur、ury和lly声明为局部变量。使用prog或let函数可以为一组多条语句定义一组局部变量。

然而,对于初学者来说,不推荐定义局部变量。





点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 28

    粉丝
  • 7

    好友
  • 19

    获赞
  • 8

    评论
  • 133

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 10:26 , Processed in 0.009884 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部