Môn học kỹ thuật lập trình

219 1 0
Môn học kỹ thuật lập trình

Đ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

Nội dung chính gồm 12 chương : 1. Ôn lại máy tính số, ngôn ngữ, thể hiện dữ liệu. 2. Phân tích topdown bottomup. 3. Cấu trúc dữ liệu giải thuật. 4. Cấu trúc ₫iều khiển gọi hàm. 5. Lặp và ₫ệ qui. 6. Cơ bản về kiểm thử phần mềm. 7. Ôn lại hướng ₫ối tượng. 8. Xây dựng phầm mềm bằng cách lắp ghép những linh kiện cơ bản. 9. Tính tổng quát hoá. 10. Thừa kế trong xây dựng class ₫ối tượng mới. 11. Tính ₫a xạ. 12. Tính thường trú

MƠN KỸ THUẬT LẬP TRÌNH Đối tượng : SV ₫ại học quy ngành CNTT Nội dung gồm 12 chương : Ơn lại máy tính số, ngơn ngữ, thể liệu Ôn lại hướng ₫ối tượng Phân tích top-down & bottom-up Xây dựng phầm mềm cách lắp ghép linh kiện Cấu trúc liệu & giải thuật Tính tổng quát hoá Cấu trúc ₫iều khiển & gọi hàm 10 Thừa kế xây dựng class ₫ối tượng Lặp ₫ệ qui Cơ kiểm thử phần mềm 11 Tính ₫a xạ 12 Tính thường trú Tài liệu tham khảo : ƒ Tập slide giảng & thực hành môn học ƒ CD MSDN Microsoft Visual Studio Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Slide MƠN KỸ THUẬT LẬP TRÌNH Chương ƠN LẠI MÁY TÍNH SỐ, NGƠN NGỮ LẬP TRÌNH, THỂ HIỆN DỮ LIỆU Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide Các khái niệm máy tính số ƒ Máy tính số thiết bị thực số hữu hạn chức (tập lệnh), chế thực lệnh tự ₫ộng, bắt ₫ầu từ lệnh ₫ược ₫ịnh ₫ó lệnh cho ₫ến lệnh cuối Danh sách lệnh ₫ược thực ₫ược gọi chương trình ƒ Các lệnh mà máy hiểu thực ₫ược ₫ược gọi lệnh máy Ta dùng ngôn ngữ ₫ể miêu tả lệnh Ngơn ngữ lập trình cấu thành từ yếu tố : cú pháp ngữ nghĩa Cú pháp qui ₫ịnh trật tự kết hợp phần tử ₫ể cấu thành lệnh (câu), cịn ngữ nghĩa cho biết ý nghĩa lệnh ₫ó ƒ Bất kỳ cơng việc (bài tốn) ngồi ₫ời ₫ược phân chia thành trình tự nhiều cơng việc nhỏ Trình tự cơng việc nhỏ ₫ược gọi giải thuật giải công việc ngồi ₫ời Mỗi cơng việc nhỏ ₫ược chia nhỏ cịn phức tạp, ⇒ cơng việc ngồi ₫ời ₫ược miêu tả trình tự lệnh máy (chương trình ngôn ngữ máy) Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide Các khái niệm máy tính số (tt) ƒ Vấn ₫ề mấu chốt việc dùng máy tính giải cơng việc ngồi ₫ời lập trình (₫ược hiểu nơm na qui trình xác ₫ịnh trình tự ₫úng lệnh máy ₫ể thực cơng việc) Cho ₫ến nay, lập trình công việc người (với trợ giúp ngày nhiều máy tính) ƒ Với cơng nghệ phần cứng nay, ta chế tạo máy tính mà tập lệnh máy sơ khai, lệnh máy thực cơng việc nhỏ ₫ơn giản ⇒ cơng việc ngồi ₫ời thường tương ₫ương với trình tự lớn (hàng triệu) lệnh máy ⇒ Lập trình ngơn ngữ máy phức tạp, tốn nhiều thời gian, công sức, kết khó bảo trì, phát triển ƒ Ta muốn có máy luận lý với tập lệnh (₫ược ₫ặc tả ngơn ngữ lập trình) cao cấp gần gủi với người Ta thường thực máy máy vật lý + chương trình dịch Có loại chương trình dịch : trình biên dịch (compiler) trình thơng dịch (interpreter) Khoa Cơng nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide Các khái niệm máy tính số (tt) ƒ Gọi ngơn ngữ máy vật lý N0 Trình biên dịch ngôn ngữ N1 sang ngôn ngữ N0 nhận ₫ầu vào chương trình ₫ược viết ngơn ngữ N1, phân tích lệnh N1 chuyển thành danh sách lệnh ngơn ngữ N0 có chức tương ₫ương Để viết chương trình dịch từ ngơn ngữ N1 sang N0 dễ dàng, ₫ộ phức tạp lệnh ngôn ngữ N1 không cao so với lệnh ngơn ngữ N0 ƒ Sau có máy luận lý hiểu ₫ược ngơn ngữ luận lý N1, ta ₫ịnh nghĩa thực máy luận lý N2 theo cách tiếp tục ₫ến ta có máy luận lý hiểu ₫ược ngôn ngữ Nm gần gũi với người, dễ dàng miêu tả giải thuật toán cần giải ƒ Nhưng qui trình chưa có ₫iểm dừng, với u cầu ngày cao kiến thức ngày nhiều, người ta tiếp tục ₫ịnh nghĩa ngôn ngữ với tập lệnh ngày gần gũi với người ₫ể miêu tả giải thuật dễ dàng, gọn nhẹ sáng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide Các cấp ₫ộ ngơn ngữ lập trình ƒ Ngơn ngữ máy vật lý loại ngơn ngữ thấp mà người lập trình bình thường dùng ₫ược Các lệnh tham số lệnh ₫ược miêu tả số nhị phân (binary) hay hexadecimal Đây loại ngôn ngữ mà máy vật lý hiểu trực tiếp, người gặp nhiều khó khăn việc viết bảo trì chương trình cấp ƒ Ngơn ngữ assembly gần với ngôn ngữ máy, lệnh ngôn ngữ assembly tương ứng với lệnh máy ₫ược biểu diễn dạng gợi nhớ Ngoài ra, người ta tăng cường thêm khái niệm "lệnh macro" ₫ể nâng sức mạnh miêu tả giải thuật ƒ Ngôn ngữ cấp cao theo trường phái lập trình cấu trúc Pascal, C, Tập lệnh ngôn ngữ mạnh gần với tư người bình thường ƒ Ngôn ngữ hướng ₫ối tượng C++, Visual Basic, Java, C#, cải tiến phương pháp cấu trúc chương trình cho sáng, ổn ₫ịnh, dễ phát triển thay linh kiện Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide Thí dụ chương trình VC++ ƒ Các lệnh chương trình (code) truy xuất (₫ọc và/hoặc ghi) thơng tin (dữ liệu) ƒ Chương trình giải tốn ₫ó truy xuất nhiều liệu khác với tính chất ₫a dạng Để quản lý việc truy xuất liệu cụ thể, ta cần thơng tin liệu ₫ó : - tên nhận dạng (identifier) xác ₫ịnh vị trí liệu - kiểu liệu (type) miêu tả cấu trúc liệu - tầm vực truy xuất (visibility) xác ₫ịnh lệnh ₫ược phép truy xuất liệu tương ứng ƒ Chương trình cổ ₫iển = liệu + giải thuật ƒ Chương trình (function, subroutine, ) ₫oạn code thực chức ₫ược dùng nhiều lần nhiều vị trí chương trình, cho phép cấu trúc chương trình, sử dụng lại code Khoa Cơng nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide Thí dụ chương trình VC++ ƒ VC++ sử dụng tập ký tự ASCII ký tự ngôn ngữ Trong chuỗi, VC++ cho phép dùng ký tự ANSI ƒ Để xác ₫ịnh câu lệnh (statement), VC++ dùng từ khóa (key word) if, else, for, while, Không ₫ược dùng từ khóa cho mục ₫ích riêng người lập trình ƒ VC++ phân biệt rõ ràng chữ hoa chữ thường (có thể dùng If, IF ₫ể ₫ặt tên biến mà khơng sợ trùng với từ khóa if) ƒ Chương trình VC++ danh sách câu lệnh VC++ với ₫ộ dài ₫ó trình tự ₫ó tùy thuộc vào vấn ₫ề cần giải giải thuật giải vấn ₫ề ₫ó ƒ Nếu chương trình nhỏ, ₫ược chứa file *.cpp, chương trình lớn, thường ₫ược chia nhỏ thành nhiều module chức năng, module thường ₫ược lưu file *.cpp Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide Cấu trúc chương trình cổ ₫iển Chương trình = cấu trúc liệu + giải thuật module (package) global data local data of module entry 'start' local data of function Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide Mơ hình máy tính số Von Neumann chứa code data ₫ang thực thi Bộ nhớ (Memory) thực thi lệnh chương trình Đơn vị xử lý (CPU) giao tiếp với bên (thường người) ₫ể nhập/xuất tin Các thiết bị vào (I/O) Bus giao tiếp Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương 1: Ơn lại máy tính số, ngơn ngữ lập trình, thể liệu Slide 10 Tđnh tưíng quất hốa (tt) ‰ Hàm tổng quát hóa (function templates) cho phép ta ₫ặc tả tập hàm mà dùng chung ₫oạn lệnh thực thi tác ₫ộng liệu thuộc kiểu hay class khác và/hoặc với số lượng khác ‰ Class tổng quát hóa (function templates) cho phép ta ₫ặc tả tập class có tính chất giao diện giống tác ₫ộng liệu thuộc kiểu hay class khác và/hoặc với số lượng khác Class tổng quát hóa cho phép sản sinh tự ₫ộng class bình thường, class bình thường tự tạo ₫ối tượng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương : Tổng quát hóa xây dựng hàm & class Slide 205 Function template Function templates cho phép ta ₫ặc tả tập hàm mà dùng chung ₫oạn lệnh thực thi tác ₫ộng liệu thuộc kiểu hay class khác Thí dụ hàm IntSwap() sau ₫ây : void IntSwap(int& a, int& b ) { int c = a; a = b; b = c; } cho phép swap số nguyên, template MySwap() sau : template void MySwap( T& a, T& b ) { T c( a ); a = b; b = c; } ₫ịnh nghĩa họ hàm swap liệu có kiểu Khoa Cơng nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương : Tổng qt hóa xây dựng hàm & class Slide 206 Function template (tt) ƒ Ta gọi hàm “template function” y gọi hàm bình thường, khơng có khác biệt : int i, j; char k; MySwap( i, j ); //OK MySwap( i, k ); //Sai khác kiểu ƒ Ta ₫ặc tả tham số rõ ràng gọi hàm “template function”, thí dụ : MySwap(i,j); //tạo hàm MySwap (int&, int&) gọi với (i,j) Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương : Tổng quát hóa xây dựng hàm & class Slide 207 Class template Class templates cho phép ta ₫ặc tả tập class mà dùng chung interface cấu trúc liệu tác ₫ộng liệu thuộc kiểu hay class khác Thí dụ class IntStack sau ₫ây : class IntStack int IntStack::pop ( void ) { int StackBuffer[100]; { if ( cItems < 100) int cItems; return StackBuffer[cItems++]; public: else void IntStack( void ) : cItems( 100 ) { }; throw "Stack underflow error."; void push( const int item ); } int pop( void ); }; void IntStack::push( const int item ) { if ( cItems > ) StackBuffer[ cItems] = item; else throw "Stack overflow error."; return; } Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương : Tổng quát hóa xây dựng hàm & class Slide 208 Class template Cú pháp khai báo class template : template-declaration : template < template-argument-list > declaration template-argument-list : template-argument template-argument-list , template-argument template-argument : type-argument argument-declaration type-argument : class identifier typename identifier declaration : ₫ặc tả class bình thường có nhiều vị trí có dùng tham số template Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương : Tổng qt hóa xây dựng hàm & class Slide 209 Class template (tt) template class MyStack { T StackBuffer[i]; int cItems; public: void MyStack( void ) : cItems( i ) {}; void push( const T item ); T pop( void ); }; template void MyStack< T, i >::push( const T item ) { if( cItems > ) StackBuffer[ cItems] = item; else throw "Stack overflow error."; return; } Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương : Tổng quát hóa xây dựng hàm & class Slide 210 Class template (tt) template T MyStack< T, i >::pop( void ) { if( cItems < i ) return StackBuffer[cItems++]; else throw "Stack underflow error."; } Cho phép ₫ặc tả class miêu tả stack gồm nhiều liệu ₫ó MyStack intstack; // biến quản lý stack có tối ₫a 20 số nguyên MyStack strstack; // biến quản lý stack có tối ₫a 40 chuỗi MyStack dblstack; // biến quản lý stack có tối ₫a 100 số thực Khoa Cơng nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương : Tổng qt hóa xây dựng hàm & class Slide 211 Class template Xem phần phụ lục chương ₫ể biết chi tiết, cụ thể template MFC ₫ược dùng phổ biến CArray CList Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương : Tổng quát hóa xây dựng hàm & class Slide 212 MƠN KỸ THUẬT LẬP TRÌNH Chương 10 THỪA KẾ TRONG XÂY DỰNG CLASS MỚI Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 10 : Thừa kế xây dựng class Slide 213 Lợi ích thừa kế xây dựng class ‰ ‰ Như ta ₫ã biết, xây dựng ứng dụng theo hướng ₫ối tượng xây dựng class có ₫ối tượng ₫ược dùng ₫ể phục vụ ứng dụng ₫ó Để giảm nhẹ cơng sức, thời gian xây dựng class mới, ta thường dùng tính thừa kế : ₫ịnh nghĩa class dựa hay nhiều class sẵn có tăng cường, cá nhân hóa vài chi tiết Thí dụ ứng dụng VC++ có giao diện SDI thường ₫ược cấu thành loại ₫ối tượng : ƒ Đối tượng miêu tả ứng dụng (Application), ƒ Đối tượng miêu tả cửa sổ giao diện ứng dụng chứa title bar, menu bar, toolbar, statusbar vùng chứa tài liệu ứng dụng (Frame) ƒ Đối tượng miêu tả vùng chứa tài liệu ứng dụng (View) ƒ Đối tượng lưu giữ thông tin ₫ang ₫ược hiển thị ₫ối tượng View (Document) Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương 10 : Thừa kế xây dựng class Slide 214 Lợi ích thừa kế xây dựng class (tt) ‰ Mặc dù ₫ối tượng Application, Frame, View, Document cấu thành ứng dụng ₫ó có nét riêng phụ thuộc vào ứng dụng, chúng có tính chất chung giống Do ₫ó Microsoft ₫ã ₫ịnh nghĩa class CWndApp, CFrameWnd, CView, CDocument làm tảng ₫ể ứng dụng thừa kế thêm số tính chất ₫ặc thù mình, nhờ tối thiểu hóa cơng sức, thời gian viết ứng dụng SDI ‰ Qui trình Wizard VC++ cho phép ta xây dựng class cấu thành ứng dụng cách ₫ặc tả tính chất riêng ban ₫ầu ứng dụng Giả sử ta tạo Project VnIE ₫ể quản lý ứng dụng SDI Wizard tạo class : ƒ ƒ ƒ ƒ class CVnIEApp : public CWinApp { //phần tăng cường thêm } class CMainFrame : public CFrameWnd { //phần tăng cường thêm } class CVnIEView : public CView { //phần tăng cường thêm } class CVnIEDoc : public CDocument { //phần tăng cường thêm } Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 10 : Thừa kế xây dựng class Slide 215 Lợi ích thừa kế xây dựng class (tt) ‰ Để thấy rõ lợi ích to lớn tính thừa kế, ta thử xây dựng ứng dụng duyệt Web có khả tương ₫ương với trình Internet Explorer Microsoft, phải mạnh chỗ hiển thị ₫úng trang Web tiếng Việt dùng mã tiếng Việt Nếu xây dựng từ ₫ầu ứng dụng này, ta phải bỏ nhiều công sức phải nắm vững kiến thức thiết yếu sau : ƒ Lập trình mạng dùng socket, nắm vững giao thức HTTP ₫ược dùng client server Web ƒ Ngôn ngữ HTML, script, lý thuyết chương trình dịch ₫ể thơng dịch trang Web hiển thị kết lên hình ƒ Đồ họa máy tính ₫ể hiển thị kết dạng văn hay ₫ồ họa trang web ƒ Các chế tương tác máy người dùng ₫ể tương tác với yêu cầu người dùng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương 10 : Thừa kế xây dựng class Slide 216 Lợi ích thừa kế xây dựng class (tt) ‰ ‰ ‰ Tuy nhiên ta biết Microsoft ₫ã xây dựng sẵn class tên CHtmlView thực hết chức duyệt Web tích hợp class sẵn Windows ta viết ứng dụng duyệt Web nhanh chóng dễ dàng cách thừa kế lại class CHtmlView Qui trình ₫iển hình ₫ể xây dựng ứng dụng duyệt Web theo ý tưởng thừa kế VC++ tạo Project dạng SDI chuẩn (thí dụ với tên VnIE) khai báo lại class cha class CVnIEView sau : class CVnIEView : public CHtmlView { //phần tăng cường thêm } Nếu chưa tăng cường thêm chi tiết vùng làm việc ứng dụng ta có chức y ₫ối tượng CHtmlView Như ta cần thiết kế giao diện ứng dụng : thiết kế menu, toolbar, ₫ịnh nghĩa hàm xử lý kiện kết hợp với option menu hay icon toolbar, hàm xử lý chủ yếu làm "cị", cần gọi hàm sẵn có class cha (CHtmlView) thực chức mà người dùng yêu cầu Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương 10 : Thừa kế xây dựng class Slide 217 Lợi ích thừa kế xây dựng class (tt) ‰ ‰ ‰ Do class cha CHtmlView chưa có khả hiển thị ₫úng trang web tiếng Việt nhiều mã khác nhau, nên ta muốn ứng dụng duyệt WEB giải ₫ược tính ta dùng khả "override" method class cha ₫ể tăng cường sức mạnh method ₫ó Nếu tìm hiểu kỹ class CHtmlView, ta thấy Microsoft ₫ã tạo sẵn nhiều ₫iểm mở rộng, thí dụ ta override hàm xử lý kiện OnDownloadComplete ₫ể chèn thêm ₫oạn code nhận dạng mã tiếng Việt nội dung vừa download ₫ược chuyển mã nội dung mã có font ₫ang dùng máy khách hàng trước hiển thị trang web ₫ược hiển thị ₫úng Ở ₫ây, lần tính thừa kế cần thiết, ta có class cung cấp chức nhận dạng mã chuyển mã tiếng Việt (có thể chưa hồn chỉnh), ta thừa kế class ₫ó hồn chỉnh tính chất cịn thiếu, nhờ ₫ó tối thiểu hóa công sức, thời gian Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Kỹ thuật lập trình Chương 10 : Thừa kế xây dựng class Slide 218 Lợi ích thừa kế xây dựng class (tt) Xem phần phụ lục chương 10 ₫ể biết chi tiết, cụ thể qui trình xây dựng ứng dụng VnIE có chức duyệt Web tiếng Việt ₫ã trình bày slide trước Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Môn : Kỹ thuật lập trình Chương 10 : Thừa kế xây dựng class Slide 219

Ngày đăng: 25/08/2023, 14:13

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

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

Tài liệu liên quan