Giới thiệu 
Rất thường xuyên, khi làm việc với bất kỳ thông tin nào, bạn phải xử lý dữ liệu dạng bảng. Các chương trình hiện đại thường hoạt động với dữ liệu như vậy. Ví dụ đơn giản nhất là lập trình trò chơi trên bàn cờ ca rô: tic-tac-toe, cờ vua, cờ đam, v.v.

Trong toán học, những cấu trúc như vậy được gọi là ma trận.
 
Ma trận là một bảng hình chữ nhật được tạo thành từ các phần tử cùng loại (số, chuỗi, v.v. .)

Dữ liệu như vậy trong Pascal có thể được lưu trữ và xử lý dưới dạng mảng hai chiều - "mảng của mảng".
Để xử lý dữ liệu trong bảng, cần nhớ trạng thái của từng ô (cell). Mỗi ô có hai số: số hàng và số cột.
Trong ma trận, mỗi phần tử có hai chỉ số: đầu tiên là số hàng, sau đó là số cột. Việc đánh số hàng và cột bắt đầu từ số 0.
Ví dụ: phần tử A[1][2] là phần tử nằm ở hàng thứ hai và cột thứ ba.

Cũng giống như với mảng (danh sách) thông thường, để làm việc với ma trận, bạn cần học cách tạo, nhập, xử lý và hiển thị chúng.
 
Tạo ma trận
Nhiệm vụ
Tạo trong bộ nhớ một ma trận có kích thước nhất định chứa đầy các số không.

Để tạo ma trận chính xác, bạn cần buộc trình biên dịch tạo tất cả các chuỗi trong bộ nhớ dưới dạng các đối tượng khác nhau.
Để làm điều này, trước tiên bạn phải tạo một mảng trống, sau đó chỉ định số hàng trong ma trận, rồi chỉ định số phần tử trong mỗi hàng bằng cách sử dụng phương thức setLength() trong một vòng lặp: N := 3 M := 2 setLength(A, N); for i := 0 to N - 1 do   setLength(A[i], M);

 

Điền ma trận với các giá trị tùy ý
Sau khi tạo ma trận, bạn có thể điền vào nó các giá trị tùy ý. Vì mỗi phần tử có hai chỉ số nên cần sử dụng các vòng lặp lồng nhau for i := 0 to N bắt đầu for j := 0 to M bắt đầu A[i][j] := ...   kết thúc; kết thúc;  
Hiển thị ma trận

Hai vòng lặp lồng nhau thường được sử dụng để xử lý và hiển thị danh sách. Chu kỳ đầu tiên là theo số dòng, chu kỳ thứ hai là các phần tử bên trong dòng.
Để hiển thị từng dòng ma trận, phân tách các số bằng dấu cách trong một dòng, bạn cần viết đoạn sau:

for i := 0 to length(A) - 1 do begin // length(A) - trả về số hàng trong ma trận A     for j := 0 to length(A[i]) - 1 do // length(A[i]) - trả về số phần tử của chuỗi i         write(a[i][j], ' ');     writeln(); // tạo một dòng mới sau khi dòng được hiển thị kết thúc;

Giống nhau, nhưng vòng lặp không theo chỉ mục mà theo giá trị danh sách (vòng lặp for có thể lặp qua tất cả các phần tử trong danh sách (mảng), chuỗi):

for row in a do begin // duyệt qua tất cả các hàng của ma trận a     for elem in row do // lặp qua tất cả các phần tử trong hàng         write(elem, ' ');     writeln(); kết thúc;

Điền ma trận bằng các giá trị từ bàn phím

Cho phép chương trình nhận một mảng hai chiều làm đầu vào, ở dạng n dòng, mỗi dòng chứa m các số cách nhau bởi không gian. Bạn có thể lưu dữ liệu đó vào một mảng hai chiều như sau:

đọc(n, m); đặt độ dài (a, n); for i:= 0 to n - 1 bắt đầu     setlength(a[i], m);     for j := 0 to m - 1 do read(a[i][j]); kết thúc;

Mỗi phần tử của ma trận có hai chỉ số nên bạn cần sử dụng vòng lặp lồng nhau để lặp qua tất cả các phần tử.
Thông thường một ma trận được lặp theo từng hàng: vòng lặp ngoài lặp qua chỉ số hàng, còn vòng lặp trong lặp qua chỉ số cột.
Nhưng nếu cần, bạn có thể lặp qua ma trận và các cột, sau đó các chu kỳ được đảo ngược.