Bài giảng “Nhập môn lập trình – Chương 7: Giới thiệu tổng quan về lập trình” cung cấp cho người học các kiến thức: Dữ liệu có cấu trúc, dữ liệu mảng với kích thước cố định, ứng dụng mảng trong lập trình, các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp,… Mời các bạn cùng tham khảo.
Nhập mơn lập trình Trình bày: …; Email: …@fit.hcmus.edu.vn Dữ liệu có cấu trúc Dữ liệu mảng với kích thước cố định Ứng dụng mảng lập trình Các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp Thuật ngữ đọc thêm tiếng Anh 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên • Khai báo biến để lưu trữ SV char mssv[8]; char hoten[30]; char ntns[9]; char phai; float toan, ly, hoa; // “0912345” // “Nguyen Van A” // “01/01/91” // ‘n’ // 8.5 9.0 10.0 • Truyền thơng tin SV cho hàm void xuat(char* mssv, char* hoten, char* ntns, char phai, float toan, float ly, float hoa); 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên • Nhận xét – Đặt tên biến khó khăn khó quản lý – Truyền tham số cho hàm nhiều – Tìm kiếm, xếp, chép,… khó khăn – Tốn nhiều nhớ –… • Ý tưởng – Gom thơng tin SV thành kiểu liệu => Kiểu struct 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên • Cú pháp struct { ; … ; }; • Ví dụ struct Point2D { int x; int y; }; 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên • Cú pháp khai báo tường minh struct { ; … ; } , ; • Ví dụ struct Point2D { int x; int y; } p1, p2; 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên • Cú pháp khai báo không tường minh struct { ; … ; }; struct , ; • Ví dụ struct Point2D { int x; int y; }; struct Point2D p1, p2; 11/10/2012 // C++ bỏ từ khóa struct Khoa CNTT - ĐH Khoa học tự nhiên • Cú pháp typedef struct { ; … ; } ; , ; • Ví dụ tyepdef struct { int x; int y; } Point2D; Point2D p1, p2; 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên • Cú pháp struct { ; … ; } = {, , …, }; • Ví dụ struct Point2D { int x; int y; } p1= {2912, 1706}, p2; 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 10 • Sử dụng cách sau: – Khởi tạo giá trị cho phần tử mảng int a[4] = {2912, 1706, 1506, 1904}; – Khởi tạo giá trị cho số phần tử đầu mảng int a[4] = {2912, 1706}; – Khởi tạo giá trị cho phần tử mảng int a[4] = {0}; – Tự động xác định số lượng phần tử int a[] = {2912, 1706, 1506, 1904}; 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 23 • Thông qua số: [] • Ví dụ cho mảng int a[4]; – Các truy xuất hợp lệ: a[0], a[1], a[2], a[3] – Các truy xuất không hợp lệ: a[-1], a[4], a[5] 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 24 • Khơng sử dụng phép gán thông thường mà phải gán trực tiếp phần tử tương ứng • Ví dụ int a[3] = {1, 2, 3}, b[3]; void main() { b = a; // sai for (int i = 0; i < 3; i++) b[i] = a[i]; } 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 25 • Tham số kiểu mảng truyền cho hàm địa phần tử mảng: – Có thể bỏ số lượng phần tử (hoặc sử dụng trỏ), số lượng phần tử thực truyền kèm theo – Mảng thay đổi nội dung sau thực hàm • Ví dụ void sort(int a[], int n); 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 26 • Một số thao tác – Nhập/xuất mảng – Tìm kiếm phần tử mảng – Kiểm tra tính chất mảng – Chia/gộp mảng – Tìm giá trị nhỏ nhất/lớn mảng – Sắp xếp mảng – Thêm/xóa/sửa phần tử mảng 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 27 • Mảng chiều giống ma trận gồm nhiều dòng nhiều cột giao tạo thành ô, ô phần tử mảng • Mọi thao tác xử lý mảng chiều hoàn toàn tương tự mảng chiều • Tạm thời giới hạn phạm vi mảng chiều tĩnh (số dòng cột cố định) (Xem giáo trình NMLT trang 203-221) 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 28 • Kỹ thuật dùng bảng tra cứu nhớ để cải tiến tính tốn xử lý • Kỹ thuật dùng cờ hiệu xử lý mảng • Thuật tốn tìm kiếm tính tốn mảng • Thuật tốn xáo trộn, xếp phần tử mảng 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 30 • Sử dụng mảng kích thước biến động • Qui hoạch động ứng dụng để giải toán tối ưu • Các thuật toán chia để trị 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 32 • • • • • • • • • • • • • array parameter(s), array argument(s): tham số mảng array size: kích thước mảng column: cột copy: chép data type declaration, data type definition: khai báo kiểu liệu dynamic array: mảng động element: phần tử implementation: cài đặt (viết mã nguồn) index: số insert: chèn vào one-dimension array: mảng chiều two-dimension array: mảng hai chiều merge: trộn lại 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 34 • • • • • remove, delete: xóa row: dòng split: tách static array: mảng tĩnh structured data: liệu có cấu trúc nói chung 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 35 • Thinking in C, Bruce Eckel, E-book, 2006 • Theory and Problems of Fundamentals of Computing with C++, John R.Hubbard, Schaum’s Outlines Series, McGraw-Hill, 1998 11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 36 ... tự nhiên 26 • Một số thao tác – Nhập/ xuất mảng – Tìm kiếm phần tử mảng – Kiểm tra tính chất mảng – Chia/gộp mảng – Tìm giá trị nhỏ nhất/lớn mảng – Sắp xếp mảng – Thêm/xóa/sửa phần tử mảng 11/10/2012... ĐH Khoa học tự nhiên • Nhận xét – Đặt tên biến khó khăn khó quản lý – Truyền tham số cho hàm nhiều – Tìm kiếm, xếp, chép,… khó khăn – Tốn nhiều nhớ –? ?? • Ý tưởng – Gom thơng tin SV thành kiểu liệu... nhiên 22 • Sử dụng cách sau: – Khởi tạo giá trị cho phần tử mảng int a[4] = {2912, 170 6, 1506, 1904}; – Khởi tạo giá trị cho số phần tử đầu mảng int a[4] = {2912, 170 6}; – Khởi tạo giá trị cho phần