在分支代码中,我们需要检查一个或者多个条件,根据检查结果决定执行不同的代码,或者返回不同的结果。集算器中实现分支结构的语句是if/else,if/else可以有如下几种格式
当if 后面的条件成立时执行其后语句,否则执行else后的语句,else部分可省略。else和if必须写在同一行上。执行后,if所在格的格值是x的计算结果。
|
A |
B |
C |
D |
1 |
-14 |
|
|
|
2 |
if A1>=0 |
>A3=A1 |
else |
>A3=-A1 |
3 |
|
|
|
|
其中,A2中的结果如下:
由于A2中的结果为false,因此执行else部分,即D2中的代码,执行后,A3中的结果如下:
实际上,A3中获得的结果是A1中数的绝对值。
有时,并没有else部分,而只是决定if语句后面的代码是否执行:
|
A |
B |
C |
1 |
=demo.query("select * from EMPLOYEE") |
|
|
2 |
for A1 |
|
|
3 |
|
if age(A2.BIRTHDAY)>=40 |
>A4=A4+1 |
4 |
|
|
|
A2中循环每位员工的信息,在B3中判断,每当某位员工的年龄大于或等于40岁,就在A4中计数,最终A4中计算出年龄不小于40岁的员工总数:
在判断语句中,可以使用下面的一些逻辑连接符:
Ø a&&b
a与b,当且仅当条件a与b 同时成立时,结果才为true。
Ø a||b
a或b,当且仅当条件a与b 中至少一个成立时,结果即为true。
Ø !a
非a,当且仅当条件a不成立时,结果才为true。
|
A |
B |
C |
1 |
=demo.query("select * from EMPLOYEE") |
|
|
2 |
for A1 |
|
|
3 |
|
if age(A2.BIRTHDAY)>=40 && A2.GENDER=="M" |
>A4=A4+1 |
4 |
|
|
|
A4中计算出年龄不小于40岁的男员工总数:
当x成立时,计算表达式a并返回结果,否则计算表达式b并返回结果。
有时,可以用if函数来替代前面提到的if…else…代码,使得语句更简洁。
|
A |
1 |
-14 |
2 |
=if(A1>=0,A1,-A1) |
A2中获得A1的绝对值如下:
当x成立时执行if的代码块,否则执行else的代码块,else部分可省略。else和if必须写在同一列上。与一些程序语言中不同,在集算器中,使用代码块来决定语句的作用范围,而不使用{}等符号,或者end if之类的语句。
|
A |
B |
C |
1 |
=demo.query("select * from EMPLOYEE") |
|
|
2 |
Male |
[] |
0 |
3 |
Female |
[] |
0 |
4 |
for A1 |
if A4.GENDER=="M" |
>B2=B2|A4.(NAME+" " +SURNAME) |
5 |
|
|
>C2+=1 |
6 |
|
else |
>B3=B3|A4.(NAME+" " +SURNAME) |
7 |
|
|
>C3+=1 |
例子中,C4,C5组成的if代码块和C6,C7组成的else代码块,根据B4中的判断结果选择执行,分别计算男员工和女员工的名单,以及男员工和女员工的总人数。计算结束后,可以在B2,B3,C2,C3中看到结果:
这是集算器中多分支语句的代码,可以一直重复写下去,if/else if/else必须写在同一列上。再次强调,没有对应的end if语句,集算器利用代码块范围决定if语句何时结束。
|
A |
B |
C |
1 |
4 |
* |
7 |
2 |
if B1=="+" |
|
|
3 |
|
>B12=A1+C1 |
|
4 |
else if B1=="-" |
|
|
5 |
|
>B12=A1-C1 |
|
6 |
else if B1=="*" |
|
|
7 |
|
>B12=A1*C1 |
|
8 |
else if B1=="/" |
|
|
9 |
|
>B12=A1/C1 |
|
10 |
else |
|
|
11 |
|
>B12="Error" |
|
12 |
Result: |
|
|
B12中计算A1,B1,C1拼成表达式的计算结果,如下:
在if或else的代码块中,可以使用分支代码进一步判断。
|
A |
B |
C |
1 |
2016-2 |
|
|
2 |
=A1.split@p("-") |
>year=A2(1) |
>month=A2(2) |
3 |
if [1,3,5,7,8,10, 12].pos( month)>0 |
>A8=31 |
|
4 |
else if [4,6,9,11 ].pos( month )>0 |
>A8=30 |
|
5 |
else if month==2 |
if year%400==0 |
>A8=29 |
6 |
|
else if year%100!=0 && year%4==0 |
>A8=29 |
7 |
|
else |
>A8=28 |
8 |
|
|
|
在这个例子中,A1中输入包含年月的字符串,中间用"-"分隔,后面的代码计算出这个月共有多少天。计算时,首先根据月份判断,对于2月还需要进一步判断这一年是否是闰年。计算完毕后,A8中结果如下: