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

Bài giảng Lập trình nâng cao: Bài 10+11+12 - Trương Xuân Nam

44 11 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 44
Dung lượng 1,09 MB

Nội dung

Bài giảng Lập trình nâng cao: Bài 10+11+12 Kiểu cấu trúc (struct) và kiểu hợp nhất (union) cung cấp cho người học những kiến thức như: Các kiểu dữ liệu tự tạo; Cấu trúc (struct); Khai báo; Phép toán; Trường bit; Kích cỡ của struct; Bài tập struct; Hợp nhất (union); Liệt kê (enum); Cấu trúc tự trỏ và danh sách

LẬP TRÌNH NÂNG CAO Bài 10+11+12: Kiểu cấu trúc (struct) kiểu hợp (union) TRƯƠNG XUÂN NAM Nội dung Các kiểu liệu tự tạo Cấu trúc (struct) 4 Khai báo Phép tốn Trường bit Kích cỡ struct Bài tập struct Hợp (union) Liệt kê (enum) Cấu trúc tự trỏ danh sách Bài tập Trương Xuân Nam - Khoa CNTT Phần Các kiểu liệu tự tạo Trương Xuân Nam - Khoa CNTT Các kiểu liệu tự tạo ▪ Kiểu liệu: quy định loại liệu ghi biến ▪ Có tính quy ước, liệu ghi dạng byte / bit ▪ Xác định cách thức xử lý giá trị tham gia tính tốn ▪ Các ngơn ngữ lập trình cung cấp số kiểu liệu (số nguyên, số thực, logic,…) ▪ Cũng kiểu liệu thường dùng sống ▪ Cuộc sống có nhiều kiểu liệu phức tạp hơn: ▪ ▪ ▪ ▪ ▪ Phân số: tử số (số thực) + mẫu số (số thực) Số phức: phần thực (số thực) + phần ảo (số thực x i) Ngày: ngày (số nguyên) + tháng (số nguyên) + năm (số nguyên) Giờ: (số nguyên) + phút (số nguyên) + giây (số nguyên) +… Thời gian: Ngày + Giờ Trương Xuân Nam - Khoa CNTT Tự tạo kiểu liệu ▪ Các kiểu liệu phức tạp thường tổ hợp từ loại từ loại tổ hợp đơn giản ▪ Khơng ngơn ngữ lập trình cung cấp loại liệu cần thiết cho nhu cầu thực tiễn ▪ C/C++ cung cấp chế cho phép lập trình viên tự tạo kiểu liệu ▪ ▪ ▪ ▪ Cấu trúc (struct) Hợp (union) Liệt kê (enum) Lớp (class) ▪ Chúng ta thực tế sử dụng nhiều kiểu liệu tự tạo (string, vector,…) Trương Xuân Nam - Khoa CNTT Phần Cấu trúc (struct) Trương Xuân Nam - Khoa CNTT Đặt vấn đề: xét toán cụ thể ▪ Quản lý liệu thời gian (ngày tháng năm) ▪ Cách làm thông thường: biến lưu ngày, tháng, năm ▪ Mỗi có liệu ngày tháng cần khai báo thêm ▪ Truyền thông tin vào hàm? Dùng tham số ▪ Trả kết từ hàm? Không làm ▪ Nhận xét ▪ Đặt tên biến nhập nhằng, khó quản lý, phải có quy tắc riêng ▪ Truyền tham số cho hàm dài dịng ▪ Tìm kiếm, xếp, chép,… khó khăn ▪ Giải pháp C/C++: Gom thông tin tạo thành kiểu liệu Dữ liệu kiểu cấu trúc Khai báo struct ▪ Cú pháp sử dụng struct: struct { }; ▪ Sau khao báo struct, ta có kiểu liệu mới, trùng tên với struct ▪ Ví dụ: struct ThoiGian { int ngay, thang, nam; }; ThoiGian homnay; homnay.ngay = 3; homnay.thang = 4; homnay.nam = 2021; // kiểu liệu ThoiGian // thành phần // // // // biến kiểu ThoiGian thành phần ngày = thành phần tháng = thành phần năm = 2021 TRƯƠNG XUÂN NAM Khai báo struct // khai báo kiểu ĐIỂM biến struct DIEM { int x; int y; } diem1, diem2; // khai báo biến riêng rẽ struct DIEM diem3, diem4; // khai báo biến C++ bỏ struct DIEM diem5, diem6; TRƯƠNG XUÂN NAM Khai báo struct // khai báo kiểu gián tiếp typedef typedef struct { int x; int y; } POINT; // khai báo biến với định kiểu typedef struct POINT p1, p2; // khai báo khởi trị struct POINT { int x; int y; } p3 = { 123, 456 }, p4; TRƯƠNG XUÂN NAM 10 Liệt kê (enum) ▪ Kiểu liệt kê tập hợp số nguyên đặt tên ▪ Cú pháp: enum { }; ▪ Ví dụ: // kiểu Ngày, liệt kê ngày tuần // giá trị số trình dịch tự chọn enum Ngay { chunhat, thu2, thu3, thu4, thu5, thu6, thu7 }; // kiểu Giới tính, liệt kê giới tính khai báo // xác định vài giá trị // số KhongKhaiBao tự động chọn enum GioiTinh { Nam = 1, Nu = 2, KhongKhaiBao }; // kiểu Bài tập, liệt kê loại tập giao enum BaiTap { mot_tiet, giua_ky, cuoi_ky, do_an }; TRƯƠNG XUÂN NAM 30 Liệt kê (enum) ▪ Thay dùng kiểu liệt kê, lập trình viên tự định nghĩa số ▪ Nhưng kiểu liệt kê gom số có mối quan hệ thành nhóm, giúp viết mã sáng, dễ hiểu hơn, ▪ Ví dụ: GioiTinh abc = Nam; switch (abc) { case Nam: cout số phần tử danh sách void insertNode(Node * & head, string value, int n) { Node **ptr = &head; while (n > 0) { if (nullptr == *ptr) break; ptr = &((*ptr)->next); n ; } *ptr = createNode(value, *ptr); } TRƯƠNG XUÂN NAM 40 Cấu trúc tự trỏ: ứng dụng vào danh sách (list) // xóa giá trị thứ n danh sách // khơng làm n > số phần tử danh sách void deleteNode(Node * & head, int n) { if (nullptr == head) return; Node **ptr = &head; for (int i = 0; i < n; i++) { ptr = &((*ptr)->next); if (nullptr == *ptr) return; } Node * c = *ptr; *ptr = c->next; delete c; } TRƯƠNG XUÂN NAM 41 Phần Bài tập TRƯƠNG XUÂN NAM 42 Bài tập phần struct union TRƯƠNG XUÂN NAM 43 Bài tập phần danh sách liên kết: viết hàm TRƯƠNG XUÂN NAM 44 ... &((*ptr )-> next); if (nullptr == *ptr) return; } Node * c = *ptr; *ptr = c->next; delete c; } TRƯƠNG XUÂN NAM 41 Phần Bài tập TRƯƠNG XUÂN NAM 42 Bài tập phần struct union TRƯƠNG XUÂN NAM 43 Bài tập... Borland C++ mặc định TRƯƠNG XUÂN NAM 17 Phần Bài tập struct TRƯƠNG XUÂN NAM 18 Hãy tự tạo vài kiểu liệu TRƯƠNG XUÂN NAM 19 Bài tập ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ Dữ liệu kiểu cấu trúc Bài tập ▪ ▪ ▪ ▪ ▪ ▪ ▪... Trường bit Kích cỡ struct Bài tập struct Hợp (union) Liệt kê (enum) Cấu trúc tự trỏ danh sách Bài tập Trương Xuân Nam - Khoa CNTT Phần Các kiểu liệu tự tạo Trương Xuân Nam - Khoa CNTT Các kiểu liệu

Ngày đăng: 09/08/2021, 18:03