我如何在if语句中使用多个条件?
EG。程序会向用户询问一组问题:
1。)输入0到1000之间的高度
(用户输入数据)
2。)输入0到500之间的速度
(用户输入数据)
3.)输入0到200之间的温度
(用户输入数据)
程序然后打印回来
我在我的(.ads)文件中设置了每个范围都有一个临界值。
我想创建一个包含多个条件的if语句。 in pseudo:如果速度=临界速度&温度=临界温度&海拔=临界海拔 然后打印(“一些消息”) 否则什么都不做
答案 0 :(得分:5)
if_statement ::=
if condition then
sequence_of_statements
{elsif condition then
sequence_of_statements}
[else
sequence_of_statements]
end if;
condition ::= boolean_expression
(即,恰好是布尔值的表达式); syntax of “expression”是
expression ::=
relation {and relation} | relation {and then relation}
| relation {or relation} | relation {or else relation}
| relation {xor relation}
所以你的代码看起来像
if velocity = critical_velocity
and temperature = critical_temperature
and altitude = critical_altitude
then
print ("some message”);
else
null;
end if;
你可以省略else
条款,如果出于某种原因你不应该检查第一部分的其余条件,你可以说and then
而不是普通and
已经是False
。这称为短路评估,它不是不是 Ada中的默认值(它在C中)。
if X /= 0 and Y / X > 2 then
即使X为0,也会评估Y / X
。
答案 1 :(得分:4)
在Ada中,您将使用和,或和不是布尔运算符:
if Velocity = Critical_Velocity
and Temperature = Critical_Temperature
and Altitude = Critical_Altitude
then
Ada.Text_IO.Put_Line ("Crash");
else
...
end if;
评估订单很重要时,您将使用然后或或其他语法(否则编译器可以更改优化顺序)。 表达式将以'然后'/'或其他'顺序进行评估。
if Velocity = Critical_Velocity
and then Temperature = Critical_Temperature
and then Altitude = Critical_Altitude
then
Ada.Text_IO.Put_Line ("Crash");
else
...
end if;
使用或,您可以写如下:
if Velocity = Critical_Velocity
or else Temperature = Critical_Temperature
or else Altitude = Critical_Altitude
then
Ada.Text_IO.Put_Line ("Crash");
else
...
end if;
请注意,您不能将和以及或混合在一起(因为这会给开发人员带来许多困惑)。 如果你这样做,你必须使用括号括起来。
if (Velocity = Critical_Velocity and Temperature = Critical_Temperature)
or else Altitude = Critical_Altitude
then
Ada.Text_IO.Put_Line ("Crash");
else
...
end if;