Lập trình ứng dụng trong kỹ thuật cơ điện tử chương 4 c CLI NÂNG CAO

10 452 2
Lập trình ứng dụng trong kỹ thuật   cơ điện tử   chương 4  c CLI NÂNG CAO

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

Thông tin tài liệu

Lập trình ứng dụng kỹ thuật Chương TÓM TẮT CHƯƠNG : C++/CLI NÂNG CAO 1) Thư viện (Library): Theo khoa học máy tính, thư viện thuật ngữ dùng để tài nguyên (resources) dùng để phát triển phần mềm (software) hay chương trình (program) Các tài nguyên chương trình (sobroutine), class, biến hay số xây dựng sẵn Nói cách đơn giản, xem chương trình đoạn chương trình viết sẵn Trong đoạn chương trình khai báo xây dựng biến, số, hàm class Khi xây dựng chương trình mới, sử dụng lại biến, số, hàm hay class xây dựng thư viện cách gọi thư viện chương trình Trong C++/CLI, thường gặp thư viện có dạng tập tin có đuôi h, tập tin đuôi lib hay dll Trước tìm hiểu khác thư viện h, lib dll, tìm hiểu trình dịch (compile) thực thi (execute) chương trình Hình mô tả trình dịch thực thi chương trình C++/CLI Biên dịch (Compile) trình chuyển câu lệnh viết ngôn ngữ lập trình sang ngôn ngữ máy thi hành trực tiếp máy tính Chương trình ngôn ngữ cấp cao chuyển đổi gọi chương trình nguồn (source program) chương trình ngôn ngữ máy tạo gọi chương trình đối tượng (object program) mã đối tượng (object code) Khi người dùng muốn chạy chương trình, chương trình đối tượng nạp lên nhớ CPU thị chương trình thi hành Khi hướng dẫn thị chương trình, CPU truy xuất liệu tạo kết Cụ thể, C++/CLI, biên dịch trình chuyển từ file lập trình (file cpp) sang file đối tượng (file obj) Bộ môn Cơ điện tử Trang Lập trình ứng dụng kỹ thuật Chương Sau biên dịch chương trình, có nhiều file obj tạo Ngoài ra, chương trình sử dụng thư viện có sẵn Do đó, cần phải kết hợp tất lại thành file thực thi nhất, trình gọi liên kết (linker) Liên kết (Linker) trình kết hợp file đối tượng tạo từ trình biên dịch thư viện có sẵn thành file thực thi (file Exe) Có hai kiểu liên kết liên kết tĩnh (static linker) liên kết động (dynamic linker) Liên kết tĩnh : Các file h, cpp dịch thành file obj Sau file.obj liên kết với liên kết với file thư viện lib Cách có ưu điểm chạy cần file exe mà không cần thêm thư viện khác Tuy nhiên có nhược điểm file exe có kích thước lớn, nặng Liên kết động : Cũng tương tự liên kết tĩnh Tuy nhiên liên kết, file lib trung gian chứa thông tin giả Các thông tin thật lấy từ file dll trình thực thi Đo đó, thực thi, chương trình tự động liên kết đến file dll Nếu thiếu file dll trình thực thi bị lỗi Các file lib dll hai loại thư viện thường gặp C++/CLI : thư viện liên kết động (dynamic linking library), thư viện liên kết tĩnh (static library) 2) Header file source file : Trong ví dụ đề cập chương trước, chương trình ứng dụng mà xây dựng bao gồm file Tuy nhiên, cách thích hợp chương trình nhỏ không phức tạp Đối với chương trình ứng dụng lớn, phức tạp, nên chia thành nhiều thành phần nhỏ, thành phần thực nhiệm vụ định Việc chia chương trình thành phần nhỏ thực nhiều cách; cách thông dụng chia mã code thành nhóm nhỏ, nhóm gọi thư viện (library) Mỗi thư viện thực chất file riêng; biên dịch, file biên dịch thành file đối tượng riêng (file obj), sau file liên kết lại trình liên kết thành file thực thi (file exe) Việc khai báo thư viện có ưu điểm ta xây dựng chương trình ứng dụng khác chương trình có sử dụng tài nguyên (hàm, biến hay class) xây dựng thư viện chương trình trước, ta sử dụng lai tài nguyên mà không cần phải xây dựng lại cách sử dụng lại thư viện Hầu hết thư viện thường tách thành hai dạng file : header file source file a) Header file : Header file tương tự file lập trình mà làm quen chương trước Điểm khác biệt header file thường lưu với đuôi h thay cpp Chúng ta dùng notepad để xây dựng header file giống cách xây dựng file cpp trước (nhưng lưu file với đuôi h), xây dựng trực tiếp project Bộ môn Cơ điện tử Trang Lập trình ứng dụng kỹ thuật Chương Để tạo header file project, cửa sổ Solution Explorer project, click chuột phải vào dòng Header Files chọn Add ->New Item (trong trường hợp muốn sử dụng header file có sẵn chọn Existing Item) Trong cửa sổ Add New Item, chọn kiểu file header nhập tên file vào ô Name Thông thường, thư viện bao gồm header file source file Trong đó, header file chứa khai báo biến, hàm hay class source file chứa mã lệnh đầy đủ biến, hàm class khai báo header file Header file + Source file VD : //Sinh_vien.h Bộ môn Cơ điện tử Trang = Complete source Lập trình ứng dụng kỹ thuật Chương using namespace System; int x,y,z; String^ A,B,C; void Print(String^ A); UInt32 Fractorial (UInt16 a); ref class Sinh_vien { public: String^ Ho_ten; UInt32 MSSV; String^ Nganh_hoc; void Show(); }; Trong ví dụ trên, header file khai báo biến x,y,z A,B,C hàm Print() , Fractorial() class Sinh_vien Chú ý là khai báo biến, hàm class b) Source file : Nếu header file chứa khai báo source file chứa mã lệnh thực thi khai báo Source file có đuôi cpp Để tạo source file project, cửa sổ Solution Explorer project, click chuột phải vào dòng Source Files chọn Add ->New Item (trong trường hợp muốn sử dụng source file có sẵn chọn Existing Item) Trong cửa sổ Add New Item, chọn kiểu file C++ File nhập tên file vào ô Name Bộ môn Cơ điện tử Trang Lập trình ứng dụng kỹ thuật Chương Trong source file ta xây dựng hàm khai báo header file VD : //Sinh_vien.cpp #include “Sinh_vien.h” using namespace System; x = 10; y = 20; z = 8111; A = “Nguyen Van A”; B = “Co dien tu”; C = “SPKT”; void { Print(String^ A) Console::WriteLine(A); } UInt32 Fractorial (UInt16 a) { if (a > 1) return (a*Factorial(a-1)); else return 1; } void { Sinh_vien::Show() Console::WriteLine(Ho_ten); Console::WriteLine(MSSV); Console::WriteLine(Nganh_hoc); } Bộ môn Cơ điện tử Trang Lập trình ứng dụng kỹ thuật Chương Trong ví dụ trên, việc xây dựng biến hàm không khác so với cách thực qua chương trước Hai điểm đầu chương trình có thêm dòng lệnh #include “Sinh_vien.h” (được gọi thị tiền xử lí) tạo phương thức Show() class Sinh_vien cần phải khai báo class quản lí phương thức void Sinh_vien::Show() (khác so với cách khai báo thông thường class void Show()) Lưu ý : Trong header file source file khai báo hàm main() Tuy nhiên, sử dụng header file source file làm thư viện cho chương trình ứng dụng không nên khai báo hàm main() Nếu chương trình ứng dụng, muốn sử dụng thư viện đó, ta gọi thư viện thông qua thị tiền xử lí VD : //Program.cpp #include “Sinh_vien.h” #include “window.h” 3) Chỉ thi tiền xử lí (Preprocessor Directive) : Trước biên dịch chương trình sang mã đối tượng, cần có trình tiền xử lí Quá trình tiền xử lí lệnh định nghĩa số, ngăn trình biên dịch biên dịch đoạn mã đó, xác định thư viện liên kết với chương trình v.v… Các thị tiền xử lí khai báo đầu chương trình bắt đầu với dấu # Có nhiều loại thị tiền xử lí, nhiên đề cập đến hai loại khai báo tiền xử lí thường dùng include using a) Include Directive : Chỉ thị Include có tác dụng chèn đoạn mã vào mã code chương trình Thông thường chèn đoạn mã khai báo header file source file Có hai cách khai báo thị Include : sử dụng cặp kí tự “” Hai cách khai báo khác thứ tự tìm kiếm header file không khai báo đường dẫn cụ thể vị trí lưu trữ header file VD : //Program.cpp #include #include “Sinh_vien.h” #include b) // Có khai báo đường dẫn // Không khai báo đường dẫn Using Directive : Chỉ thị Using có tác dụng chèn đoạn mã vào mã code chương trình tương tự Include Điểm khác biệt Include dùng với file header h using sử dụng với file thư viện dll VD : //Program.cpp Bộ môn Cơ điện tử Trang Lập trình ứng dụng kỹ thuật Chương #using #using “Sinh_vien.dll” #iusing // Có khai báo đường dẫn // Không khai báo đường dẫn Lưu ý : Khi không báo đường dẫn cụ thể cho file h dll, ta phải đặt file thư mục với file chương trình hay nằm thư mục include khai báo 4) Xử lý ngoại lệ (Exception) : Chương trình luôn gặp phải tình huống, lỗi không mong muốn : người dùng nhập liệu không hợp lệ, ổ cứng bị đầy, truyền đối số cho hàm không hợp lệ… Những lỗi không xử lý khiến chương trình bị thoát Tuy nhiên, thực tế có chương trình quan trọng không cho phép dừng đột ngột ; cần có chế để khắc phục lỗi phát sinh trình chạy chương trình Cách xử lý lỗi truyền thống trình viết code, người lập trình phải viết thêm lệnh trả để thông báo lỗi sau lần gọi hàm phải có lệnh kiểm tra lỗi khiến cho chương trình phức tạp dài C++/CLI cung cấp cách thức xử lí lỗi giải vấn đề vửa kể thông qua Exception Exception chế thông báo xử lý lỗi tách riêng phần xử lý lỗi khỏi phần thuật toán Các thuật ngữ liên quan : • Một ngoại lệ đối tượng chứa thông tin lỗi dùng để truyền thông tin tới cấp thực thi cao • Quá trình truyền ngoại lệ từ ngữ cảnh thực thi hành tới mức thực thi cao gọi ném ngoại lệ (throw an exception) • Khi ngữ cảnh thực thi tiếp nhận truy nhập ngoại lệ, coi bắt ngoại lệ (catch the exception) Bắt xử lý ngoại lệ: Để bắt xử lý lỗi phát sinh trình chạy chương trình, dùng cấu trúc try{} … catch(){} try { //Chứa đoạn code có khả phát sinh lỗi } catch () { //Code xử lý lỗi } Bộ môn Cơ điện tử Trang Lập trình ứng dụng kỹ thuật Chương catch () { //Code xử lý lỗi } try : chứa đoạn lệnh mà người lập trình cho phát sinh lỗi qua trình chương trình thực thi catch: chứa đoạn mã lệnh xử lý lỗi có lỗi phát sinh tùy theo kiểu lỗi Tham số catch cho biết kiểu lỗi xử lý, kiểu lỗi có cách khai báo khác Trong trường hợp kiểu lỗi phát sinh thuộc dạng nào, dùng cách khai báo chung (Exception^ e) (…) Một cấu trúc bắt xử lý lỗi có khối try có nhiều khối catch; khối catch chứa đoạn lệnh xử lý lỗi loại lỗi khác Hoạt động chương trình xử lý lỗi: ban đầu chương trình thực thi đoạn lệnh chứa khối try; lỗi phát sinh, chương trình bỏ qua khối catch thực đoạn lệnh Trong trường hợp có phát sinh lỗi, chương trình dừng thực thi dòng lệnh phát sinh lỗi khối try tiến hành thực thi đoạn lệnh chứa khối catch, sau thực thi tiếp đoạn lệnh nằm khối xử lý lỗi Giả sử viết đoạn chương trình giải phương trình thông số phương trình người dùng nhập vào Trong trường hợp người dùng nhập sai định dạng (thay nhập số lại nhập kí tự chữ kí tự đặc biệt) chương trình bắt lỗi xử lý cách yêu cầu người dùng nhập lại thông số VD : //Exception.cpp #include “stdafx.h” using namespace System; void main() { float a,b,x; X: try { Console::Write (“Nhap thong so a = ”); a = Convert::ToSingle(Console::ReadLine()); Console::Write (“Nhap thong so b = ”); b = Convert::ToSingle(Console::ReadLine()); x = -b/a; } catch (Exception^ e) // Khong biet loi la loai gi, cung co the dung cach khai bao catch(…) { Console::WriteLine (“Ban da nhap sai dinh dang, xin vui lòng nhap lai ”); goto X; } Console::WriteLine(“Nghiem cua phuong trinh la ” + x); } Bộ môn Cơ điện tử Trang Lập trình ứng dụng kỹ thuật Chương Lưu ý : Thông thường có lỗi, chương trình chạy lại đoạn lệnh khối try nhiều lần Do ta không đưa đoạn lệnh khai báo biến vào khối try Class Exception: Đây Class quản lý kiểu lỗi phát sinh trình chương trình thực thi Mỗi có lỗi phát sinh, chương trình xác định kiểu lỗi chuyển đến đoạn chương trình xử lý lỗi tương ưng nhờ Class Exception Có nhiều kiểu lỗi khác nhau, hình trình bày số kiểu số thường gặp Các kiểu lỗi thường gặp: - Argument Exception: lỗi truyền tham số không cho hàm - ArithmeticException: lỗi tính toán (chia cho 0, tràn số) - DataExceptions: lỗi tương tác với liệu Trong trường hợp biết nguồn gốc phát sinh lỗi từ khóa định nghĩa kiểu lỗi, kiểm tra thông qua đoạn lệnh đơn giản sau VD : X: try { … // Code cần xác định lỗi } catch (Exception^ e) Bộ môn Cơ điện tử Trang Lập trình ứng dụng kỹ thuật Chương { Console::WriteLine (“Kieu loi ban gap la ” + Convert::ToString(e->GetType()); goto X; } Bộ môn Cơ điện tử Trang 10 ... try{} … catch(){} try { //Chứa đoạn code c khả phát sinh lỗi } catch () { //Code xử lý lỗi } Bộ môn C điện tử Trang Lập trình ứng dụng kỹ thuật Chương catch (

Ngày đăng: 06/12/2015, 04:27

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan