什麼是控制語句?


控制語句是可以改變語句執行流程的語句。例如,If、If-else、Switch-Case、while-do 語句。在程式語言中,布林表示式用於

  • 改變控制流− 布林表示式用作語句中的條件表示式,以改變控制流。此類布林表示式的值隱含在程式中達到的位置。例如,if (E) S,如果到達語句 S,則表示式 E 應該為真。

  • 計算邏輯值− 布林表示式可以定義真或假值。可以使用帶有邏輯運算子的三地址指令平行計算此類布林表示式,如同算術表示式一樣。

布林表示式的設計用途由其語法上下文決定。例如,if 關鍵字後面的表示式用於改變控制流,而賦值右側的表示式可以表示邏輯值。此類語法上下文可以透過多種方式定義。它可以使用多個非終結符、使用繼承屬性或在解析期間設定標誌。它可以生成語法樹併為布林表示式的兩種不同用途呼叫多個過程。

示例1− 為以下程式碼生成三地址碼:

while (a < b) do

If (c < d) then

   x = y + z

else

   x = y – z.

解答

(1) If a < b goto(3)

(2) goto(11)

(3) If c < d goto(5)

(4) goto(8)

(5) t1 = y + z

(6) x = t1

(7) goto(1)

(8) t2 = y − z

(9) x = t2

(10) goto(1)

示例2− 為以下程式碼生成三地址碼:

while (A < C and B < D) do
If A=1 then C = C + 1
else while A≤D do A = A + 2.

解答

(1) If A < C goto(3)

(2) goto(15)

(3) If B < D goto(5)

(4) goto(15)

(5) If A = 1 goto(7)

(6) goto (10)

(7) T1 = C + 1

(8) C = T1

(9) goto (1)

(10) If A ≤ D goto (12)

(11) goto (1)

(12) T2 = A + 2

(13) A = T2

(14) goto (10)

示例3− 為以下程式碼生成三地址碼:

Switch (a)
{
   Case 1−
      b = c + d
      break;
   Case 2−
      e = f + g
      break;
}

解答

(1) If a = 1 goto(3)

(2) If a = 2 goto (6)

(3) t1 = c + d

(4) b = t1

(5) goto(9)

(6) t2 = f + g

(7) e = t2

(8) goto(9)

示例4− 為以下程式碼生成三地址碼:

while (i<5)
{
   i=i+1;
}

解答

(1)if i<5 goto(3)

(2) goto (5)

(3) i = i + 1

(4) goto (1)

示例5− 將以下控制語句轉換為三地址碼。

If (A < B 𝐎𝐑 C > D)
X = X + Y + Z

解答

(1) If A < B goto(4)

(2) If C > D goto(4)

(3) goto(7)

(4) T1 = X + Y

(5) T2 = T1 + Z

(6) X = T2

更新於:2021年11月5日

18K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告