分支流程

阅读(12978) 标签: 分支流程,

在分支代码中,我们需要检查一个或者多个条件,根据检查结果决定执行不同的代码,或者返回不同的结果。集算器中实现分支结构的语句是if/elseif/else可以有如下几种格式

单行的 if x … else …

if 后面的条件成立时执行其后语句,否则执行else后的语句,else部分可省略elseif必须写在同一行上。执行后,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

ab,当且仅当条件ab 同时成立时,结果才为true

Ø  a||b

ab,当且仅当条件ab 中至少一个成立时,结果即为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岁的男员工总数:

函数 if(x,a,b)

x成立时,计算表达式a并返回结果,否则计算表达式b并返回结果。

有时,可以用if函数来替代前面提到的if…else…代码,使得语句更简洁。

 

A

1

-14

2

=if(A1>=0,A1,-A1)

A2中获得A1的绝对值如下:

代码块的 if x … else …

x成立时执行if的代码块,否则执行else的代码块,else部分可省略。elseif必须写在同一列上。与一些程序语言中不同,在集算器中,使用代码块来决定语句的作用范围,而不使用{}等符号,或者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 x … else if y …

这是集算器中多分支语句的代码,可以一直重复写下去,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拼成表达式的计算结果,如下:

分支代码的嵌套

ifelse的代码块中,可以使用分支代码进一步判断。

 

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中结果如下: