Pascal - Mảng

Ngôn ngữ lập trình Pascal cung cấp một cấu trúc dữ liệu được gọi là mảng, có thể lưu trữ một tập hợp tuần tự có kích thước cố định của các phần tử cùng kiểu. Mảng được sử dụng để lưu trữ một tập hợp dữ liệu, nhưng thường hữu ích hơn nếu coi một mảng như một tập hợp các biến cùng kiểu.

Thay vì khai báo các biến riêng lẻ, chẳng hạn như number1, number2, ... và number100, bạn khai báo một biến mảng chẳng hạn như số và sử dụng số [1], số [2] và ..., số [100] để biểu diễn các biến riêng lẻ. Một phần tử cụ thể trong một mảng được truy cập bởi một chỉ mục.

Tất cả các mảng bao gồm các vị trí bộ nhớ liền kề. Địa chỉ thấp nhất tương ứng với phần tử đầu tiên và địa chỉ cao nhất cho phần tử cuối cùng.

Xin lưu ý rằng nếu bạn muốn một mảng kiểu C bắt đầu từ chỉ mục 0, bạn chỉ cần bắt đầu chỉ mục từ 0, thay vì 1.

Khai báo Mảng

Để khai báo một mảng trong Pascal, người lập trình có thể khai báo kiểu rồi tạo các biến của mảng đó hoặc khai báo trực tiếp biến mảng.

Dạng khai báo kiểu chung của mảng một chiều là:

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

Ở đâu,

  • array-identifier - cho biết tên của kiểu mảng.

  • index-type- chỉ định chỉ số con của mảng; nó có thể là bất kỳ kiểu dữ liệu vô hướng nào ngoại trừ thực

  • element-type - chỉ định các loại giá trị sẽ được lưu trữ

Ví dụ,

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

Bây giờ, vận tốc là một mảng biến đổi kiểu vectơ, đủ để chứa tối đa 25 số thực.

Để bắt đầu mảng từ chỉ mục 0, khai báo sẽ là:

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

Các loại chỉ số mảng

Trong Pascal, chỉ số con mảng có thể thuộc bất kỳ kiểu vô hướng nào như, số nguyên, Boolean, liệt kê hoặc dải con, ngoại trừ thực. Các chỉ số con của mảng cũng có thể có giá trị âm.

Ví dụ,

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

Chúng ta hãy lấy một ví dụ khác trong đó chỉ số con có kiểu ký tự -

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

Chỉ số phụ có thể thuộc loại liệt kê -

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

Khởi tạo Mảng

Trong Pascal, mảng được khởi tạo thông qua phép gán, bằng cách chỉ định một chỉ số con cụ thể hoặc sử dụng vòng lặp việc cần làm.

Ví dụ -

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 *)

Truy cập các phần tử mảng

Một phần tử được truy cập bằng cách lập chỉ mục tên mảng. Điều này được thực hiện bằng cách đặt chỉ số của phần tử trong dấu ngoặc vuông sau tên của mảng. Ví dụ -

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

Câu lệnh trên sẽ lấy phần tử đầu tiên từ mảng có tên bảng chữ cái và gán giá trị cho biến a.

Sau đây là một ví dụ, sẽ sử dụng tất cả ba khái niệm được đề cập ở trên viz. khai báo, gán và truy cập mảng -

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.

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

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

Chi tiết mảng Pascal

Mảng rất quan trọng đối với Pascal và cần nhiều chi tiết hơn. Một vài khái niệm quan trọng sau đây liên quan đến mảng mà một lập trình viên Pascal cần phải hiểu rõ:

Sr.No Khái niệm & Mô tả
1 Mảng đa chiều

Pascal hỗ trợ mảng nhiều chiều. Dạng đơn giản nhất của mảng nhiều chiều là mảng hai chiều.

2 Mảng động

Trong loại mảng này, độ dài ban đầu bằng không. Chiều dài thực của mảng phải được đặt với tiêu chuẩnSetLength chức năng.

3 Mảng đóng gói

Các mảng này được đóng gói theo từng bit, tức là mỗi ký tự hoặc giá trị chân lý được lưu trữ trong các byte liên tiếp thay vì sử dụng một đơn vị lưu trữ, thường là một từ (4 byte trở lên).

4 Truyền mảng sang chương trình con

Bạn có thể chuyển cho chương trình con một con trỏ tới một mảng bằng cách chỉ định tên của mảng mà không có chỉ mục.