2016-04-28 234 views
1

如何在if語句中使用多個條件?如何在Ada中的if語句中使用多個條件

例如,用戶被詢問的一組由節目問題:

1)輸入的高度介於0和1000

(在用戶數據類型)

2.)在0和500之間

輸入速度

(在用戶數據類型)

3.)輸入溫度介於0和200

(在用戶數據類型)

那麼程序打印背面

  1. 高度=用戶值
  2. 速度=用戶值
  3. 溫度=用戶值//忽略那些列表編號

我在已經設置我( .ads)文件中,每個範圍都有一個批處理值。

我想創建一個具有多個條件的if語句。 在僞:如果速度=臨界速度&溫度=臨界溫度&高度=臨界高度 然後打印(「一些信息」) 別的什麼也不做

回答

5

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

4

在阿達您將使用布爾運算符:

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