Fuxi语言的循环问题(fuxi官网提供)

Fuxi语言的循环问题
和过程型语言不同, Fuxi语言没有象C、JAVA等那样的for循环语句。但是程序中不可能没有重复执行的过程,Fuxi语言是怎样解决这一问题的呢?

Fuxi语言是一种多范型程序设计语言,具有强大的表处理功能。我们可以利用其表扫描函数scan来实现循环功能。在Fuxi的基本类库中,有一个Iterator类,它是一个成员为int型的整数表。Iterator类包括以下几个构造函数:

     
  public Iterator( int nCount ) = bool
public Iterator( int iStart, int iEnd ) = bool
public Iterator( int iStart, int iEnd, int iStep ) = bool  
     
我们可以定义一个Iterator对象,设定循环的次数、范围,然后对该Iterator进行扫描,便可实现循环功能。例如:

     
 
import fuxi.*

public class IterApp: Applet

{

 Iterator i(10)

 public Activate() =

          i.scan(){ System.Console.Println( "Hello,World!" ) }

}

 
     
该程序就可以循环打印10次“Hello, World!”

一个值得注意的问题是: scan()是函数, 是一个高阶函数, 其执行的结果是一个值。这一点和过程型语言(如C、JAVA等)的for 循环语句不同。上面的例子是scan()函数的一个最简单的应用。scan()函数的完整定义如下:

     
  <表变量名>.scan(<成员变量名>, <运算符>, <初始值>, <条件>) {…}  
     
scan()函数的含义是,把一个表的成员依次的取出,如果<条件>为true,则作用到后面的{…}上,并把作用的结果应用到scan()函数所指定的运算符上;如果<条件>false,直接退出,并返回结果。

在缺省的情况下,<运算符>为&&;<初始值>为true;而<条件>为true。对于不同的运算符,系统定义了不同的<初始值>:&&为true, ||为false,其它为0。

如果我们想计算1..100的和,就可以这样编程:

     
 
import fuxi.*

public class 累加应用: Applet

{

 public Activate() =

 let

 {

      Iterator 循环量 = Iterator(1, 100)

 }

 in

 {

       System.Console.Println( "1 +...+ 100 = ",

                           循环量.scan(x, +){x} }

 }

}

这里写图片描述
 
     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值