Lập trình máy tính - Mảng

Hãy xem xét một tình huống mà chúng ta cần lưu trữ năm số nguyên. Nếu chúng ta sử dụng các khái niệm kiểu dữ liệu và biến đơn giản của lập trình, thì chúng ta cần năm biếnint kiểu dữ liệu và chương trình sẽ như sau:

#include <stdio.h>

int main() {
   int number1;
   int number2;
   int number3;
   int number4;
   int number5;
   
   number1 = 10;      
   number2 = 20;   
   number3 = 30;   
   number4 = 40; 
   number5 = 50;     

   printf( "number1: %d\n", number1);
   printf( "number2: %d\n", number2);
   printf( "number3: %d\n", number3);
   printf( "number4: %d\n", number4);
   printf( "number5: %d\n", number5);
}

Nó rất đơn giản, bởi vì chúng tôi chỉ phải lưu trữ năm số nguyên. Bây giờ giả sử chúng ta phải lưu trữ 5000 số nguyên. Chúng ta sẽ sử dụng 5000 biến?

Để xử lý những tình huống như vậy, hầu như tất cả các ngôn ngữ lập trình đều cung cấp một khái niệm gọi là array. Mảng là một cấu trúc dữ liệu, có thể lưu trữ một tập hợp kích thước cố định của các phần tử của cùng một kiểu dữ liệ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 là 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, ..., number99, bạn chỉ cần khai báo một biến mảng numberthuộc kiểu số nguyên và sử dụng number1 [0], number1 [1] và ..., number1 [99] để biểu diễn các biến riêng lẻ. Đây, 0, 1, 2, ..... 99 làindex kết hợp với var và chúng đang được sử dụng để đại diện cho các phần tử riêng lẻ có sẵn trong mảng.

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.

Tạo mảng

Để tạo một biến mảng trong C, một lập trình viên chỉ định kiểu của các phần tử và số phần tử sẽ được lưu trữ trong mảng đó. Dưới đây là một cú pháp đơn giản để tạo một mảng trong lập trình C:

type arrayName [ arraySize ];

Đây được gọi là mảng một chiều . CácarraySize phải là một hằng số nguyên lớn hơn 0 và typecó thể là bất kỳ kiểu dữ liệu C hợp lệ nào. Ví dụ, bây giờ để khai báo một mảng 10 phần tử được gọi lànumber thuộc loại int, sử dụng câu lệnh này -

int number[10];

Ở đây, number là một mảng biến, đủ để chứa tối đa 10 số nguyên.

Khởi tạo Mảng

Bạn có thể khởi tạo một mảng trong C hoặc từng cái một hoặc sử dụng một câu lệnh như sau:

int number[5] = {10, 20, 30, 40, 50};

Số giá trị giữa dấu ngoặc vuông {} không được lớn hơn số phần tử mà chúng ta khai báo cho mảng giữa dấu ngoặc vuông [].

Nếu bạn bỏ qua kích thước của mảng, một mảng vừa đủ lớn để chứa quá trình khởi tạo sẽ được tạo. Do đó, nếu bạn viết -

int number[] = {10, 20, 30, 40, 50};

Bạn sẽ tạo chính xác mảng giống như bạn đã làm trong ví dụ trước. Sau đây là một ví dụ để gán một phần tử duy nhất của mảng:

number[4] = 50;

Câu lệnh trên gán phần tử số thứ 5 trong mảng với giá trị là 50. Tất cả các mảng có 0 là chỉ số của phần tử đầu tiên của chúng, còn được gọi là chỉ số cơ sở và chỉ số cuối cùng của một mảng sẽ là tổng kích thước của mảng bị trừ. 1. Hình ảnh sau đây cho thấy biểu diễn bằng hình ảnh của mảng mà chúng ta đã thảo luận ở trên -

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ụ -

int var = number[9];

Câu lệnh trên sẽ lấy phần tử thứ 10 từ mảng và gán giá trị cho varBiến đổi. Ví dụ sau sử dụng tất cả ba khái niệm nêu trên viz. tạo, gán và truy cập mảng -

#include <stdio.h>
 
int main () {
   int number[10]; /* number is an array of 10 integers */
   int i = 0;
 
   /* Initialize elements of array n to 0 */         
   while( i < 10 ) {
	
      /* Set element at location i to i + 100 */
      number[ i ] = i + 100;
      i = i + 1;
   }
   
   /* Output each array element's value */
   i = 0;
   while( i < 10 ) {
	
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
   
   return 0;
}

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

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Mảng trong Java

Sau đây là chương trình tương đương được viết bằng Java. Java hỗ trợ các mảng, nhưng có một chút khác biệt trong cách chúng được tạo trong Java bằng cách sử dụngnew nhà điều hành.

Bạn có thể thử thực hiện chương trình sau để xem kết quả đầu ra phải giống với kết quả được tạo bởi ví dụ C ở trên.

public class DemoJava {
   public static void main(String []args) {
      int[] number = new int[10];
      int i = 0;
      
      while( i < 10 ) {
		
         number[ i ] = i + 100;
         i = i + 1;
      }

      i = 0;
      while( i < 10 ) {
         System.out.format( "number[%d] = %d\n", i, number[i] );
         i = i + 1;
      }
   }
}

Khi chương trình trên được thực thi, nó tạo ra kết quả sau:

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Mảng (Danh sách) bằng Python

Python không có khái niệm về Mảng, thay vào đó Python cung cấp một cấu trúc dữ liệu khác được gọi là list, cung cấp chức năng tương tự như mảng ở bất kỳ ngôn ngữ nào khác.

Sau đây là chương trình tương đương được viết bằng Python:

# Following defines an empty list.
number = []
i = 0

while i < 10:
   # Appending elements in the list
   number.append(i + 100)
   i = i + 1

i = 0
while i < 10:
   # Accessing elements from the list
   print "number[", i,  "] = ", number[ i ]
   i = i + 1

Khi chương trình trên được thực thi, nó tạo ra kết quả sau:

number[ 0 ] =  100
number[ 1 ] =  101
number[ 2 ] =  102
number[ 3 ] =  103
number[ 4 ] =  104
number[ 5 ] =  105
number[ 6 ] =  106
number[ 7 ] =  107
number[ 8 ] =  108
number[ 9 ] =  109