Problem

1/10

Mảng (danh sách). Giới thiệu

Theory Click to read/hide

Lưu trữ dữ liệu

Giả sử bạn đã phát triển một trò chơi trên máy tính có tên là "Người dùng thù địch", trong đó người chơi cạnh tranh với một giao diện máy tính phức tạp và không thân thiện. Bây giờ bạn cần viết một chương trình theo dõi doanh thu hàng tháng của trò chơi này trong khoảng thời gian 5 năm. Hoặc giả sử bạn cần kiểm kê Thẻ giao dịch Hacker Hero.
Bạn sẽ sớm đi đến kết luận rằng bạn cần nhiều hơn các loại dữ liệu cơ bản đơn giản để lưu trữ và xử lý thông tin.
 

Mảng (danh sách). Giới thiệu

Để thuận tiện khi làm việc với một lượng lớn dữ liệu, một nhóm các ô được đặt tên chung. Nhóm các ô như vậy được gọi là mảng
Mảng – nó là một nhóm các ô nhớ cùng loại, nằm cạnh nhau và có tên chung. Mỗi ô trong nhóm có một số duy nhất.

Khi làm việc với mảng, bạn cần học cách giải quyết ba nhiệm vụ:
x cấp phát bộ nhớ có kích thước cần thiết cho một mảng
x ghi dữ liệu vào ô mong muốn
x đọc dữ liệu từ ô


Mảng trong Pascal


Theo truyền thống, Pascal sử dụng các mảng tĩnh như

var a: mảng [1..10] của số nguyên;

Các ranh giới của một mảng phải được thiết lập bởi các hằng số và bạn không thể thay đổi kích thước của một mảng trong khi chương trình đang hoạt động. Nhưng bạn có thể tạo một chỉ mục không chỉ của một số nguyên, mà còn của một ký tự hoặc kiểu liệt kê. Ví dụ, để đếm số lần xuất hiện của mỗi chữ cái, bạn có thể sử dụng một mảng

var LettersCount: mảng ['a'...'z'] số nguyên;

và làm việc với nó theo ý muốn của bạn:

LettersCount['z'] := 1; Đếm chữ cái['d'] := Đếm chữ cái['d'] + 1;

Những nhược điểm của các mảng như vậy đã được biết đến: nếu không biết trước có bao nhiêu phần tử sẽ cần được sử dụng, thì bộ nhớ có kích thước tối đa sẽ được phân bổ cho mảng. Kết quả là, trong hầu hết các trường hợp, chúng tôi "dự trữ cho tương lai" và đôi khi là "dự trữ" này hóa ra là không đủ. Đó là lý do tại sao các mảng như vậy được gọi là  tĩnh: kích thước của chúng là tĩnh và phải được đặt ở giai đoạn biên dịch chương trình. Tuy nhiên, trong Pascal có  mảng động, kích thước của các mảng này không chỉ có thể được đặt mà còn có thể thay đổi trong quá trình thực hiện chương trình. Chính những mảng này và lợi ích của việc sử dụng chúng sẽ được thảo luận thêm.

Tạo mảng

Khi tạo một mảng, không gian được phân bổ trong bộ nhớ (một số ô nhất định) 1) Mảng có thể được được tạo bằng cách liệt kê đơn giản các phần tử: var a: mảng số nguyên; SetLength(a, 3); a[0] := 1; a[1] := 2; a[2] := 3;
2) Mảng có thể bao gồm dữ liệu thuộc bất kỳ loại nào - số nguyên hoặc số thực, chuỗi ký tự  var a: mảng ký tự; SetLength(a, 3); a[0] := 'a'; a[1] := 'b'; a[2] := 'c'; 3) Một mảng luôn "biết" kích thước của bạn. Hàm  length được sử dụng để xác định kích thước của một mảng. Thường kích thước của mảng được lưu trữ trong một biến riêng để chương trình có thể dễ dàng thay đổi để làm việc với kích thước mảng khác. Ví dụ: N := 10; // trong biến N chúng ta lưu trữ kích thước của mảng SetLength(a, N); // thiết lập mảng và kích thước N writeln(độ dài(a)); // hiển thị kích thước của mảng Kích thước của một mảng có thể được thiết lập từ bàn phím.

Problem

Sửa đổi chương trình theo cách mà ở dòng thứ năm, giá trị của biến N được nhập từ bàn phím và ở dòng thứ sáu, một mảng có kích thước N được tạo (giá trị của các phần tử mảng có thể là bất kỳ)