intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: _ _ | Ngày: | Loại File: PPTX | Số trang:83

24
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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!

Chủ đề:
Lưu

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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. Xử lý ngoại lệ (Exception Handling) Giới thiệu 6
  7. 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
  8. 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
  9. 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
  10. Xử lý ngoại lệ (Exception Handling) Ví dụ 10
  11. Xử lý ngoại lệ (Exception Handling) Ví dụ 11
  12. 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
  13. Xử lý ngoại lệ (Exception Handling) Standard Exception trong C++ 13
  14. 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
  15. 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
  16. 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
  17. Xử lý ngoại lệ (Exception Handling) Định nghĩa Exception mới trong C++ 17
  18. 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2