SPARKS语言是一种不依赖具体计算机与具体程序设计语言的形式化语言,主要是用来描述或表达算法思想。
1. 基本数据类型:整型、实型、布尔型、字符型
integer x,y;
double z,w;
boolean a,b;
char c,d;
2. 赋值语句
x<-y
将y的值赋给x
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. 条件语句
if cond then
S1
else
S2
endif
其中cond是一个布尔表达式。假设布尔表达式按照“短路”方式求值。
另一种语句是case语句,此语句可以很容易地把数个选择对象区别开来,而无需使用多重if-then-else语句。
case
:cond1: S1
:cond2: S2
......
:condn: Sn
:else : Sn+1
endcase
其中else子句并不是必需的。
6. 循环语句
while循环语句
while cond do
S
repeat
当cond为true的时候,循环,S有可能不会被执行
loop-until-repeat循环语句
loop
S
until cond repeat
当cond为false的时候循环,S至少执行一次
for循环语句
for vble<-start to finish by increment do
S
repeat
其中by incerment不是必须的,默认为+1。vble是变量,start、finish、increment可以是整型、实型变量,或算术表达式。
loop循环语句
loop
S
repeat
可以使用go to label退出,或使用exit退出,exit相当于C语言值的break。
7. 过程
一个完整的sparts程序是一个或多个过程的集合,第一个过程作为主程序。单个过程形式如下:
procedure NAME(<形参表>)
<说明部分>
S
end NAME
过程可以是纯子例行程序,也可以是一个函数。函数中,返回值由放在紧接return的一对括号中的值来表示。例如
return (<表达式>)
8. 输入输出
read a,b
输入的数据依次送给a,b
print x,y
依次输出x,y