SPARKS 语言是一种算法描述语言,这种语言具有精简易懂的特点,适用于模块化程序设计过程中对于各模块的算法进行描述交流,通过使用SPARKS 语言,在模块细化的过程中,可以忽略模块的细节而将关键的算法思想表达出来。

1、基本数据类型

整型、实型、布尔型、字符型

1
2
3
4
5
6
7
integer x,y;

double z,w;

boolean a,b;

char c,d;

2、赋值语句

将y的值赋给x

1
x<-y

3、两个布尔值

true false

为了产生这两个布尔值,设置了逻辑运算符

and or not

关系运算符

< <= = != >= >

4、数组表示

一个n维的数组可以用以下形式说明:
integer A(l1:u1, l2:u2, ..., ln,un)
下界为li上界为ui,1<= i <= n。li和ui都是整数或整型变量,如果某一维的下界为1,则下界li可以不写出。

例如:
integer A(5,7:20)

5、 条件语句

1
2
3
4
5
if cond then
S1
else
S2
endif

其中cond是一个布尔表达式。假设布尔表达式按照“短路”方式求值。

另一种语句是case语句,此语句可以很容易地把数个选择对象区别开来,而无需使用多重if-then-else语句。

1
2
3
4
5
6
7
case
:cond1: S1
:cond2: S2
......
:condn: Sn
:else : Sn+1
endcase

其中else子句并不是必需的。

6、循环语句

while循环语句

1
2
3
while cond do
S
repeat

当cond为true的时候,循环,S有可能不会被执行

loop-until-repeat循环语句

1
2
3
loop
S
until cond repeat

当cond为false的时候循环,S至少执行一次

for循环语句

1
2
3
for vble<-start to finish by increment do
S
repeat

其中by incerment不是必须的,默认为+1。vble是变量,start、finish、increment可以是整型、实型变量,或算术表达式。

loop循环语句

1
2
3
loop
S
repeat

可以使用go to label退出,或使用exit退出,exit相当于C语言值的break。

7、过程

一个完整的sparts程序是一个或多个过程的集合,第一个过程作为主程序。单个过程形式如下:

1
2
3
4
procedure NAME(<形参表>)
<说明部分>
S
end NAME

过程可以是纯子例行程序,也可以是一个函数。函数中,返回值由放在紧接return的一对括号中的值来表示。例如
return (<表达式>)

8、输入输出

read a,b

输入的数据依次送给a,b

print x,y

依次输出x,y