如何在Ada中的if语句中使用多个条件

问题描述:

如何在if语句中使用多个条件?如何在Ada中的if语句中使用多个条件

例如,用户被询问的一组由节目问题:

1)输入的高度介于0和1000

(在用户数据类型)

2.)在0和500之间

输入速度

(在用户数据类型)

3.)输入温度介于0和200

(在用户数据类型)

那么程序打印背面

  1. 高度=用户值
  2. 速度=用户值
  3. 温度=用户值//忽略那些列表编号

我在已经设置我( .ads)文件中,每个范围都有一个批处理值。

我想创建一个具有多个条件的if语句。 在伪:如果速度=临界速度&温度=临界温度&高度=临界高度 然后打印(“一些信息”) 别的什么也不做

syntax of an if-statement

if_statement ::= 
    if condition then 
     sequence_of_statements 
    {elsif condition then 
     sequence_of_statements} 
    [else 
     sequence_of_statements] 
    end if; 

syntax of “condition”

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条款,你可以说的不是纯andand then如果由于某种原因,你不应该检查其余条件如果第一部分已经是False。这称为短路评估,它的不是 Ada中的默认值(它在C中)。

if X /= 0 and Y/X > 2 then 

评估Y/X即使X为0。

+0

谢谢西蒙!一个非常迭代的细分,非常有帮助:) – DaveSwans

+0

这里是一个链接到另一个问题,我不能问在评论中,因为它太长的评论。如果你可以请摆脱一些光,这将非常感激。 http://stackoverflow.com/questions/36957726/shortened-method-to-reduce-statements-in-an-ada-procedure – DaveSwans

在阿达您将使用布尔运算符:

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; 
+0

也有异或。 – darkestkhan