1. Trang chủ
  2. » Công Nghệ Thông Tin

dữ liệu mảng và dữ liệu có cấu trúc

37 568 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 1,62 MB

Nội dung

Giới thiệu tổng quan lập trình Nhập môn lập trình Trình bày: …; Email: …@fit.hcmus.edu.vn Nội dung  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 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Dữ liệu có cấu trúc Đặt vấn đề • • Khai báo biến để lưu trữ SV char mssv[8]; // “0912345” char hoten[30]; // “Nguyen Van A” char ntns[9]; // “01/01/91” char phai; // ‘n’ float toan, ly, hoa; // 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); 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Đặt vấn đề • Nhận xét • Ý tưởng – Đặ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ớ –… – Gom thông tin SV thành kiểu liệu => Kiểu struct 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Khai báo kiểu cấu trúc • Cú pháp struct { ; … ; }; • Ví dụ struct Point2D { int x; int y; }; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Khai báo biến • Cú pháp khai báo tường minh struct { ; … ; } , ; • Ví dụ struct Point2D { int x; int y; } p1, p2; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Khai báo biế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; // C++ bỏ từ khóa struct 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Sử dụng typedef • Cú pháp typedef struct { ; … ; } ; , ; • Ví dụ tyepdef struct { int x; int y; } Point2D; Point2D p1, p2; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Khởi tạo cho biến cấu trúc • Cú pháp struct { ; … ; } = {, , …, }; • Ví dụ struct Point2D { int x; int y; } p1= {2912, 1706}, p2; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 10 Khai báo biến mảng chiều • Cú pháp (không tường minh) typedef []; ; • Ví dụ typedef int Arr100int[100]; typedef int Arr200int[200]; typedef float Arr50float[50]; Arr100int a, c; // int a[100], c[100]; Arr200int b; // int b[200]; Arr50float d; // float d[50]; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 22 Khởi tạo mảng chiều • 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}; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 23 Truy xuất mảng chiều • 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] 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 24 Gán liệu mảng chiều • 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]; } 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 25 Truyền mảng chiều cho hàm • 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); 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 26 Xử lý mảng chiều • 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 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 27 Mảng chiều • • • 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) 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 28 Ứng dụng mảng lập trình Một số ứng dụng • • • • 9/11/15 Kỹ thuật dùng bảng tra cứu nhớ để cải tiến tính toán xử lý. Kỹ thuật dùng cờ hiệu xử lý mảng. Thuật toán tìm kiếm tính toán mảng. Thuật toán xáo trộn, xếp phần tử mảng. Khoa CNTT - ĐH Khoa học tự nhiên 30 Các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp Tìm hiểu thêm • • • 9/11/15 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ị. Khoa CNTT - ĐH Khoa học tự nhiên 32 Thuật ngữ đọc thêm tiếng Anh Thuật ngữ tiếng Anh • 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 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 34 Thuật ngữ tiếng Anh • 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 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 35 Bài đọc thêm tiếng Anh • • 9/11/15 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. Khoa CNTT - ĐH Khoa học tự nhiên 36 [...]... CNTT - ĐH Khoa học tự nhiên 18 Dữ liệu mảng với kích thước cố định Dữ liệu kiểu mảng • Khái niệm – Là một kiểu dữ liệu có cấu trúc do người lập trình định nghĩa – Biểu diễn một dãy các biến có cùng kiểu Ví dụ: dãy các số nguyên, dãy các ký tự… – Kích thước được xác định ngay khi khai báo và không bao giờ thay đổi – NNLT C luôn chỉ định một khối nhớ liên tục cho một biến kiểu mảng 9/11/15 Khoa CNTT - ĐH... tiếp – Thông qua toán tử thành phần cấu trúc Hay còn gọi là toán tử chấm (dot operation) . • Ví dụ struct Point2D { int x, y; } p = {2912, 1706}; void show(Point2D p) { printf(“x = %d, y = %d\n”, p.x, py); } 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 11 Gán dữ liệu • Có 2 cách = biến cấu trúc nguồn . = ... sự truyền kèm theo – Mảng có thể thay đổi nội dung sau khi thực hiện hàm • Ví dụ void sort(int a[], int n); 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 26 Xử lý mảng 1 chiều • Một số thao tác cơ bản – Nhập/xuất mảng – Tìm kiếm một phần tử trong mảng – Kiểm tra tính chất của mảng – Chia/gộp mảng – Tìm giá trị nhỏ nhất/lớn nhất trong mảng – Sắp xếp mảng – Thêm/xóa/sửa một phần tử trong mảng 9/11/15 Khoa CNTT... tự nhiên 27 Mảng 2 chiều • • • Mảng 2 chiều giống như một ma trận gồm nhiều dòng và nhiều cột giao nhau tạo thành các ô, mỗi ô là một phần tử mảng Mọi thao tác xử lý trên mảng 2 chiều hoàn toàn tương tự trên mảng 1 chiều Tạm thời giới hạn trong phạm vi mảng 2 chiều tĩnh (số dòng và cột cố định) (Xem trong giáo trình NMLT trang 203-221) 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 28 Ứng dụng mảng trong... 32 Thuật ngữ và bài đọc thêm tiếng Anh Thuật ngữ tiếng Anh • array parameter(s), array argument(s): tham số mảng • array size: kích thước mảng • column: cột • copy: sao chép • data type declaration, data type definition : khai báo kiểu dữ liệu • dynamic array: mảng động • element: phần tử • implementation: cài đặt (viết mã nguồn) • index: chỉ số • insert: chèn vào • one-dimension array: mảng một chiều... dùng bảng tra cứu trong bộ nhớ để cải tiến tính toán và xử lý Kỹ thuật dùng cờ hiệu khi xử lý mảng Thuật toán tìm kiếm và tính toán trên mảng Thuật toán xáo trộn, sắp xếp các phần tử của mảng Khoa CNTT - ĐH Khoa học tự nhiên 30 Các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp Tìm hiểu thêm • • • 9/11/15 Sử dụng mảng kích thước biến động Qui hoạch động và ứng dụng để giải các bài toán tối ưu Các thuật... nhiên 24 Gán dữ liệu mảng 1 chiều • Không được sử dụng phép gán thông thường mà phải gán trực tiếp giữa các 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]; } 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 25 Truyền mảng 1 chiều cho hàm • Tham số kiểu mảng truyền cho hàm chính là địa chỉ của phần tử đầu tiên của mảng: – Có thể bỏ số... • index: chỉ số • insert: chèn vào • one-dimension array: mảng một chiều • two-dimension array: mảng hai chiều • merge: trộn lại 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 34 Thuật ngữ tiếng Anh • remove, delete: xóa đi • row: dòng • split: tách ra • static array: mảng tĩnh • structured data: dữ liệu có cấu trúc nói chung 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 35 Bài đọc thêm tiếng Anh • • 9/11/15 Thinking... []; ; • Ví dụ typedef int Arr100int[100]; typedef int Arr200int[200]; typedef float Arr50float[50]; Arr100int a, c; // int a[100], c[100]; Arr200int b; // int b[200]; Arr50float d; // float d[50]; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 22 Khởi tạo mảng 1 chiều • Sử dụng một trong 4 cách sau: – Khởi tạo giá trị cho mọi phần tử của mảng int... 1706, 1506, 1904}; – Khởi tạo giá trị cho một số phần tử đầu mảng int a[4] = {2912, 1706}; – Khởi tạo giá trị 0 cho mọi phần tử của mảng int a[4] = {0}; – Tự động xác định số lượng phần tử int a[] = {2912, 1706, 1506, 1904}; 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 23 Truy xuất mảng 1 chiều • Thông qua chỉ số: [] • Ví dụ cho mảng int a[4]; – Các truy xuất hợp lệ: a[0], a[1], a[2],

Ngày đăng: 11/09/2015, 13:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w