Bài giảng Cơ sở lập trình: Mảng (Array) - Trịnh Tấn Đạt
Số trang: 112
Loại file: pdf
Dung lượng: 1.34 MB
Lượt xem: 25
Lượt tải: 0
Xem trước 10 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Cơ sở lập trình: Mảng (Array), chương này trình bày những nội dung gồm: định nghĩa mảng; mảng 1 chiều; các thao tác trên mảng 1 chiều (1D); mảng 2 chiều (2D) và mảng nhiều chiều; các thao tác trên mảng 1 chiều (2D); các ví dụ minh họa và bài tập;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Nội dung trích xuất từ tài liệu:
Bài giảng Cơ sở lập trình: Mảng (Array) - Trịnh Tấn Đạt Mảng (Array) Trịnh Tấn Đạt Khoa CNTT - Đại Học Sài Gòn Email: trinhtandat@sgu.edu.vn Website: https://sites.google.com/site/ttdat88/ Nội dung Đặt vấn đề Định nghĩa mảng Mảng 1 chiều Các thao tác trên mảng 1 chiều (1D) Mảng 2 chiều (2D) và mảng nhiều chiều Các thao tác trên mảng 1 chiều (2D) Các ví dụ minh họa Bài Tập Đặt vấn đề Ví dụ Chương trình cần lưu trữ 3 số nguyên? => Khai báo 3 biến int a1, a2, a3; Chương trình cần lưu trữ 100 số nguyên? => Khai báo 100 biến kiểu số nguyên! Người dùng muốn nhập n số nguyên? => Không thực hiện được! Giải pháp Kiểu dữ liệu mới cho phép lưu trữ một dãy các số nguyên và dễ dàng truy xuất. Định nghĩa biến mảng Mảng (Array): là một kiểu dữ liệu có cấu trúc. Mảng là một nhóm các biến có cùng tên, cùng kiểu dữ liệu. Ví dụ: dãy các số nguyên, dãy các ký tự… Mảng có thể là một hoặc nhiều chiều. Kích thước được xác định ngay khi khai báo và không bao giờ thay đổi. Mỗi phần tử (mỗi biến) của mảng được truy xuất thông qua chỉ số. NNLT C luôn chỉ định một khối nhớ liên tục cho một biến kiểu mảng. Mảng một chiều A 10 -2 5 0 Mảng A có 6 ô nhớ (chứa tối đa 6 phần tử), có 4 phần tử gán giá trị, 2 ô nhớ trống Định nghĩa biến mảng Ví dụ : mảng 2 chiều B kích thước 3x5 (có 3 dòng và 5 cột) chứa các số nguyên 1 6 -2 3 0 37 43 51 1 93 34 0 Mảng B có 3x5=15 ô nhớ (chứa tối đa 15 phần tử), có 3x4=12 phần tử gán giá trị, 3 ô nhớ trống Khai báo biến mảng Cú pháp dùng cho mảng một chiều (1D Array): []; Lưu ý o : theo nguyên tắc đặt tên biến. o Phải xác định cụ thể (hằng) khi khai báo. Ví dụ: 10 ( mảng chứa 10 phần tử) o Bộ nhớ sử dụng phải ít hơn 64KB (65535 Bytes) o Một dãy liên tục có chỉ số từ 0 đến -1 (lưu ý: chỉ số bắt đầu từ 0) Ví dụ: int A [10]; // mảng số nguyên A chứa tối đa 10 phần tử float B[50]; //mảng kiểu float B chứa tối đa 50 phần tử double Array_C[1000] ; // mảng kiểu double Array_C chứa tối đa 1000 phần tử Khai báo biến mảng Ví dụ: có thể dùng macro define xác định tổng số phần tử của mảng #define MAX 20 // MAX là hằng giá trị int mangA[MAX] // mảng số nguyên mangA chứa tối đa 20 phần tử • Lưu ý khai báo dưới đây là SAI, không cho phép int n = 100; int M[n]; // SAI, chương trình sẽ báo lỗi float N[k]; // SAI, chương trình sẽ báo lỗi Khai báo biến mảng Xét ví dụ : int A[10]; Ta đã khai báo (định nghĩa mảng) mảng số nguyên A có tổng số phần tử là 10. Các phần tử trong mảng chưa được gán giá trị. Tất cả các phần tử (nếu có) được gán bởi số nguyên. Mỗi phần tử của mảng có chỉ số từ 0 đến 9 (tổng cộng 10 phần tử) Mảng A Khai báo biến mảng Gọi N là số phần tử chứa trong mảng. Khi đó, chỉ số của mảng bắt đầu từ 0 đến N-1 Toán tử [] : toán tử lấy chỉ số trong mảng Ví dụ: int a[50]; // khai báo mảng a chứa tối đa được 50 phần tử Giả sử tạo mảng a chứa 3 phần tử là số nguyên ( N = 3) a[0] = 2; a[0] a[1] a[2] a[3] a[49] a[1] = 4; 2 4 8 … … … … … a[0] = 8; Các chỉ số a[0] tại vị trí thứ nhất, a[1] tại vị trí thứ hai, a[2] tại vị trí thứ ba Khai báo biến mảng Ví dụ: double B[10]; Định nghĩa 10 biến kiểu double gồm: B[1], B[2], … , B[9] Gán giá trị cho 4 phần tử đầu tiên từ 0 đến 3 B[0] = 10.5; B[1] = 0.2; B[2] = 9.5; B[3] = 2.7; Lưu trữ Khi mảng được định nghĩa, o Vùng nhớ cho các phần tử của mảng được cấp phát là các ô nhớ liền nhau. o Mỗi phần tử chiếm số bytes tùy thuộc kiểu dữ liệu o sizeof(); → cho biết tổng số bytes của mảng. • Bộ nhớ sử dụng = *sizeof() Ví dụ: 10*sizeof(int) ~ 40 byte Ví dụ int x[100]; sizeof(x) = ??? sizeof(x[0]) = sizeof(x[1]) = … = sizeof(x[99]) = ??? Lưu ý: Không thể dùng biến mảng như thông thường. int a[6]; a = -2; // ERROR couta[0]; // nhập vào a[0] coutLưu ý Ta thường dùng phát biểu lặp để nhập hoặc truy xuất các phần tử của mảng. Đồng thời dùng thêm một biến kiểu nguyên, cho biết số phần tử của mảng thực sự đang được dùng. Ví dụ: Nhập vào mảng có 5 phần tử int a[100]; int n; cin>>n; // nhập vào n = 5 for (int i = 0; i>a[i]; // in kết quả for (int i = 0; i>a[i]; Khởi tạo giá trị cho mảng Một số cách mà ngôn ngữ C cho phép khởi tạo giá trị của mảng Khởi tạo giá trị cho mọi phần tử của mảng (số phần tử = số giá trị) int a[4] = {2912, 1706, 1506, 1904}; 0 1 2 3 a 2912 1706 1506 1904 a[0] = 2912; a[1] = 1706; a[2] = 1506; a[3] = 1904 • Cấp phát 4 ô nhớ kiểu int, gán 4 giá trị cho các phần tử Khởi tạo giá trị cho mảng Khởi tạo giá trị cho một số phần tử đầu mảng (số phần tử > số giá trị) int a[4] = {2912, 1706}; 0 1 2 3 a 2912 1706 0 0 o Cấp phát 4 ô nhớ kiểu int, lần lượt gán giá trị cho 2 ô nhớ đầu tiên. Khởi tạo giá trị cho mảng Tự động xác định số lượng phần tử (Không định số phần tử) int a[] = {2912, 1706, 1506, 1904}; 0 1 2 3 a 2912 1706 1506 1904 o Cấp phát số phần tử = số giá trị được gán. o Cấp phát 4 ô nhớ kiểu int, lần lượt gán 4 giá trị cho các ô nhớ. Khởi tạo giá trị cho mảng Khởi tạo giá trị 0 cho mọi phần tử của mảng int a[4] = {0}; 0 1 2 3 a ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cơ sở lập trình: Mảng (Array) - Trịnh Tấn Đạt Mảng (Array) Trịnh Tấn Đạt Khoa CNTT - Đại Học Sài Gòn Email: trinhtandat@sgu.edu.vn Website: https://sites.google.com/site/ttdat88/ Nội dung Đặt vấn đề Định nghĩa mảng Mảng 1 chiều Các thao tác trên mảng 1 chiều (1D) Mảng 2 chiều (2D) và mảng nhiều chiều Các thao tác trên mảng 1 chiều (2D) Các ví dụ minh họa Bài Tập Đặt vấn đề Ví dụ Chương trình cần lưu trữ 3 số nguyên? => Khai báo 3 biến int a1, a2, a3; Chương trình cần lưu trữ 100 số nguyên? => Khai báo 100 biến kiểu số nguyên! Người dùng muốn nhập n số nguyên? => Không thực hiện được! Giải pháp Kiểu dữ liệu mới cho phép lưu trữ một dãy các số nguyên và dễ dàng truy xuất. Định nghĩa biến mảng Mảng (Array): là một kiểu dữ liệu có cấu trúc. Mảng là một nhóm các biến có cùng tên, cùng kiểu dữ liệu. Ví dụ: dãy các số nguyên, dãy các ký tự… Mảng có thể là một hoặc nhiều chiều. Kích thước được xác định ngay khi khai báo và không bao giờ thay đổi. Mỗi phần tử (mỗi biến) của mảng được truy xuất thông qua chỉ số. NNLT C luôn chỉ định một khối nhớ liên tục cho một biến kiểu mảng. Mảng một chiều A 10 -2 5 0 Mảng A có 6 ô nhớ (chứa tối đa 6 phần tử), có 4 phần tử gán giá trị, 2 ô nhớ trống Định nghĩa biến mảng Ví dụ : mảng 2 chiều B kích thước 3x5 (có 3 dòng và 5 cột) chứa các số nguyên 1 6 -2 3 0 37 43 51 1 93 34 0 Mảng B có 3x5=15 ô nhớ (chứa tối đa 15 phần tử), có 3x4=12 phần tử gán giá trị, 3 ô nhớ trống Khai báo biến mảng Cú pháp dùng cho mảng một chiều (1D Array): []; Lưu ý o : theo nguyên tắc đặt tên biến. o Phải xác định cụ thể (hằng) khi khai báo. Ví dụ: 10 ( mảng chứa 10 phần tử) o Bộ nhớ sử dụng phải ít hơn 64KB (65535 Bytes) o Một dãy liên tục có chỉ số từ 0 đến -1 (lưu ý: chỉ số bắt đầu từ 0) Ví dụ: int A [10]; // mảng số nguyên A chứa tối đa 10 phần tử float B[50]; //mảng kiểu float B chứa tối đa 50 phần tử double Array_C[1000] ; // mảng kiểu double Array_C chứa tối đa 1000 phần tử Khai báo biến mảng Ví dụ: có thể dùng macro define xác định tổng số phần tử của mảng #define MAX 20 // MAX là hằng giá trị int mangA[MAX] // mảng số nguyên mangA chứa tối đa 20 phần tử • Lưu ý khai báo dưới đây là SAI, không cho phép int n = 100; int M[n]; // SAI, chương trình sẽ báo lỗi float N[k]; // SAI, chương trình sẽ báo lỗi Khai báo biến mảng Xét ví dụ : int A[10]; Ta đã khai báo (định nghĩa mảng) mảng số nguyên A có tổng số phần tử là 10. Các phần tử trong mảng chưa được gán giá trị. Tất cả các phần tử (nếu có) được gán bởi số nguyên. Mỗi phần tử của mảng có chỉ số từ 0 đến 9 (tổng cộng 10 phần tử) Mảng A Khai báo biến mảng Gọi N là số phần tử chứa trong mảng. Khi đó, chỉ số của mảng bắt đầu từ 0 đến N-1 Toán tử [] : toán tử lấy chỉ số trong mảng Ví dụ: int a[50]; // khai báo mảng a chứa tối đa được 50 phần tử Giả sử tạo mảng a chứa 3 phần tử là số nguyên ( N = 3) a[0] = 2; a[0] a[1] a[2] a[3] a[49] a[1] = 4; 2 4 8 … … … … … a[0] = 8; Các chỉ số a[0] tại vị trí thứ nhất, a[1] tại vị trí thứ hai, a[2] tại vị trí thứ ba Khai báo biến mảng Ví dụ: double B[10]; Định nghĩa 10 biến kiểu double gồm: B[1], B[2], … , B[9] Gán giá trị cho 4 phần tử đầu tiên từ 0 đến 3 B[0] = 10.5; B[1] = 0.2; B[2] = 9.5; B[3] = 2.7; Lưu trữ Khi mảng được định nghĩa, o Vùng nhớ cho các phần tử của mảng được cấp phát là các ô nhớ liền nhau. o Mỗi phần tử chiếm số bytes tùy thuộc kiểu dữ liệu o sizeof(); → cho biết tổng số bytes của mảng. • Bộ nhớ sử dụng = *sizeof() Ví dụ: 10*sizeof(int) ~ 40 byte Ví dụ int x[100]; sizeof(x) = ??? sizeof(x[0]) = sizeof(x[1]) = … = sizeof(x[99]) = ??? Lưu ý: Không thể dùng biến mảng như thông thường. int a[6]; a = -2; // ERROR couta[0]; // nhập vào a[0] coutLưu ý Ta thường dùng phát biểu lặp để nhập hoặc truy xuất các phần tử của mảng. Đồng thời dùng thêm một biến kiểu nguyên, cho biết số phần tử của mảng thực sự đang được dùng. Ví dụ: Nhập vào mảng có 5 phần tử int a[100]; int n; cin>>n; // nhập vào n = 5 for (int i = 0; i>a[i]; // in kết quả for (int i = 0; i>a[i]; Khởi tạo giá trị cho mảng Một số cách mà ngôn ngữ C cho phép khởi tạo giá trị của mảng Khởi tạo giá trị cho mọi phần tử của mảng (số phần tử = số giá trị) int a[4] = {2912, 1706, 1506, 1904}; 0 1 2 3 a 2912 1706 1506 1904 a[0] = 2912; a[1] = 1706; a[2] = 1506; a[3] = 1904 • Cấp phát 4 ô nhớ kiểu int, gán 4 giá trị cho các phần tử Khởi tạo giá trị cho mảng Khởi tạo giá trị cho một số phần tử đầu mảng (số phần tử > số giá trị) int a[4] = {2912, 1706}; 0 1 2 3 a 2912 1706 0 0 o Cấp phát 4 ô nhớ kiểu int, lần lượt gán giá trị cho 2 ô nhớ đầu tiên. Khởi tạo giá trị cho mảng Tự động xác định số lượng phần tử (Không định số phần tử) int a[] = {2912, 1706, 1506, 1904}; 0 1 2 3 a 2912 1706 1506 1904 o Cấp phát số phần tử = số giá trị được gán. o Cấp phát 4 ô nhớ kiểu int, lần lượt gán 4 giá trị cho các ô nhớ. Khởi tạo giá trị cho mảng Khởi tạo giá trị 0 cho mọi phần tử của mảng int a[4] = {0}; 0 1 2 3 a ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cơ sở lập trình Cơ sở lập trình Mảng (Array) Khai báo biến mảng Mảng 1 chiều Mảng 2 chiều Hàm nhập mảng Hàm xuất mảngTài liệu có liên quan:
-
Bài giảng Lập trình Windows Form với C#: Chương 3 - Lê Thị Ngọc Hạnh
11 trang 157 0 0 -
Bài tập Pascal: Phần Mảng 2 chiều - Th.S Nguyễn Anh Việt
5 trang 35 1 0 -
Bài giảng cơ sở lập trình nâng cao - Chương 8
37 trang 33 0 0 -
Bài giảng Cơ sở lập trình - ĐH Thương Mại
0 trang 33 0 0 -
Bài giảng Cơ sở lập trình 2: Chương 2 - Lê Quý Tài
47 trang 31 0 0 -
Giáo trình Cơ sở lập trình: Phần 2
114 trang 31 0 0 -
Bài giảng Phương pháp lập trình - Chương 4: Mảng
9 trang 30 0 0 -
57 trang 30 0 0
-
Bài giảng Cơ sở lập trình: Struct (Kiểu cấu trúc) - Trịnh Tấn Đạt
35 trang 29 0 0 -
Bài giảng Cơ sở lập trình 2: Chương 6 - Lê Quý Tài
14 trang 27 0 0