Pascal - 陣列



Pascal 程式語言提供了一種稱為陣列的資料結構,它可以儲存大小固定的相同型別元素的順序集合。陣列用於儲存資料集合,但通常更方便地將陣列視為相同型別變數的集合。

無需宣告單獨的變數,例如 number1、number2、… 和 number100,您可以宣告一個數組變數,例如 numbers,並使用 numbers[1]、numbers[2]、… 和 numbers[100] 來表示單個變數。陣列中的特定元素透過索引訪問。

所有陣列都由連續的記憶體位置組成。最低地址對應於第一個元素,最高地址對應於最後一個元素。

請注意,如果您想要從索引 0 開始的 C 風格陣列,只需將索引從 1 開始改為 0 即可。

Arrays in Pascal

宣告陣列

要在 Pascal 中宣告陣列,程式設計師可以宣告型別然後建立該陣列的變數,或者直接宣告陣列變數。

一維陣列的型別宣告的一般形式為:

type
   array-identifier = array[index-type] of element-type;

其中:

  • 陣列識別符號 - 表示陣列型別的名稱。

  • 索引型別 - 指定陣列的下標;它可以是除實數以外的任何標量資料型別。

  • 元素型別 - 指定要儲存的值的型別。

例如:

type
   vector = array [ 1..25] of real;
var
   velocity: vector;

現在,velocity 是一個向量型別的變數陣列,足以容納最多 25 個實數。

要從索引 0 開始陣列,宣告將為:

type
   vector = array [ 0..24] of real;
var
   velocity: vector;

陣列下標的型別

在 Pascal 中,陣列下標可以是任何標量型別,例如整數、布林值、列舉或子範圍,但實數除外。陣列下標也可以具有負值。

例如:

type
   temperature = array [-10 .. 50] of real;
var
   day_temp, night_temp: temperature;

讓我們來看另一個下標為字元型別的例子:

type
   ch_array = array[char] of 1..26;
var
   alphabet: ch_array;

下標可以是列舉型別:

type
   color = ( red, black, blue, silver, beige);
   car_color = array of [color] of boolean;
var
   car_body: car_color;

初始化陣列

在 Pascal 中,陣列是透過賦值初始化的,可以透過指定特定的下標或使用 for-do 迴圈來完成。

例如:

type
   ch_array = array[char] of 1..26;
var
   alphabet: ch_array;
   c: char;

begin
   ...
   for c:= 'A' to 'Z' do
   alphabet[c] := ord[m];  
   (* the ord() function returns the ordinal values *)

訪問陣列元素

透過索引陣列名稱來訪問元素。這是透過在陣列名稱後方方括號中放置元素的索引來完成的。例如:

a: integer;
a: = alphabet['A'];

上面的語句將從名為 alphabet 的陣列中獲取第一個元素並將該值賦給變數 a。

以下是一個例子,它將使用上述三個概念,即宣告、賦值和訪問陣列:

program exArrays;
var
   n: array [1..10] of integer;   (* n is an array of 10 integers *)
   i, j: integer;

begin
   (* initialize elements of array n to 0 *)        
   for i := 1 to 10 do
       n[ i ] := i + 100;   (* set element at location i to i + 100 *)
    (* output each array element's value *)
   
   for j:= 1 to 10 do
      writeln('Element[', j, '] = ', n[j] );
end.

編譯並執行上述程式碼後,將產生以下結果:

Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109
Element[10] = 110

詳細的 Pascal 陣列

陣列對於 Pascal 非常重要,需要更多詳細資訊。以下是 Pascal 程式設計師應該瞭解的與陣列相關的幾個重要概念:

序號 概念與描述
1 多維陣列

Pascal 支援多維陣列。多維陣列最簡單的形式是二維陣列。

2 動態陣列

在這種型別的陣列中,初始長度為零。必須使用標準的 SetLength 函式設定陣列的實際長度。

3 緊湊陣列

這些陣列是按位打包的,即每個字元或真值儲存在連續的位元組中,而不是使用一個儲存單元,通常是一個字(4 個位元組或更多)。

4 將陣列傳遞給子程式

您可以透過指定陣列的名稱而不指定索引來將指向陣列的指標傳遞給子程式。

廣告