Bài giảng Kỹ thuật lập trình C/C++ - Chương 6: Kiểu dữ liệu, người lập trình định nghĩa cung cấp cho người học các kiến thức: Từ khoá typedef, cấu trúc, mảng. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
Chương 06 KIỂU DỮ LIỆU NGƯỜI LẬP TRÌNH ĐỊNH NGHĨA Lê Thành Sách Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Nội dung n n n Từ khoá typedef Cấu trúc Mảng Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Quy ước USR_DT = Kiểu liệu Người lập trình định nghĩa Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Từ khoá typedef n typedef cho phép người lập trình tạo tên cho kiểu liệu có n n n Tên mang lại tính dễ hiểu hơn, ngữ cảnh toán xét Tên giúp rút ngắn mã nguồn Tên kiểu dùng kiểu định nghĩa tên Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Từ khố typedef #include #include /*new name for "unsigned byte"*/ typedef unsigned char byte; int main(){ byte a = 78; unsigned char b = 'A', c; c = a; a = b; printf("a = |%5c:%5d|\n", a,a); printf("b = |%5c:%5d|\n", b,b); printf("c = |%5c:%5d|\n", c,c); system("pause"); return 0; } Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Từ khố typedef n Ví dụ n Tên kiểu “byte” định nghĩa dùng thay cho kiểu “unsigned byte” n => Tăng ý nghĩa cho “unsigned char”: kiểu sau định nghĩa mô tả byte liệu, đương nhiên khơng có dấu n => Ngắn viết mã n => Có thể dùng tương thích với kiểu gốc n Biến a (kiểu mới) gán cho biến c (kiểu gốc) n Biến a (kiểu mới) nhận từ biến b (kiểu gốc) n Có thể in biến a (kiểu mới) số hay ký tự n Biến a tham gia vào biểu thức với toán tử dùng cho kiểu gốc (nếu muốn) Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Từ khoá typedef n Các trường hợp dùng khác typedef n n Định nghĩa tên cho enum Định nghĩa tên cho cấu trúc (struct) Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Cấu trúc n Sự cần thiết n Bài toán: Quản lý sinh viên n Mỗi sinh viên, chương trình cần lưu xử lý mảnh liệu sau n Mã số sinh viên n Họ tên sinh viên n Ngày sinh n Địa n Số điện thoại n Email n V.v Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Cấu trúc n Sự cần thiết n Bài toán: Quản lý sinh viên n Nếu sử dụng kiểu để lưu trữ tạm sinh viên nhớ n Người lập trình cần khai báo NHIỀU biến đơn lẻ, cho mảnh liệu sinh viên n => Quá bất tiện: dài dịng, khó hiểu, v.v n => Khi cần vài sinh viên nhớ: dòng khai báo biến chiếm vùng lớn mã nguồn! Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Tốn CuuDuongThanCong.com © 2016 Lập trình C/C++ https://fb.com/tailieudientucntt Cấu trúc n Sự cần thiết n n n Bài toán: Quản lý sinh viên Tương tự cho hầu hết toán thực tế n Thông tin điểm hay vector chương trình n Thơng tin sản phẩm, hàng hố siêu thị n V.v Giải pháp cho trường hợp n GOM tất liệu có quan hệ với thành khối n Luôn cấp phát CÙNG NHAU, LIÊN TỤC nhớ n Luôn huỷ khỏi nhớ CÙNG NHAU n Các mảnh liệu thành phần truy xuất độc lập, thơng quan tên gọi Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán CuuDuongThanCong.com © 2016 Lập trình C/C++ 10 https://fb.com/tailieudientucntt Mảng chiều Duyệt qua phần tử mảng n Gọi ROWS COLS tổng số hàng cột tương ứng n n Gọi row col hai biến chứa số hàng cột n n n ROWS COLS số n Thông qua #define n Thông qua const int ROWS, COLS; row: số hàng col: số cột Dùng hai cấu trúc lặp lồng n Cho hàng (row) n Cho cột (col) n Truy xuất phần tử [row, col] để ghi hay đọc n Tăng số cột (col) để đến phần tử hàng n Tăng số hàng (row) đến xử lý hàng Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán CuuDuongThanCong.com © 2016 Lập trình C/C++ 74 https://fb.com/tailieudientucntt Mảng chiều Duyệt qua phần tử mảng n Lưu ý n n Theo cách truy xuất phần tử theo hàng, hết hàng đến hàng hàng n Chỉ số cột tăng nhanh số hàng Cách truy xuất giúp chương trình chạy nhanh trường hợp truy xuất theo cột n Chỉ số hàng tăng nhanh số cột Trường Đại Học Bách Khoa Trung Tâm Kỹ Thuật Điện Toán CuuDuongThanCong.com © 2016 Lập trình C/C++ 75 https://fb.com/tailieudientucntt #include #include int main(){ const int ROWS = 3, COLS = 4; int a[ROWS][COLS]; Lặp hàng trước, cột sau (lồng) int row,col; /*Initialize array*/ for(row=0; row