level 1
创新思维与方法
楼主
各位好,利用scheme遍了个控制别的软件的脚本程序,但是在用call/cc控制程序跳转时,出了问题,不知道这样编写对不,还请大侠指点。
本程序在没有添加第二个循环程序时,第一个循环可以正常运行;添加第二个循环后,程序只能运行到该循环的命令语句之前。
本程序的主要功能是:利用scheme语言作为脚本程序,控制别的软件运行,并根据获得压力值的大小来控制第二个循环实现不同的功能。
再次感谢 您的指导!
(define (pp)
(do ((cycle 1 (+ cycle 1))) ((> cycle 8)) ;第一个循环
(begin
(rpsetvar ' cycle cycle)
***********;命令语句
*********
(call/cc ;控制第二个循环的跳转
(lambda (return)
(do ((cyc 1 (+ cyc 1))) ((> cyc 10000)) ;第二个循环
(begin
(set! pressure (%rpgetvar 'pressure)) ;从外部软件获得压力值
(cond ((< pressure 4000) ;如果压力低于4000,则跳出第二个循环,继续执行第一个循环的命令。
(return))
((>= pressure 100000) ;如果压力值大于100000,则
****** )
((and (< pressure 100000) (>= pressure 50000)) ;如果压力值在50000-100000,则
******* )
((and (< pressure 50000) (>= pressure 30000)) ;如果压力值在3000-50000,则
****** )
(else ;除此之外,则
*****)
)
))))
**********;命令语句
*********
))
2015年06月08日 03点06分
1
本程序在没有添加第二个循环程序时,第一个循环可以正常运行;添加第二个循环后,程序只能运行到该循环的命令语句之前。
本程序的主要功能是:利用scheme语言作为脚本程序,控制别的软件运行,并根据获得压力值的大小来控制第二个循环实现不同的功能。
再次感谢 您的指导!
(define (pp)
(do ((cycle 1 (+ cycle 1))) ((> cycle 8)) ;第一个循环
(begin
(rpsetvar ' cycle cycle)
***********;命令语句
*********
(call/cc ;控制第二个循环的跳转
(lambda (return)
(do ((cyc 1 (+ cyc 1))) ((> cyc 10000)) ;第二个循环
(begin
(set! pressure (%rpgetvar 'pressure)) ;从外部软件获得压力值
(cond ((< pressure 4000) ;如果压力低于4000,则跳出第二个循环,继续执行第一个循环的命令。
(return))
((>= pressure 100000) ;如果压力值大于100000,则
****** )
((and (< pressure 100000) (>= pressure 50000)) ;如果压力值在50000-100000,则
******* )
((and (< pressure 50000) (>= pressure 30000)) ;如果压力值在3000-50000,则
****** )
(else ;除此之外,则
*****)
)
))))
**********;命令语句
*********
))

