Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 171 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
171
Dung lượng
2,71 MB
Nội dung
TS VÕ TRUNG HÙNG LẬP TRÌNH TRỰC QUAN Đà Nẵng, 01-2008 LỜI NÓI ĐẦU Lịch sử phát triển Tin học ln gắn liền với việc tìm kiếm phương pháp lập trình để giúp cho người sử dụng triển khai ứng dụng cách dễ dàng, nhanh chóng hiệu Như biết, loại máy tính (sử dụng loại CPU – Central Processing Unit xác định) hiểu thực trực tiếp lệnh chương trình theo loại ngôn ngữ dành riêng gọi ngôn ngữ máy Tuy nhiên, triển khai ứng dụng thực tế mà phải viết chương trình trực tiếp ngơn ngữ máy phức tạp, địi hỏi thời gian công sức lớn, nhiều khơng thể thực Vì vậy, người ta tìm cách xây dựng ngơn ngữ lập trình riêng gần với ngôn ngữ tự nhiên, thuận lợi cho việc triển khai ứng dụng Khi thực chương trình ngơn ngữ phải qua bước dịch chương trình sang ngơn ngữ máy để thực Từ trước đến có nhiều ngơn ngữ lập trình đời phục vụ đắc lực cho việc triển khai ứng dụng máy tính Trong giai đoạn đầu, ngơn ngữ lập trình dễ sử dụng ngơn ngữ máy khó với lập trình viên chưa đủ mạnh để dễ dàng triển khai thuật toán Chương trình chưa có tính cấu trúc chặt chẽ mặt liệu tổ chức chương trình Vì vậy, việc triển khai ứng dụng thực tế ngơn ngữ lập trình khó khăn Giai đoạn thời kỳ ngôn ngữ lập trình có cấu trúc Các ngơn ngữ lập trình có đặc điểm có tính cấu trúc chặt chẽ mặt liệu tổ chức chương trình Một loạt ngơn ngữ lập trình có cấu trúc đời dược sử dụng rộng rãi : PASCAL, C, BASIC Giai đoạn thời kỳ lập trình hướng đối tượng phương pháp lập trình có bước biến đổi mạnh Trong ngơn ngữ lập trình có cấu trúc ứng dụng bao gồm hai thành phần riêng liệu chương trình Tuy chúng có quan hệ chặt chẽ hai đối tượng riêng biệt Trong phương pháp lập trình hướng đối tượng đối tượng lập trình bao hàm liệu phương thức hành động liệu Vì vậy, việc lập trình đơn giản mang tính kế thừa cao, tiết kiệm thời gian lập trình Tuy nhiên, với phương pháp lập trình địi hỏi lập trình viên phải nhớ nhiều câu lệnh với lệnh có cú pháp tác dụng riêng, viết chương trình phải tự lắp nối lệnh để có chương trình giải tốn riêng biệt Trong xu hướng phát triển mạnh mẽ tin học, số người sử dụng máy tính tăng lên nhanh máy tính sử dụng hầu hết lĩnh vực đời sống nên đòi hỏi ngơn ngữ lập trình phải đơn giản, dễ sử dụng mang tính đại chúng cao Chính phương pháp lập trình trực quan đời Đặc điểm ngơn ngữ lập trình trực quan dễ sử dụng, triển khai ứng dụng cách nhanh chóng Đặc điểm bật phương pháp lập trình trực quan : - Cho phép xây dựng chương trình theo hướng kiện (Event-Driven Programming, nghĩa chương trình ứng dụng viết theo kiểu đáp ứng dựa theo tình xảy lúc thực chương trình Tình bao gồm người sử dụng ấn phím tương ứng, chọn lựa nút lệnh gọi lệnh từ ứng dụng khác chạy song song lúc - Người lập trình trực tiếp tạo khung giao diện (interface), ứng dụng thơng qua thao tác hình dựa vào đối tượng (ojbect) hộp hội thoại nút điều khiển (control button), đối tượng mang thuộc tính (properties) riêng biệt : màu sắc, Font chữ mà ta cần chọn lựa danh sách cho sẵn - Khi dùng ngôn ngữ lập trình trực quan ta phải tự viết lệnh, tổ chức chương trình cách rắc rối mà cần khai báo việc cần làm tình xuất - Máy tính dựa vào phần thiết kế khai báo lập trình viên để tự động tạo lập chương trình Như với kỹ thuật lập trình trực quan, lập trình viên giống nhà thiết kế, tổ chức để tạo biểu mẫu, đề nghị công việc cần thực máy tính dựa vào để xây dựng chương trình Hiện ngơn ngữ lập trình, hệ quản trị sở liệu theo hướng trực quan thường dùng : Visual Basic, Visual Foxpro, Visual C, Delphi Cuốn sách viết dựa sở giáo trình “Lập tình trực quan” giảng dạy Khoa Công nghệ Thông tin, Trường Đại học Bách Khoa Đà Nẵng từ năm 1994 đến Nội dung sách gồm ba phần chính: Phần thứ (tương ứng với chương 1) giới thiệu tổng quan ngơn ngữ lập trình trực quan; Phần thứ hai (tương ứng với chương 2) giới thiệu lập trình trực quan với MS Access, công cụ mạnh để quản trị sở liệu phát triển phần mềm quản lý; Phần thứ ba (từ chương đến 10) tập trung giới thiệu cách thức lập trình với ngơn ngữ Visual Basic, ngơn ngữ lập trình trực quan đại cung cấp cho người sử dụng công cụ mạnh để thiết kế giao diện, kết nối đến sở liệu, xây dựng hiệu ứng đồ hoạ Chúng hy vọng sách giúp ích nhiều cho sinh viên trường đại học, cao đẳng; học viên sở đào tạo lập trình viên; lập trình viên việc tìm hiểu, khám phá ngơn ngữ lập trình trực quan Đặc biệt, sách giúp bạn làm chủ MS Access Visual Basic để phát triển ứng dụng sở tự nghiên cứu để làm chủ ngơn ngữ lập trình trực quan khác CHƯƠNG LẬP TRÌNH TRỰC QUAN I Giới thiệu Từ tranh tìm thấy hang động thời tiền sử chữ tượng hình đến tranh Campbell’s soup cans, nhân loại trải qua thời gian dài sử dụng hình ảnh công cụ truyền thông hữu hiệu Lập trình trực quan đời để trả lời câu hỏi không thử giao tiếp với máy tính chế độ đồ hoạ (graphic mode) mà chế độ văn (text mode)? Chúng ta sử dụng máy tính để giao tiếp qua hình ảnh không không làm việc với máy tính cách trực quan sinh động giải số toán đặt thực tế? Một cách hiển nhiên, kết đạt từ ngơn ngữ lập trình trực quan (VPL - Visual Programming Languages) trả lời hai vấn đề nêu hồn tồn thực Những câu hỏi động lực để người ta tiến hành nghiên cứu để tạo ngôn ngữ VPL Trước hết, nhiều người suy nghĩ nhớ lại vấn đề liên quan đến khả biểu đạt hình ảnh Người ta liên hệ đến giới thực theo cách mà đồ hoạ có sử dụng hình ảnh thành tố tư sáng tạo Thêm vào đó, ngơn ngữ lập trình chế độ văn (Textual Programming Languages) bộc lộ hạn chế, đặc biệt người sử dụng phải học nhiều để sử dụng sản phẩm phần mềm tạo chúng Việc giảm thiểu xố bỏ hồn tồn khoảng cách từ ý tưởng đến phát triển ứng dụng học tập để sử dụng cần thiết Hơn nữa, đa dạng ứng dụng bao gồm khoa học hình dung, tương tác sáng tạo mô góp phần đặc biệt tạo phương pháp phát triển trực quan Trong chương này, tập trung giới thiệu kết ban đầu lĩnh vực phát triển ngơn ngữ lập trình trực quan nhằm trả lời vấn đề đặt Chúng bắt đầu việc giới thiệu đôi nét lịch sử công việc/kết ban đầu sử dụng làm sở để tiến hành nghiên cứu đại lĩnh vực Chúng tơi trình bày việc phân loại quan tâm mặt lý thuyết ngơn ngữ trực quan Phần cuối chương này, giới thiệu số ngôn ngữ lập trình trực quan số ví dụ chúng định hướng nghiên cứu thuộc lĩnh vực tương lai II Lịch sử ngơn ngữ lập trình trực quan Lĩnh vực lập trình trực quan kết hợp đồ hoạ máy tính, ngơn ngữ lập trình tương tác người máy Nó tạo từ nhiều nghiên cứu độc lập có nhiều cơng trình nghiên cứu xem tiên phong lĩnh vực Chúng muốn giới thiệu nghiên cứu lĩnh vực hệ thống Sketchpad Ivan Sutherland vào năm 1963 Sketchpad thiết kế thực máy tính TX-2 MIT xem ứng dụng đồ hoạ máy tính Hệ thống cho phép người sử dụng làm việc với bút vẽ để tạo hình ảnh khơng gian chiều (2D) đơn giản đường thẳng, đường tròn xử lý chép phép biến đổi hình học khác hình vẽ Giao diện đồ hoạ hỗ trợ dành cho người sử dụng xem bước đột phá có đóng góp quan trọng để tạo nên ngơn ngữ lập trình trực quan sau Bằng cách định nghĩa ràng buộc thích hợp, người sử dụng phát triển cấu trúc liên kết học phức tạp tiếp đến cho chúng chuyển động hệ thống thời gian thực Chúng ta thấy ý tưởng sử dụng ràng buộc đặc tả trực quan cách lập trình hướng đối tượng dùng lại nhiều ngôn ngữ VPL sau Em trai Ivan Sutherland William có đóng góp quan trọng lĩnh vực lập trình trực quan Từ năm 1965, ơng ta sử dụng máy tính TX-2 để phát triển ngơn ngữ đặc tả dịng liệu trực quan đơn giản Hệ thống cho phép người sử dụng khởi tạo, dò lỗi thực thi biểu đồ dịng liệu mơi trường trực quan Cột mốc việc phát triển ngôn ngữ VPL năm 1975 với việc công bố luận án tiến sĩ David Canfield Smith với tiêu đề “Pygmalion: A Creative Programming Environment” Công việc Smith đánh dấu khởi đầu loạt nghiên cứu lĩnh vực ngày hơm Ví dụ, Pygmalion thể mơ hình lập trình dựa biểu tượng (icon), người sử dụng khởi tạo, sửa đổi liên kết chúng đến đối tượng hình ảnh nhỏ gọi icons định nghĩa thuộc tính để thực tính tốn Những kết Smith nhiều thành tựu nghiên cứu khác sau góp phần hình thành nên tiêu chuẩn lý thuyết biểu tượng (icon theory) Nhiều ngôn ngữ VPL đại sử dụng cách tiếp cận dựa lý thuyết biểu tượng Pygmalion sử dụng khái niệm lập trình ví dụ, người sử dụng thấy làm mà hệ thống thực công việc trường hợp đặc biệt hệ thống sử dụng thông tin để phát sinh tự động chương trình để thực cơng việc trường hợp tổng quát Trong hệ thống Smith, người sử dụng thiết lập môi trường để nhớ chế độ (“remember” mode), thực việc tính tốn, tắt chế độ nhớ, nhận kết chương trình tập đơn giản giống tập Smalltalk, để thực việc tính tốn đầu vào III Phân loại ngôn ngữ lập trình trực quan Khi lĩnh vực VPL chín muồi, ngày nhiều nghiên cứu hướng đến việc sáng tạo mạnh mẽ tiêu chuẩn để phân loại công việc lĩnh vực Một hệ thống phân loại không giúp nhà nghiên cứu việc xác định công việc liên quan mà cung cấp ranh giới để so sánh đánh giá hệ thống khác Một số tên tuổi có đóng góp quan trọng lĩnh vực Chang, Shu, Burnett Họ phân loại đưa định nghĩa để xác định đặc trưng nhóm VPL Sau phân loại ngơn ngữ lập trình trực quan chính: - Các ngơn ngữ trực quan tuý - Những hệ thống lai trực quan văn (text) - Những hệ thống lập trình ví dụ - Những hệ thống ràng buộc đối tượng - Những hệ thống xây dựng dựa biểu mẫu (form) Lưu ý việc phân loại khơng loại trừ lẫn Do đó, có nhiều ngơn ngữ thuộc nhóm thuộc nhóm khác Chỉ riêng nhóm ngơn ngữ trực quan tuý (Purely Visual Languages) quan trọng Các ngôn ngữ đặc trưng việc dựa hoàn toàn kỹ thuật trực quan thơng qua tiến trình lập trình Người lập trình vận dụng biểu tượng biểu diễn đồ hoạ khác để khởi tạo chương trình gỡ lỗi thực thi mơi trường trực quan Chương trình biên dịch trực tiếp từ trình bày trực quan không dịch đến ngôn ngữ trung gian dựa chế độ văn (interim textbased language) Những ví dụ hệ thống tuý trực quan VIPR, Prograph PICT Trong nhiều tài liệu thuộc lĩnh vực này, phân loại xa đến việc phân loại nhóm nhóm ngơn ngữ biểu tượng (iconic languages) phi biểu tượng (noniconic languages), ngôn ngữ hướng đối tượng (object-oriented), ngôn ngữ lập trình hàm (functional programming), ngơn ngữ mệnh lệnh (imperative languages) Tuy nhiên, mục đích nhắm đến nhóm để làm bật khác ngơn ngơn ngữ lập trình hướng trực quan (visually-oriented) ngôn ngữ VPL khác Một nhóm quan trọng ngơn ngữ VPL móc nối hai phần tử trực quan văn (text) Những hệ thống lai bao gồm hai yếu tố, chương trình khởi tạo cách trực quan sau dịch đến ngôn ngữ lớp sử dụng chế độ văn hệ thống bao gồm việc sử dụng phần tử đồ hoạ ngôn ngữ theo chế độ văn Những ví dụ cho loại ngơn ngữ kiểu Rehearsal World Work Erwig Trong hệ thống cũ, người sử dụng huấn luyện hệ thống để giải vấn đề đặc biệt việc vận dụng nhân tố đồ hoạ (graphical “actors”) tiếp đến hệ thống phát sinh chương trình Smalltalk Smalltalk ngơn ngữ lập trình mơi trường lập trình bậc cao, xem q trình tính tốn đối tượng gửi thơng báo truyền tin lẫn Ngôn ngữ Alan Kay cộng Trung tâm Nghiên cứu Palo Alto ( PARC) hãng Xerox Corporation xây dựng nên SmallTalk ngơn ngữ khai báo, khuyến khích lập trình viên định nghĩa đối tượng theo thuật ngữ liên quan đến ứng dụng dự kiến Đây ngơn ngữ mạnh xây dựng đối tượng dễ dàng Vì ngơn ngữ đòi hỏi nhớ lớn để tạo chương trình chạy nhanh hiệu quả, nên lập trình viên chun nghiệp cịn ưa thích ngôn ngữ C hợp ngữ Tuy nhiên, SmallTalk truyền cảm hứng để nhà sản xuất phần mềm cho đời HyperTalk, ngơn ngữ lập trình ứng dụng cung cấp kèm với tất máy Macintosh bán từ 1987 Trong áo mình, SmallTalk hồn thiện mục tiêu làm cho việc lập trình máy tính trở nên dễ dàng hơn; hàng chục ngàn người dùng Macintosh học cách lập trình theo HyperTalk Ngồi hai nhóm này, có nhiều ngơn ngữ VPL xếp vào nhóm Ví dụ, số ngơn ngữ VPL theo hướng Pygmalion cách cho phép người sử dụng khởi tạo vận dụng đối tượng đồ hoạ họ “dạy” cho hệ thống biết cách làm để thực nhiệm vụ cụ thể giao Ngơn ngữ Rehearsal World nói phần trên, xếp vào nhóm ngơn ngữ lập trình ví dụ Một vài ngơn ngữ VPL lần theo dấu vết nó, phần vận dụng ràng buộc Sutherland sử dụng Sketchpad Những hệ thống hướng ràng buộc (constraint-oriented systems) đặc biệt phổ biến mơ hình lập trình mà đối tượng vật lý giống đối tượng môi trường trực quan Nó đối tượng để ràng buộc thiết kế để bắt chước cách ứng xử qui luật tự nhiên Những hệ thống hướng ràng buộc ứng dụng để phát triển giao diện đồ hoạ cho người dùng Hai ngôn ngữ Thinglab ARK mô ngôn ngữ VPL Đây ví dụ điển hình cho lớp ngơn ngữ hướng ràng buộc Một số ngơn ngữ VPL vay mượn hiển thị phép lập trình ẩn dụ từ bảng tính Những ngơn ngữ xếp vào loại ngơn ngữ VPL xây dựng biểu mẫu (form-based VPLs) Chúng trình bày việc lập trình thay đổi nhóm có mối liên hệ với toàn thời gian thường cho phép người lập trình hiển thị việc thực thi chương trình chuỗi tình trạng diễn tiến trình thực theo thời gian Forms/3 thân cho tổ tiên thuộc kiểu ngơn ngữ VPL mô tả rõ bên Cũng quan trọng lưu ý loại đề cập trên, tìm ví dụ ngơn ngữ VPL đa (general-purpose VPL) ngôn ngữ thiết kế cho ứng dụng thuộc lĩnh vực đặc biệt Phạm vi lập trình trực quan mở rộng năm gần Sự phát triển liên tục mạnh mẽ ngơn ngữ lập trình thể loại nêu dẫn đến số cơng việc mà quan tâm từ đầu khơng xem hình mẫu lập trình trực quan Những đứa mồ cơi VPL, theo cách nói này, gồm giải thuật hệ thống hoạt BALSA, cung cấp hiển thị đồ hoạ tương tác chương trình cơng cụ phát triển giao diện người dùng đồ hoạ, chúng cung cấp với nhiều trình biên dịch đại Microsoft Visual C++ Cả hai kiểu hệ thống định bao gồm thành phần trực quan chúng ứng dụng mang nặng tính đồ hoạ phát sinh mẫu ngơn ngữ lập trình IV Lý thuyết ngơn ngữ lập trình trực quan Trong phần này, xem xét lý thuyết tiên tiến lĩnh vực ngơn ngữ lập trình trực quan chủ yếu kết từ sớm liên quan đến nghiên cứu S.K Chang lý thuyết tổng quát biểu tượng Trước sâu tìm hiểu vấn đề làm quen với định nghĩa sau: icon (biểu tượng, hình tượng) Một đối tượng với trình bày kép phần lơ-gíc (ý nghĩa) phần vật lý (hình ảnh) iconic system (hệ thống có tính chất biểu tượng) Một tập hợp có cấu trúc biểu tượng có liên quan iconic sentence (câu biểu tượng/trực quan) Một xếp không gian biểu tượng từ hệ thống biểu tượng visual language (ngôn ngữ trực quan) Một tập câu trực quan cấu trúc với cú pháp ngữ nghĩa cho trước syntactic analysis (phân tích cú pháp) Một phân tích câu trực quan để xác lập cấu trúc sở semantic analysis (phân tích ngữ nghĩa) Một phân tích câu trực quan để xác định ngữ nghĩa sở Trong phần này, giới hạn thảo luận liên quan đến ngôn ngữ trực quan chiều Đặc tả hình thức ngơn ngữ lập trình trực quan Một xếp không gian biểu tượng tạo thành câu trực quan Nó hai chiều xếp chiều dấu hiệu ngơn ngữ lập trình qui ước (trong chế độ text) Trong ngơn ngữ này, chương trình diễn giải xâu ký tự ký hiệu kết thúc móc nối đến mẫu câu mà cấu trúc ngữ nghĩa khám phá phân tích cú pháp ngữ nghĩa theo thứ tự định sẵn Theo cách đó, qui tắc xây dựng tiềm ẩn ngơn ngữ khơng cần giải thích phần ngôn ngữ đặc tả Ngược lại, ngôn ngữ lập trình trực quan phân biệt nguyên tắc để xếp biểu tượng: móc nối theo chiều ngang (biểu ký hiệu &), móc nối theo chiều đứng (biểu ký hiệu ^) không gian bao phủ (biểu ký hiệu +) Trong việc định dạng ngơn ngữ lập trình trực quan, lựa chọn để phân biệt biểu tượng tiến trình từ biểu tượng đối tượng Sự tính tốn biểu thức trước, sau phân nhỏ đến biểu tượng đối tượng sơ cấp biểu tượng đối tượng phức hợp Những biểu tượng đối tượng sở cho biết đối tượng sơ cấp ngôn ngữ, ngược lại đối tượng phức hợp cho biết đối tượng định dạng xếp không gian biểu tượng đối tượng sơ cấp Tóm lại, thuật ngữ biểu tượng sơ cấp (elementary icons) để tham chiếu đến hai loại: biểu tượng tiến trình biểu tượng đối tượng sơ cấp biểu biểu tượng chúng nguyên gốc ngôn ngữ Từ tranh (hoặc biểu tượng trường hợp này) có hàng ngàn cách biểu đạt, cố gắng minh hoạ tất ý niệm hình vẽ sau: Hình Hệ thống biểu tượng Heidelberg Hình vẽ giới thiệu vài biểu tượng từ biểu tượng Heidelberg Những biểu tượng sơ cấp gồm (a) ký tự (b) ký tự chọn; biểu tượng tiến trình: (c) hoạt động chèn (d) hoạt động xoá; biểu tượng phức hợp: (e) xâu (kết hợp ký tự) (f) xâu lựa chọn; (g) câu trực quan biểu thị thay xâu xâu Một mơn ngữ lập trình trực quan đặc tả ba (ID,G0,B), ID từ điển biểu tượng, G0 ngữ pháp B sở tri thức cho lĩnh vực đặc biệt Từ điển biểu tượng tập hợp biểu tượng tổng quát phần tử trình bày cặp (Xm,Xi), với phần lơ-gíc Xm (nghĩa) phần vật lý Xi (hình ảnh) Ngữ pháp G0 định cách thức làm để biểu tượng đối tượng phức hợp xây dựng từ biểu tượng sơ cấp việc sử dụng toán tử xếp không gian Cơ sở tri thức B chứa thông tin lĩnh vực đặc biệt cần thiết cho việc xây dựng ngữ nghĩa câu trực quan cho trước Nó chứa thơng tin tên kiện, quan hệ thuộc khái niệm, tên đối tượng kết tham chiếu đến đối tượng kết Phân tích ngơn ngữ lập trình trực quan Như thảo luận trên, câu trực quan xây dựng từ biểu tượng sơ cấp cách sử dụng toán tử liên quan đến biểu tượng Việc phân tích cú pháp câu trực quan xây dựng sở số cách tiếp cận Chang Ở đây, giới thiệu danh sách không gian cách tiếp cận Picture-processing grammars (ngữ pháp xử lý ảnh) Nguồn gốc việc thiết kế phân tích ảnh số lưới vng, ngữ pháp xây dựng sở thực tế ảnh số kết hợp điểm ảnh Ngữ pháp khám phá cấu trúc câu trực quan trật tự điểm ảnh riêng lẻ đến phần tử trực quan nhận diện (đường thẳng, hộp, cung tròn ) Cách tiếp cận có ích hệ thống biểu tượng cần để nhận dạng biểu tượng với mức độ lỗi chấp nhận (ví dụ chữ số viết tay) Precedence grammars (ngữ pháp thứ tự) Ngữ pháp phân tích khơng gian sử dụng dành cho việc phân tích biểu thức tốn học khơng gian chiều phân tích trang in Ngữ pháp thứ tự phù hợp để phân tích cú pháp câu trực quan xây dựng từ biểu tượng sơ cấp toán tử biểu tượng Cây phân tích xây dựng việc so sánh thứ tự toán tử mẫu tập chia mẫu đến nhiều mẫu Context-free and context-dependent grammars (ngữ pháp phụ thuộc ngữ cảnh ngữ pháp phi ngữ cảnh) Những ngữ pháp dùng để xác định tổ hợp câu trực quan việc sử dụng hình thức quen thuộc nhiều phương pháp tiêu chuẩn phân tích ngữ pháp phù hợp Graph grammars (ngữ pháp đồ thị) Đây phương thức mạnh (mặc dù hiệu quả) để đặc tả ngơn ngữ trực quan Những hình thức cung cấp nhiều ý nghĩa để thiết lập quan hệ ngữ cảnh nhiều nghiên cứu đầu tư để tạo phân tích tính tốn với ngữ pháp đồ thị 10 Ta dùng Class tên clsRecentFiles để đặc biệt lo việc chứa tên tập tin vào Registry hiển thị tên tập tin thực đơn Bên clsRecentFiles ta dùng clsString, Class giúp ta ngắt đoạn xâu ký tự Registry tên tập tin dựa vào chỗ ký tự phân cách | ' Class Name: clsRecentFiles ' This Class saves the most Recent FileNames used in the Registry ' in form of a String delimited by | ' Up to MaxFiles Filenames maybe stored ' You need to pass the Form that contains the menu to it ' The assumption is that you have created an array of MenuItems ' named mnuRFile to display the FileNames Const MaxFiles = ' Maximum number of FileNames to remember Private myForm As Form Private RecentFiles As clsString Public Sub Init(TForm As frmMenu) Set myForm = TForm Set RecentFiles = New clsString ' Read the Most Recent Filename String from the Registry RecentFiles.Text = GetSetting(App.Title, "Settings", "RecentFiles", "") ' Assign the Delimiter character and tokennise the String (i.e split it) into FileNames RecentFiles.Delimiter = "|" UpdateMenu End Sub Public Sub AddFile(FileName As String) ' Add the latest FileName to the list and update the Registry ' Prefix the FileName to the existing MostRecentFileName String RecentFiles.Text = FileName & "|" & RecentFiles.Text ' Discard the oldest FileNames if the total number is greater than MaxFiles If RecentFiles.TokenCount > MaxFiles Then Dim TStr As String Dim i As Integer ' Reconstitute the String that contains only the most recent MaxFiles FileNames For i = To MaxFiles TStr = TStr & RecentFiles.TokenAt(i) & "|" Next ' Remove the last delimiter character on the right RecentFiles.Text = Left(TStr, Len(TStr) - 1) End If ' Update the String in the Registry SaveSetting App.Title, "Settings", "RecentFiles", RecentFiles.Text UpdateMenu End Sub Private Sub UpdateMenu() ' Hiển thị the most recent Filenames in the menu Dim i As Integer 157 ' If there is no FileNames to hiển thị then disable the MenuItem entry If RecentFiles.TokenCount = Then myForm.mnuRecentFiles.Enabled = False Exit Sub Else ' Otherwise enable the MenuItem entry myForm.mnuRecentFiles.Enabled = True End If ' Assign FileName to Caption of mnuRFile array ' and make the MenuItem elements visible For i = To RecentFiles.TokenCount myForm.mnuRFile(i - 1).Caption = RecentFiles.TokenAt(i) myForm.mnuRFile(i - 1).Visible = True ' Make the MenuItem If i = MaxFiles Then Exit Next ' Make the rest of the MenuItem array mnuRFile invisible If RecentFiles.TokenCount < MaxFiles Then For i = RecentFiles.TokenCount To MaxFiles - myForm.mnuRFile(i).Visible = False Next End If End Sub Chúng ta chạy dịng lệnh RegEdit sau chọn Start | Run để xem chi tiết Keys mà chương trình chứa Sections Location Settings Thư mục HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Menu 158 CHƯƠNG 10 GỠ LỖI CHƯƠNG TRÌNH Bugs lỗi chương trình mà ta phát chạy Debug cơng việc loại tất lỗi chương trình để chạy tốt tình Thơng thường muốn sửa lỗi trước hết ta phải tìm hiểu lý khiến xuất Một biết nguyên nhân ta nghĩ cách giải Nói chung, có hai loại bugs : chương trình khơng làm chuyện cần phải làm lập trình viên hiểu sai yêu cầu/đặc tả hay cho tin tức sai lạc, chương trình bỏ sót chi tiết cần phải xử lý Trường hợp ta giải cách giảm thiểu hiểu lầm qua nâng cấp khả truyền thơng Chương trình khơng thực ý lập trình viên muốn, tức lập trình viên muốn đàng mà bảo chương trình làm ngã vơ tình khơng viết chương trình cách Trường hợp ta giải cách dùng công cụ phần mềm (kể ngơn ngữ lập trình) thích hợp, có q trình làm việc có hệ thống Có nhiều yếu tố ảnh hưởng đến chất lượng chương trình chức chương trình, cấu trúc phận, kỹ thuật lập trình phương pháp debug Debug không hẳn nằm giai đoạn cuối dự án mà tùy thuộc nhiều vào yếu tố kể giai đoạn triển khai I Đặc tả chương trình (Program Specifications) Dầu chương trình lớn hay nhỏ, trước hết ta phải xác định rõ ràng tỉ mỉ cần phải làm gì, người dùng, mạng nào, sở liệu lớn bao nhiêu, phải chạy nhanh đến mức Có nhiều chương trình phải bị thay đổi chừng lập trình viên hiểu lầm điều khách hàng muốn Do đó, triển khai dự án phần mềm ta cần phải áp dụng chăt chẽ qui trình phát triển phần mềm (xem mơn học Công nghệ phần mềm đọc thêm tài liệu Software Engineering) Cấu trúc phận Chương trình có kiến trúc tương tự cỗ máy Mỗi phận đơn giản tốt cách ráp phận phải để ta dễ dùng thử, dễ kiểm tra (testing) Trong thiết kế ta phải biết trước yếu điểm phận nằm đâu để ta chuẩn bị cách thử chúng Ta tin phận hoàn hảo thử nó, dù đơn giản đến đâu Nếu ta muốn dùng kỹ thuật hồn cảnh mà ta khơng biết chạy khơng nên thử riêng rẽ trước Phương pháp gọi Prototype Ngoài ra, ta nên xây dựng kịch kiểm thử cho trường hợp đặc biệt, điển hình dùng bad data (dữ liệu xấu) - người sử dụng bấm lung tung hay sở liệu chứa nhiều rác Nếu chương trình chạy real-time (tức liệu thu nhập qua cổng COM, hay qua mạng), cần phải lưu ý trường hợp khác tùy theo việc xảy trước, việc 159 xảy sau Phương pháp kiểm thử tốt xây dựng trước kịch liệu để thử giai đoạn tình Ngày với kỹ thuật hướng đối tượng, giai đoạn thiết kế lúc định cấu trúc liệu (bảng, mảng, ghi ) số lượng Form, Class Lưu ý rằng, Class gồm có cấu trúc liệu Subs/Functions/Properties làm việc liệu Cấu trúc liệu phải chứa đầy đủ chi tiết ta cần (tên trường, tên kiểu liệu ) Kế cách chương trình xử lý liệu Subs/Functions cho bên ngồi gọi ta cho Public, cịn Subs/Functions khác hữu để phục vụ bên class ta cho Private Kỹ thuật lập trình Kiến thức lập trình viên thói quen họ quan trọng Nói chung, người hấp tấp, nhảy vào viết chương trình trước suy nghĩ hay cân nhắc chín chắn sau bugs xuất nhiều điều tự nhiên Dùng Subs Functions Nếu giai đoạn thiết kế kiến trúc chương trình ta chia Class, lập trình ta lại thiết kế chi tiết Subs, Functions , thứ cần phải thử Nếu ta chia cơng việc giai đoạn giai đoạn gọi đến Sub Thứ cần phải tính hay lấy từ nơi khác thực Function Nhớ điểm khác biệt Sub Function Function cho ta kết mà không làm thay đổi giá trị tham số đầu vào mà ta cung cấp cho Trong đó, dầu Sub khơng cho ta cách rõ ràng thay đổi trị số (giá trị) tham số ta chuyển cho ByRef Do để tránh trường hợp vơ tình làm cho trị số biến bị thay đổi ta dùng Sub/Function nên dùng ByVal chuyển tham số vào Sub/Function Thật ra, dùng ByRef cho tham số chuyển vào Function Trong trường hợp dĩ nhiên biến bị sữa đổi Điều gọi phản ứng phụ (side effect), bình thường làm Do đó, thật muốn vượt ngồi qui ước thơng thường nên Comment rõ ràng để cảnh báo người đọc chương trình sau Ngồi ra, lập trình viên thường có Source Code Library Subs/Functions ưng ý Chúng ta nên dùng Subs/Functions Library nhiều tốt, chúng thử nghiệm II Một số lưu ý Đừng sợ lỗi Mỗi chương trình có Lỗi, Compilation Error (vì ta viết code khơng văn phạm, ngữ vựng), lỗi chạy chương trình, khơng nên sợ Hãy bình tĩnh đọc Error Message để xem muốn nói Nếu khơng hiểu đọc đọc lại vài lần suy nghiệm xem có tìm hướng dẫn khơng Khi lập trình gặp lỗi nhiều, nên phải tập bình tĩnh đối diện với chúng 160 Dùng Comment (Chú thích) Lúc viết code nhớ thêm Comment đầy đủ để trở lại đọc đoạn code tương lai không cần phải dựa vào tài liệu khác mà hiểu mục đích Sub/Function hay đoạn code Như không thiết phải viết nhiều Comment có điểm khác thường, bí hiểm cần thơng báo giải thích làm cách Có thể sau ta khám phá đoạn code có bugs; lúc đọc lại ta thấy dầu ý định thiết kế cách lập trình có phần thiếu kiểm sốt chẳng hạn Tính trung bình lập trình viên làm việc 18 tháng chỗ Tức là, gần chắn code viết người khác đọc bảo trì ( debug thêm bớt) Do đó, code phải đơn giản, dễ hiểu tốt Đừng lo ngại chương trình chạy chậm hay chiếm nhiều nhớ, ngày computer chạy nhanh nhớ rẻ Khi ta thật cần phải quan tâm vận tốc nhớ điều cần thiết kế cẩn thận dựa vào tiểu xảo lập trình Đặt tên biến có ý nghĩa Trong thực tế gặp nhiều khó khăn làm việc với biến có tên vắn tắt K, L, AA, XY Ta khơng có chút ý niệm chúng, mục đích sử dụng chúng làm Thay vào đó, ta đặt tên biến NumberOfItems, PricePerUnit, Discount v.v dễ hiểu Một bugs khó thấy ta dùng tên cho biến cục (biến khai báo bên Sub/Function) biến toàn cục (biến khai báo Form hay Basic Module) Biến cục che đậy biến toàn cục tên, nên muốn nói đến biến toàn cục hoàn cảnh dùng lầm biến cục Dùng Option Explicit Chúng ta nên trung thành với cách dùng Option Explicit đầu Form, Class hay Module Nếu có biến đánh vần sai VB6 IDE cho biết Nếu không dùng Option Explicit, biến đánh vần sai xem biến với giá trị hay "" (chuỗi rỗng) Nói chung nên thận trọng định kiểu liệu cho biến với kiểu liệu khác Chúng ta phải biết rõ làm để khỏi bị phản ứng phụ (side effect) Desk Check Kiểm tra lại chương trình trước biên dịch Khi ta biên dịch mã nguồn chương trình, khơng có lỗi có nghĩa cú pháp chương trình đúng, khơng có nghĩa giải thuật Do ta cần phải biết mã chương trình ta viết làm điều ta muốn cách đọc lại chương trình trước biên dịch lần Công việc gọi Desk Check (Kiểm tra bàn) Một chương trình Desk Checked kỹ cần debug chứa bugs khơng ngờ trước Lý kịch tiên liệu chu đáo Soạn Test Plan Test Plan (kế hoạch kiểm thử) liệt kê tất ta muốn thử cách thử chúng Khi thử theo Test Plan ta khám phá bug tìm cách loại chúng Hồ sơ ghi lại lịch sử Test Plan (trục trặc xảy ra, dùng biện pháp để giải quyết) bổ ích nhiều phương diện Ta học từ kinh nghiệm Debug biết rõ thứ dự án thử theo cách 161 III Các kỹ thuật xử lý lỗi Xử lý lỗi lúc thực thi chương trình Khi chương trình (đã dịch sang EXE) viết VB6 chạy, gặp lỗi, hiển thị thơng báo lỗi cho biết lý gây lỗi Sau chọn OK, chương trình ngưng Nếu chạy chương trình VB6 IDE, có dịp bảo chương trình ngừng mã nguồn chỗ có lỗi cách bấm nút Debug thông báo lỗi Tiếp theo tìm hiểu trị số biến để đốn ngun lỗi Do đó, bắt đầu cho dùng chương trình viết cho nội đơn vị, tiện vài tuần đầu, thay chạy EXE chương trình, chạy source code VB6 IDE Nếu có bug xảy ra, cho chương trình ngừng source code để debug Khi dùng lệnh: ON Error Resume Next từ chỗ trở đi, chương trình gặp lỗi, bỏ qua hoàn toàn Điểm tiện chỗ giúp chương trình EXE ta tránh bị treo điểm xuất bug Nhưng bất lợi khách hàng cho hay họ gặp trường hợp lạ, khơng giải thích (vì lỗi bị bỏ qua mà khơng để ý), ta khơng biết ngun nhân, khơng để debug Do đó, dĩ nhiên lúc debug ta khơng nên dùng nó, trước giao cho khách hàng nên cân nhắc kỹ trước dùng Dùng Breakpoints Cách hay để theo dõi việc thực chương trình dùng Breakpoint để làm cho chương trình ngừng lại chỗ ta muốn chương trình, sau ta cho chương trình bước bước Trong dịp ta xem xét trị số biến để coi chúng có dự định khơng Chúng ta đốn trước máy tính thực đoạn chương trình thực chọn chỗ thích hợp click bên trái dòng code, chỗ dấu chấm trịn đỏ hình đây: Nếu click lên dấu chấm trịn đỏ lần hủy bỏ Một cách khác để đặt breakpoint để editor cursor lên dòng code bấm F9 Nếu bấm F9 lần trỏ nằm dịng hủy bỏ breakpoint Lúc chương trình dừng lại, xem trị số biến cách để trỏ lên biến ấy, tooltip hiên hình đây: 162 Có số chuyện khác làm lúc Chúng ta nắm dấu chấm trịn đỏ kéo (drag) ngược lên hay nhiều dịng code để thực thi trở lại vài dòng code Chúng ta cho chương trình thực thi dịng code cách bấm F8 Menu command tương đương với Debug | Step Into Sẽ có lúc khơng muốn chương trình bước vào bên Sub/Function mà muốn việc thực thi Sub/Function bước đơn giản Trong trường hợp đó, dùng Menu command Debug | Step Over hay Shift-F8 Nhớ chương trình chạy lại bấm F5, tương đương với Menu command Run | Continue Có muốn chương trình ngừng For Loop Iterator value có trị số lớn Nếu ta để sẵn breakpoint bấm F5 nhiều lần bất tiện Có phương pháp hữu hiệu dùng lệnh IF để thử Iterator value có trị số ta ngừng breakpoint lệnh Beep (thay lệnh Print ICounter) hình đây: Muốn hủy bỏ breakpoints dùng Menu command Debug | Clear All Breakpoints Để tiện việc debug, dùng Debug Toolbar cách hiển thị với Menu command View | Toolbars | Debug VB6 IDE hiển thị Debug Toolbar sau: 163 Dùng Immediate Window Immediate Window cho phép ta thực thi lệnh VB chương trình dừng lại Ta dùng lệnh Print để hiển thị trị số biến hay kết Function, gọi Sub hay thay đổi trị số biến trước tiếp tục cho chương trình chạy lại Để hiển thị Immediate Window, dùng Menu command View | Immediate Window Thay đánh "Print ICounter" đánh "? ICounter" Nhớ lệnh VB đánh Immediate Window executed bấm Enter Chúng ta dùng lại lệnh VB Immediate Window, cần bấm Enter cuối dòng Theo dấu vết chương trình (Tracing) Đơi khơng tiện để ngừng chương trình muốn biết chương trình làm Sub Chúng ta để code Sub/Function lệnh giống Debug.Print Format ( Now,"hh:mm:ss ") & "(Sub ProcessInput) Current Status:" & Status để chương trình hiển thị Immediate Window value Status thực thi bên Sub ProcessInput lúc Có cách khác thay cho hiển thị Immediate Window cho viết xuống (Log) vào text file Dưới Sub điển hình dùng để Log Event message: Sub LogEvent(ByVal GivenFileName, ByVal Msg As String, HasFolder As Boolean, IncludeTimeDate As Integer) ' Append event message Msg to a text Logfile GivenFileName ' If GivenFileName is fullPathName then HasFolder is true ' IncludeTimeDate = : No Time or Date ' = : Prefix with Time ' = : Prefix with Time and Date 164 Dim FileNo, LogFileName, theFolder If HasFolder Then LogFileName = GivenFileName Else If Right(App.Path, 1) "\" Then theFolder = App.Path & "\" Else theFolder = App.Path End If LogFileName = theFolder & GivenFileName End If FileNo = FreeFile If Dir(LogFileName) "" Then Open LogFileName For Append As FileNo Else Open LogFileName For Output As FileNo End If Select Case IncludeTimeDate Case ' No Time or Date Print #FileNo, Msg Case ' Time only Print #FileNo, Format(Now, "hh:nn:ss ") & Msg Case ' Date & Time Print #FileNo, Format(Now, "dd/mm/yyyy hh:nn:ss ") & Msg End Select Close FileNo End Sub Dùng Watch Window Đôi muốn chương trình ngừng khơng phải chỗ định, trị số biến hay biểu thức bao nhiêu, khơng biết biến tự nhiên có trị số Ví dụ, muốn chương trình ngừng lại ICounter = 15 Chúng ta dùng Menu command Debug | Add Watch VB6 IDE hiển thị hộp thoại Chúng ta đánh ICounter = 15 vào textbox Expression click option box Break When Value Is True hộp Watch Type Làm có nghĩa ta muốn chương trình ngừng ICounter 15 165 Dùng phương pháp loại suy (Elimination Method) Có phương pháp thơng dụng debug loại bỏ dòng code nghi ngờ để xem bug có biến khơng Nó gọi Elimination Method Nếu bug biến dịng code loại bỏ thủ phạm Chúng ta Comment Out số dịng lúc cách highlight dòng click Comment Block Edit ToolBar Khi dùng Elimination Method phải cân nhắc thuật tốn chương trình định Comment Out dịng nào, khơng, phương pháp nguy hiểm Ngồi ra, Menu Command View | Locals Window liệt kê cho trị số tất biến Sub/Function View | Call Stack liệt kê thứ bậc Sub gọi từ vào vị trí code ngừng thời 166 TÀI LIỆU THAM KHẢO [1] Brown M and Sedgewick R., A system for algorithm animation In Proc Of SIGGRAPH ’84, pp 177–186, 1984 [2] Burnett M and Ambler A L., A declarative approach to event-handling in visual programming languages In Proc 1993 IEEE Symposium Visual Languages, pp 34–40, Seattle, Washington, September 1992 [3] Burnett M., and Baker M J., A classification system for visual programming languages J Visual Languages and Computing, pp 287–300, September 1994 [4] Chang S., Visual languages: A tutorial and survey IEEE Software, 4(1):29–39, January 1987 [5] Chang S.-K., Principles of Visual Programming Systems Prentice Hall, New York, 1990 [6] Cox P T and Pietryzkowsky T., Using a pictorial representation to combine dataflow and object-orientation in a language-independent programming mechanism IEEE Computer Society Press, Los Alamitos, CA, 1990 [7] Erwig M and Meyer B., Heterogeneous visual languages : Integrating visual and textual programming In Proc 1995 IEEE Symposium Visual Languages, pp 318–325, 1995 [8] Golin E J., A method for the specification and parsing of visual languages PhD dissertation, Brown University, 1990 [9] Lakin F., Spatial parsing for visual languages In Chang, S.-K., Ichikawa, T., and Ligomenides, P., editors, Visual Languages, pp 35–85 Plenum Press, New York, 1986 [10] Najork M., Visual programming in 3-d Dr Dobb’s Journal, 20(12):18–31, December 1995 [11] Litwin P., Getz K., Mike Gilbert, Access 2000 Developer's Handbook Published by Sybex, ISBN-10: 0782123708, September 1999 [12] Rod S., Visual Basic 2005 Programmer's Reference Published by Wrox, ISBN: 978-0-7645-7198-5, October 2005 167 MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG LẬP TRÌNH TRỰC QUAN I Giới thiệu II Lịch sử ngơn ngữ lập trình trực quan .5 III Phân loại ngôn ngữ lập trình trực quan IV Lý thuyết ngôn ngữ lập trình trực quan Đặc tả hình thức ngơn ngữ lập trình trực quan .8 Phân tích ngơn ngữ lập trình trực quan .10 V Những vấn đề ngôn ngữ trực quan 11 Control Flow (luồng điều khiển) .11 Sự trừu tượng hoá thủ tục (Procedural Abstraction) 11 Sự trừu tượng hoá liệu (Data Abstraction) 12 VI Các ngơn ngữ lập trình trực quan 12 ARK 12 Prograph 14 Form/3 16 VII Kết luận 18 CHƯƠNG LẬP TRÌNH TRỰC QUAN VỚI MS ACCESS 20 I Giới thiệu 20 Khái niệm sở liệu 20 Microsoft Access .24 Khởi động ACCESS 25 Cơ sở liệu Access 25 Các phép toán 25 II Làm việc với sở liệu (CSDL) .26 Tạo sở liệu .26 Hiệu chỉnh sở liệu 27 III Làm việc với Table 28 Tạo cấu trúc Table .28 Nhập số liệu vào Table 30 Hiệu chỉnh Table 31 Khai thác số liệu Table .32 IV LÀM VIỆC VỚI QUERY 32 Khái niệm 32 Cách tạo QUERY .33 Hiệu chỉnh QUERY 37 Thực QUERY 37 V Làm việc với Report .37 Khái niệm 37 Cách tạo Report 38 168 Hiệu chỉnh Report 41 Thực Report .41 VI Làm việc với Form 41 Khái niệm 41 Thiết kế Form 41 Hiệu chỉnh Form 43 Thực Form 43 VII Macro hệ thống thực đơn 43 Macro 43 Hệ thống thực đơn 44 CHƯƠNG BẮT ĐẦU LẬP TRÌNH VỚI VISUAL BASIC 47 I Giới thiệu 47 II Các khái niệm thường dùng 48 III Lập trình Visual Basic 48 Làm việc với hộp/nút điều khiển .49 Thuộc tính 51 Thủ tục tình .53 IV Ví dụ 54 Bổ sung hộp điều khỉển 54 Thay đổi thuộc tính 54 Viết thủ tục tình 55 Ghi thực trương trình 56 V Biến nhớ 61 Khái niệm 61 Khai báo biến .61 Khai báo 63 Mảng 63 Khai báo ghi 64 Biến đổi (convert) từ loại liệu qua loại d ữ liệu khác 64 CHƯƠNG VIẾT MÃ CHƯƠNG TRÌNH 66 I Các cấu trúc điều khiển 66 Cấu trúc chọn .66 Cấu trúc lặp 67 Nhãn 69 Số thứ tự dòng lệnh 70 II Method .70 Circle Method 70 Line Method .71 Cls Method 72 Hide Method .72 Show Method .73 Item Method .73 Move Method 73 Point Method 74 169 Print Method 74 10 PrintForm Method 74 11 PSet Method 75 12 Refresh Method 75 13 Scale Method 76 14 SetFocus Method 77 15 TextHeight TextWidth Methods 77 III Hàm 78 Giới thiệu 78 Các hàm xử lý chuỗi 78 Các hàm xử lý số : .80 CHƯƠNG THIẾT KẾ GIAO DIỆN 81 I Giới thiệu 81 II Dùng list control .81 Listbox .82 Drag-Drop 85 Dùng thuộc tính Sorted 86 III Tự tạo đối tượng (Object) .89 CHƯƠNG CÁC CHẾ ĐỘ HỘI THOẠI 97 I Message Boxes (hộp thông điệp) 97 II Input Boxes 99 III Common Dialogs 101 IV Open Save File Dialogs 101 V Các loại Dialog có sẵn để dùng 105 Color Dialog 105 Font Dialog 107 Print Dialog 109 Help Dialog 110 VI Custom Dialogs .110 CHƯƠNG THIẾT KẾ ĐỒ HỌA 113 I Màu (color) độ phân giải (resolution) 113 Độ phân giải (resolution) 113 Màu (color) 114 II Hàm RGB 116 III Một số kỹ thuật .118 Color Mapping .118 Dùng Intrinsic Color Constants .119 Tập tin đồ hoạ 120 CHƯƠNG KẾT NỐI ĐẾN CƠ SỞ DỮ LIỆU 121 I Sử dụng Data Control 121 170 Chỉ định vị trí sở liệu lúc chạy chương trình 124 Thêm bớt ghi .125 Dùng DataBound Combo .127 II Lập trình với kỹ thuật DAO 129 Tham chiếu DAO .129 Dùng keyword SET 130 Các nút di chuyển 131 Thêm bớt ghi .132 Tìm ghi .134 Bookmark 137 LastModified 137 III Lập trình với ADO 138 IV Data Form Wizard 142 CHƯƠNG THIẾT KẾ HỆ THỐNG THỰC ĐƠN 149 I Main Menu (Thực đơn chính) .149 II Pop-up Menu 153 III Lưu trữ việc thiết lập thực đơn Registry 153 CHƯƠNG 10 GỠ LỖI CHƯƠNG TRÌNH 159 I Đặc tả chương trình (Program Specifications) 159 Cấu trúc phận 159 Kỹ thuật lập trình .160 Dùng Subs Functions 160 II Một số lưu ý 160 Đừng sợ lỗi .160 Dùng Comment (Chú thích) 161 Đặt tên biến có ý nghĩa 161 Dùng Option Explicit .161 Desk Check 161 Soạn Test Plan 161 III Các kỹ thuật xử lý lỗi 162 Xử lý lỗi lúc thực thi chương trình 162 Dùng Breakpoints 162 Dùng Immediate Window 164 Theo dấu vết chương trình (Tracing) .164 Dùng Watch Window .165 Dùng phương pháp loại suy (Elimination Method) 166 TÀI LIỆU THAM KHẢO 167 MỤC LỤC 168 171 ... Lịch sử ngôn ngữ lập trình trực quan Lĩnh vực lập trình trực quan kết hợp đồ hoạ máy tính, ngơn ngữ lập trình tương tác người máy Nó tạo từ nhiều nghiên cứu độc lập có nhiều cơng trình nghiên cứu... biệt Phạm vi lập trình trực quan mở rộng năm gần Sự phát triển liên tục mạnh mẽ ngơn ngữ lập trình thể loại nêu dẫn đến số cơng việc mà quan tâm từ đầu khơng xem hình mẫu lập trình trực quan Những... sinh mẫu ngơn ngữ lập trình IV Lý thuyết ngơn ngữ lập trình trực quan Trong phần này, xem xét lý thuyết tiên tiến lĩnh vực ngơn ngữ lập trình trực quan chủ yếu kết từ sớm liên quan đến nghiên cứu