阿摩線上測驗 登入

申論題資訊

試卷:104年 - 104 關務特種考試_四等_資訊處理:程式語言概要#24070
科目:程式語言
年份:104年
排序:0

申論題內容

一、靜態類型程式語言需使用某種類型等價(type equivalence)方法以決定類型是否可
匹配(compatible),最常見的是名稱等價和結構等價,請說明這兩種方法。考慮
下列程式碼(X : T 表示變數 X 之類型為 T),在這兩種類型等價方法下,請分別
說明其中那些變數的類型為可匹配。(20 分)
type T = array [1..10] of float
X : T
Y : T
Z : array [1..10] of integer

詳解 (共 3 筆)

詳解 提供者:吳政育

1.名稱等價:指變數用相同型態名稱宣告或一起宣告及滿足名稱等價。

Ex:

(相同型態宣告)
int a;

int b;

(一起宣告)

int a , b ;

結構等價:

變數的各項元件皆相同稱為結構等價。

當有陣列時必須考慮維度,若是二維陣列元素相同,但維度不同及不能稱為結構等價。

2.

XY為名稱等價

XYZ結構等價
(解釋同1)

詳解 提供者:114年高考上榜

名稱等價:當兩種類型具有相同的名稱時,它們被視為是等價的。在此情況下,只要它們的名稱相同,則它們的類型就相容。

 
結構等價:當兩種類型具有相同的結構時,它們被視為是等價的。在此情況下,必須檢查它們的結構,例如它們是否有相同的欄位數目和欄位類型,以及欄位之間的相對位置和大小等。如果它們具有相同的結構,則它們的類型就相容。
名稱等價:由於變數 X 和 Y 具有相同的類型名稱 T,因此它們的類型是相容的。
 
結構等價:由於變數 X 和 Y 具有相同的結構,即它們都是長度為 10 的浮點數陣列,因此它們的類型也是相容的。然而,變數 Z 具有不同的結構,因為它是一個長度為 10 的整數陣列,因此它的類型不相容於 X 和 Y。
詳解 提供者:hchungw

在靜態類型程式語言中,類型等價(type equivalence)是用來決定兩個類型是否可以相互匹配的重要概念。最常見的兩種類型等價方法是名稱等價(name equivalence)和結構等價(structural equivalence)。以下是這兩種方法的詳細說明:

名稱等價(Name Equivalence)

名稱等價指的是兩個類型如果具有相同的名稱,則它們被認為是等價的。這種方法強調類型定義的名稱,而不是它們的內部結構。

結構等價(Structural Equivalence)

結構等價指的是兩個類型如果具有相同的結構,即使它們的名稱不同,也被認為是等價的。這種方法強調類型的內部結構,而不是它們的名稱。

考慮的程式碼

pascal
複製程式碼
type T = array [1..10] of float X : T Y : T Z : array [1..10] of integer

分析

根據以上程式碼和兩種類型等價方法,分析變數類型的可匹配性。

名稱等價

根據名稱等價方法:

  • X 和 Y 的類型都是 T,因此它們是等價的,因為它們有相同的類型名稱 T。
  • Z 的類型是 array [1..10] of integer,與 X 和 Y 的類型名稱 T 不同,因此 Z 與 X 和 Y 不等價。

名稱等價結果

  • X 和 Y 是可匹配的。
  • Z 與 X 和 Y 不可匹配。

結構等價

根據結構等價方法:

  • X 和 Y 的類型都是 array [1..10] of float,即使它們是通過名稱 T 定義的,但內部結構相同,因此它們是等價的。
  • Z 的類型是 array [1..10] of integer,其結構是 array [1..10],但是元素類型為 integer,這與 X 和 Y 的元素類型 float 不同,因此它們不等價。

結構等價結果

  • X 和 Y 是可匹配的。
  • Z 與 X 和 Y 不可匹配。

總結

  • 名稱等價

    • X 和 Y 是可匹配的(同樣類型 T)。
    • Z 與 X 和 Y 不可匹配(不同類型名稱)。
  • 結構等價

    • X 和 Y 是可匹配的(結構相同 array [1..10] of float)。
    • Z 與 X 和 Y 不可匹配(結構不同,array [1..10] of integer 與 array [1..10] of float)。

這兩種類型等價方法在程式設計中的應用場景和語言特性不同,理解這些方法有助於更好地進行類型匹配和程式設計。