Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 13 - TS. Đặng Thái Việt
lượt xem 3
download
Bài giảng "Kỹ thuật lập trình hệ cơ điện tử: Chương 13 - C++ nâng cao" được biên soạn bao gồm các nội dung chính sau: Xử lý ngoại lệ (Exception Handling; Bộ nhớ độn; Namespace; Template; Bộ tiền xử lý (Preprocessor); Xử lý tín hiệu (Signal Handling); Đa luồng (Multithread); Một số lớp quan trọng. Mời các bạn cùng tham khảo bài giảng!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 13 - TS. Đặng Thái Việt
- TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Programming Engineering in Mechatronics Giảng viên: TS. TS. Đặng Thái Việt Đơn vị: Bộ môn Cơ điện tử, Viện Cơ khí Hà Nội, 09/2017 1
- CHƯƠNG 13. C++ nâng cao 13.1 Xử lý ngoại lệ (Exception Handling) 13.2 Bộ nhớ động 13.3 Namespace 13.4 Template 13.5 Bộ tiền xử lý (Preprocessor) 13.6 Xử lý tín hiệu (Signal Handling) 13.7 Đa luồng (Multithread) 13.8 Một số lớp quan trọng 2
- Xử lý ngoại lệ (Exception Handling) Giới thiệu • Một Exception (ngoại lệ) là một vấn đề xuất hiện trong khi thực thi một chương trình. Một Exception trong C++ là một phản hồi về một tình huống ngoại lệ mà xuất hiện trong khi một chương trình đang chạy, ví dụ như chia cho số 0. • Exception cung cấp một cách để truyền điều khiển từ một phần của một chương trình tới phần khác. Exception Handling (Xử lý ngoại lệ) trong C++ được xây dựng dựa trên 3 từ khóa là: try, catch, và throw. 3
- Xử lý ngoại lệ (Exception Handling) Giới thiệu § throw: Một chương trình ném một Exception khi một vấn đề xuất hiện. Việc này được thực hiện bởi sử dụng từ khóa throw trong C++. § catch: Một chương trình bắt một Exception với một Exception Handler tại vị trí trong một chương trình nơi bạn muốn xử lý vấn đề đó. Từ khóa catch trong C++ chỉ dẫn việc bắt một exception. § try: Một khối try có thể được bắt bởi một số lượng cụ thể exception. Nó được theo sau bởi một hoặc nhiều khối catch. 4
- Xử lý ngoại lệ (Exception Handling) Giới thiệu • Giả sử một khối sẽ tạo một Exeption, một phương thức bắt một exception bởi sử dụng kết hợp các từ khóa try và catch. Một khối try/catch được đặt xung quanh code mà có thể tạo một exception. Code bên trong một khối try/catch được xem như là code được bảo vệ, và cú pháp để sử dụng try/catch trong C++ như sau: 5
- Xử lý ngoại lệ (Exception Handling) Giới thiệu 6
- Xử lý ngoại lệ (Exception Handling) Ném Exception trong C++ • Exception có thể bị ném ở bất cứ đâu bên trong một khối code bởi sử dụng các lệnh throw trong C++. Toán hạng của lệnh throw quyết định kiểu cho exception và có thể là bất kỳ biểu thức nào và kiểu kết quả của biểu thức quyết định kiểu của exception bị ném. 7
- Xử lý ngoại lệ (Exception Handling) Bắt Exception trong C++ • Khối catch theo sau khối try trong C++ sẽ bắt bất kỳ exception nào. Bạn có thể xác định kiểu của exception bạn muốn bắt và điều này được xác định bởi khai báo exception mà xuất hiện trong các dấu ngoặc đơn theo sau từ khóa catch trong C++. 8
- Xử lý ngoại lệ (Exception Handling) Bắt Exception trong C++ • Code trên sẽ bắt một exception có kiểu là ten_Exception. Nếu bạn muốn xác định rằng một khối catch nến xử lý bất kỳ kiểu exception nào bị ném trong một khối try, bạn phải đặt một dấu ba chấm (…) trong các dấu ngoặc đơn theo sau từ khóa catch, như sau: 9
- Xử lý ngoại lệ (Exception Handling) Ví dụ 10
- Xử lý ngoại lệ (Exception Handling) Ví dụ 11
- Xử lý ngoại lệ (Exception Handling) Standard Exception trong C++ • C++ cung cấp một danh sách các Standard Exception được định nghĩa trong mà chúng ta có thể sử dụng trong các chương trình. Những exception này được sắp xếp theo cấu trúc thứ tự cha-con như sau: 12
- Xử lý ngoại lệ (Exception Handling) Standard Exception trong C++ 13
- Xử lý ngoại lệ (Exception Handling) Standard Exception trong C++ • C++ cung cấp một danh sách các Standard Exception được định nghĩa trong mà chúng ta có thể sử dụng trong các chương trình. Những exception này được sắp xếp theo cấu trúc thứ tự cha-con như sau: 14
- Xử lý ngoại lệ (Exception Handling) Standard Exception trong C++ Exception Miêu tả std::exception Một exception và lớp cha của tất cả Standard Exception trong C++ std::bad_alloc Có thể được ném bởi new std::bad_cast Có thể được ném bởi dynamic_cast std::bad_exception Đây là thiết bị hữu ích để xử lý Unexpected Exception trong một chương trình C++ std::bad_typeid Có thể được ném bởi typeid std::logic_error Một exception mà theo lý thuyết có thể được phát hiện bởi việc đọc code std::domain_error Đây là một exception được ném khi một miền toán học không hợp lệ được sử dụng std::invalid_argument Được ném do các tham số không hợp lệ std::length_error Được ném khi một std::string quá lớn được tạo ra std::out_of_range Có thể được ném bởi một phương thức, ví dụ std::vector và std::bitset::operator[](). std::runtime_error Một exception mà theo lý thuyết không thể được phát hiện bởi việc đọc code std::overflow_error Được ném nếu một sự tràn luồng toán học (mathematical overflow) xuất hiện std::range_error Xuất hiện khi bạn cố gắng lưu giữ một giá trị bên ngoài dãy giá trị std::underflow_error Được ném nếu một mathematical underflow (sự tràn dưới) xuất hiện 15
- Xử lý ngoại lệ (Exception Handling) Định nghĩa Exception mới trong C++ • Bạn có thể định nghĩa các exception cho riêng bạn bằng việc kế thừa và ghi đè tính năng lớp exception trong C++. Ví dụ sau minh họa cách bạn có thể sử dụng lớp std::exception để triển khai exception của riêng bạn theo một cách chuẩn trong C++: 16
- Xử lý ngoại lệ (Exception Handling) Định nghĩa Exception mới trong C++ 17
- Bộ nhớ động Khái niệm • Bộ nhớ trong chương trình C/C++ của bạn được phân thành hai phần: § Stack: Tất cả biến được khai báo bên trong hàm sẽ nhận bộ nhớ từ stack trong C/C++. § Heap: Được sử dụng để cấp phát bộ nhớ động khi chương trình chạy. • Nhiều khi, bạn không biết trước bao nhiêu bộ nhớ bạn sẽ cần để lưu thông tin cụ thể trong một biến đã được định nghĩa và kích cỡ bộ nhớ cần thiết có thể được quyết định tại run time. 18
- Bộ nhớ động Khái niệm • Bạn có thể cấp phát bộ nhớ tại run time bên trong Heap cho biến đó với một kiểu đã cho bởi sử dụng một toán tử đặc biệt trong C/C++ mà trả về địa chỉ của không gian đã cấp phát. Toán tử này gọi là toán tử new trong C/C++. • Nếu bạn không cần thiết bộ nhớ động đã cấp phát nữa, bạn có thể sử dụng toán tử delete trong C/C++, sẽ giải phóng bộ nhớ đã được cấp phát trước đó bởi toán tử new. 19
- Bộ nhớ động Toán tử new và delete trong C/C++ • Đây là cú pháp chung để sử dụng toán tử new để cấp phát bộ nhớ động cho bất kỳ kiểu dữ liệu nào trong C/C+ +: • Ở đây, kieu_du_lieu có thể là bất kỳ kiểu dữ liệu có sẵn nào ví dụ như mảng hoặc các kiểu dữ liệu tự định nghĩa như lớp hoặc cấu trúc. 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật thi công 1: Phần III - Đặng Xuân Trường
150 p | 352 | 133
-
Bài giảng Kỹ thuật chế tạo máy: Chương 2 - Trương Quốc Thanh
27 p | 181 | 40
-
Bài giảng Kỹ thuật thi công: Chương 7 - ThS. Nguyễn Hoài Nghĩa, PGS.TS. Lưu Trường Văn (Phần 4.)
42 p | 104 | 16
-
Bài giảng Kỹ thuật thi công: Chương 7 - ThS. Nguyễn Hoài Nghĩa, PGS.TS. Lưu Trường Văn (Phần 4.2)
21 p | 139 | 15
-
Bài giảng Kỹ thuật tổ chức thi công: Chương 5 - ThS. Cao Tuấn Anh
44 p | 162 | 14
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 8 - TS. Đặng Thái Việt
43 p | 25 | 4
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 9 - TS. Đặng Thái Việt
34 p | 17 | 4
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 10 - TS. Đặng Thái Việt
33 p | 11 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 11 - TS. Đặng Thái Việt
22 p | 20 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 7 - TS. Đặng Thái Việt
31 p | 17 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 6 - TS. Đặng Thái Việt
61 p | 12 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 5 - TS. Đặng Thái Việt
35 p | 13 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 4 - TS. Đặng Thái Việt
36 p | 7 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 3 - TS. Đặng Thái Việt
48 p | 9 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 2 - TS. Đặng Thái Việt
25 p | 15 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 1 - TS. Đặng Thái Việt
33 p | 15 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 12 - TS. Đặng Thái Việt
16 p | 12 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn