ARRAY - Mảng
I. Mảng là gì ?
Mảng là tập hợp của các dữ liệu có chung kiểu như int hay char. Mình sẽ nói về mảng 1 chiều ở bài này thôi, mảng đa chiều tính sau. Mảng với n thành phần luôn bắt đầu bằng thành phần 0 và kết thúc ở thành phần n-1. 0 và n-1 được gọi là giới hạn - bounds của mảng.
int num[10] = { 2, 25,37343, 232, 1265, 45543}
Với 1 mảng ví dụ như trên, mảng có 10 thành phần. "2" sẽ nằm ở thành phần 0, mảng đã xác định trước 6 thành phần. 4 thành phần còn lại còn trống, có thể được thêm sau này. Cần lưu ý rằng nếu index - số thứ tự thành phần vượt quá giới hạn, sẽ có những lỗi xảy ra tùy theo các compiler khác nhau.
- storage class: Lớp lưu trữ. Có 4 lớp trong C là automatic, register, static và external.
+external dùng để định nghĩa mảng ngoài hàm và automatic để định nghĩa mảng nằm trong hàm.
+Mặc định lớp automatic sẽ được sử dụng cho mảng ( và biến ).
+static sẽ khiến cho mảng tồn tại đến khi chương trình kết thúc, còn các lớp khác sẽ biến mất sau khi không được sử dụng nữa.
+register thì đặt biến ngay trong CPU, nhằm mục đích truy cập tốc độ siêu nhanh ( gấp nhiều lần bộ nhớ ). register chỉ sử dụng được với biến.
- Data type : Kiểu dữ liệu. Mảng chỉ có thể lưu được 1 kiểu dữ liệu duy nhất cho tất cả các thành phần của nó. int char double float là 4 kiểu dữ liệu được sử dụng trong mảng, không dùng void
- array name: Cái này tương tự như đặt tên biến, chả khác gì.
- array size: Độ lớn của mảng, đây là cái khác biệt nhất so với cả xác định 1 biến. Đây là tổng số thành phần mà mảng có thể lưu trữ được.
- num[0] , num[9-2] , num[18/3], num[i], ....
index trong mảng bắt buộc là số nguyên dương. Còn lại việc chúng ta xác định index thế nào thì thoải mái, miễn sao nó là số nguyên dương.
Khác với biến, chúng ta không thể trực tiếp so sánh và tương tác 2 mảng dù chúng có giống nhau đến mấy. Chúng ta chỉ có thể tương tác giữa những thành phần trong mảng: so sánh, gán giá trị, ....
int num[10] = { 2, 25,37343, 232, 1265, 45543}
Chèn thêm giá trị V vào bất kì vị trí nào trong mảng.
Với 1 mảng ví dụ như trên, mảng có 10 thành phần. "2" sẽ nằm ở thành phần 0, mảng đã xác định trước 6 thành phần. 4 thành phần còn lại còn trống, có thể được thêm sau này. Cần lưu ý rằng nếu index - số thứ tự thành phần vượt quá giới hạn, sẽ có những lỗi xảy ra tùy theo các compiler khác nhau.
1 mảng 2 chiều với i, j để xác định vị trí thành phần. nguồn bcdonline.net
II. Xác định 1 mảng
Để xác định 1 mảng, chúng ta cần xác định những tính chất sau của mảng:- storage class: Lớp lưu trữ. Có 4 lớp trong C là automatic, register, static và external.
+external dùng để định nghĩa mảng ngoài hàm và automatic để định nghĩa mảng nằm trong hàm.
+Mặc định lớp automatic sẽ được sử dụng cho mảng ( và biến ).
+static sẽ khiến cho mảng tồn tại đến khi chương trình kết thúc, còn các lớp khác sẽ biến mất sau khi không được sử dụng nữa.
+register thì đặt biến ngay trong CPU, nhằm mục đích truy cập tốc độ siêu nhanh ( gấp nhiều lần bộ nhớ ). register chỉ sử dụng được với biến.
- Data type : Kiểu dữ liệu. Mảng chỉ có thể lưu được 1 kiểu dữ liệu duy nhất cho tất cả các thành phần của nó. int char double float là 4 kiểu dữ liệu được sử dụng trong mảng, không dùng void
- array name: Cái này tương tự như đặt tên biến, chả khác gì.
- array size: Độ lớn của mảng, đây là cái khác biệt nhất so với cả xác định 1 biến. Đây là tổng số thành phần mà mảng có thể lưu trữ được.
III. Sử dụng mảng
Sau khi đã xác định mảng, chúng ta có thể gọi ra các thành phần trong mảng như sau:- num[0] , num[9-2] , num[18/3], num[i], ....
index trong mảng bắt buộc là số nguyên dương. Còn lại việc chúng ta xác định index thế nào thì thoải mái, miễn sao nó là số nguyên dương.
Index trong mảng luôn luôn là số dương.
Khác với biến, chúng ta không thể trực tiếp so sánh và tương tác 2 mảng dù chúng có giống nhau đến mấy. Chúng ta chỉ có thể tương tác giữa những thành phần trong mảng: so sánh, gán giá trị, ....
Sử dụng phép so sánh các giá trị trong mảng để tìm ra số lớn nhất.
Sử dụng phép so sánh các giá trị trong mảng để nhận xét tính tăng giảm của mảng.
Hợp nhất 2 mảng vào bằng cách gán từng giá trị cho mảng thứ 3.
Thuật toán sắp xếp thứ tự giảm dần trong mảng sử dụng 1 vòng lặp.
Không có nhận xét nào:
Đăng nhận xét