1. Trang chủ
  2. » Giáo án - Bài giảng

Chuyen de BD HSG 3

27 575 3

Đ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

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 1,82 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nó bao gồm các đơn thể module chính sau: • Trình biên dịch Compiler có chức năng dịch chương trình ra mã máy để chạy • Trình soạn thảo Editor cho người lập trình sử dụng viết chương trìn

Trang 1

TÌM HIỂU CÁCH SỬ DỤNG CÁC CHỨC NĂNG CỦA

Borland Pascal 7.0

Borland Pascal là công cụ phát triển các ứng dụng trên DOS của hãng Borland với ngôn ngữ lõi là PASCAL Nó bao gồm các đơn thể (module) chính sau:

• Trình biên dịch (Compiler) có chức năng dịch chương trình ra mã máy để chạy

• Trình soạn thảo (Editor) cho người lập trình sử dụng viết chương trình

• Trình gỡ rối (Debugger) cho phép truy tìm và phát hiện lỗi

• Trình trợ giúp (Helper)

Giao diện của BP7 gồm có: Hệ thống menu, thanh trạng thái, các cửa sổ làm việc Mỗi cửa sổ

có một chức năng, có tên, số hiệu riêng, Nếu là cửa sổ soạn thảo chương trình thì tên cửa sổ chính là tên file chương trình Tại một thời điểm có thể có nhiều cửa sổ nhưng chỉ có duy nhất một cửa sổ được quan tâm nhất (Active Window2), cửa sổ này có khung viền đôi còn các cửa

sổ khác có khung viền đơn

1 Giao diện hay giao diện người - máy (User-Machine Interface) là một cách thức đối thoại giữa người và máy để cho người sử dụng tiện lợi trong việc đưa yêu cầu của mình cho máy tính xử lý và dễ dàng nhận lại các kết quả

ra Hiện có nhiều kiểu giao diện nhưng phổ biến nhất là giao diện dòng lệnh Command Line (như Command.Com của DOS), giao diện menu (như Borland Pascal 7), giao diện GUI (như Windows hay Apple Macintosh)

2 Gọi là Active Window- Cửa sổ hoạt động hơi thiếu chính xác, tất cả các cửa sổ đều hoạt động, nhưng chỉ có một cửa sổ nhận các tín hiệu bàn phím mà thôi (chính vì vậy mà mở nhiều cửa sổ sẽ làm tốc độ chậm) người ta

Trang 2

II HỆ THỐNG MENU

Hệ thống menu của BP7 có nhiều menu xếp theo thứ bậc, mỗi menu tương ứng với một thao tác hoặc lại mở ra một danh mục menu mới Mỗi menu có thể có một ký tự trong đó gọi là Shortcut (tôi không biết nên dịch là gì cho hợp lý) và có thể được gán cho một phím gọi là Shortcut Key Ví dụ như menu con Save nằm trong menu File có Shortcut là chữ S và Shortcut Key là phím <F2>, trên màn hình giao diện BP7, ta sẽ thấy chữ S trong menu Save

và chữ F trong menu File có màu khác với các chữ khác Để gọi một chức năng trong hệ thống menu, ta có nhiều cách:

• Cách 1: Là nếu đang ở cửa sổ soạn thảo, ấn F10 để chuyển lên thanh menu sau đó dùng các phím ←, → để chọn, chọn xong bấm <Enter> sẽ hiện ra danh mục menu con, dùng các phím ↑, ↓ chọn tiếp và bấm Enter; hoặc bấm trực tiếp Shortcut của menu con cần chọn

• Cách 2: Là nếu đang trong cửa sổ soạn thảo, ta bấm <Alt> + Shortcut của menu cần chọn trên thanh menu thì cũng mở ra menu con tương ứng, chọn tiếp như trên

• Cách 3: Là nếu một menu con có gán Shortcut key thì ta bấm trực tiếp Shortcut key để thực hiện chức năng tương ứng với menu đó Theo kinh nghiệm của tôi, cách này là nhanh

và tiết kiệm thời gian nhất, chính vì vậy ta cố gắng nhớ được càng nhiều Shortcut key càng tốt Dưới đây là một số chức năng hay dùng và Shortcut key của chúng:

Thay đổi vị trí, kích thước cửa sổ Window/ Size/Move Ctrl + F5

Chạy chương trình đến vị trí con trỏ thì dừng lại Run/ Go to Cursor F4

Thêm biến vào cửa sổ theo dõi giá trị (Watches) Debug/ Add watch Ctrl + F7Phục hồi lại trạng thái văn bản về trạng thái trước

khi thực hiện một số thao tác gần nhất

Xem kết quả chương trình kết xuất ra màn hình Debug/ User screen Alt + F5Dịch thử, kiểm tra lỗi cú pháp trong một chương

trình ở một cửa sổ, có nhiều cách khác nhau,

nhưng trong trường hợp chương trình không quá

dài thì dùng chức năng Make là tiện nhất

Trang 3

II.1 F ile menu (Alt + F): Các chức năng về đĩa, thư mục, file,

• N ew: Tạo cửa sổ mới để soạn chương trình, cửa sổ soạn thảo mới sẽ có tên là NONAMExx.PAS (xx là một số từ 00 đến 99) và mặc nhiên trở thành cửa sổ hoạt động (Active Window), nằm trên tất cả các cửa sổ đang mở

• O pen : Mở khung đối thoại "Open a file" cho người sử dụng chọn một file, nếu file này

đã có trên đĩa thì nội dung sẽ được đưa vào một cửa sổ soạn thảo mới, nếu file chưa có trên đĩa thì cửa sổ mới sẽ là cửa sổ rỗng; từ đó có thể soạn tiếp chương trình

• S ave: Ghi văn bản trong cửa sổ hoạt động vào đĩa, nếu chưa đặt tên file, BP7 sẽ hỏi tên file như Save as

• Save as: Ghi văn bản trong cửa sổ hoạt động vào đĩa với một tên khác, trước khi ghi, máy

sẽ hiện khung đối thoại "Save File as" để chọn tên file mới

• Save all: Ghi tất cả văn bản trên các cửa sổ đang mở vào đĩa

• C hange dir : Thay đổi thư mục hiện hành

• P rint: In văn bản chương trình ra máy in

• Printer setup: Đặt các thông số cấu hình máy in

• D OS shell: Tạm thời thoát về dấu nhắc DOS (VD: C:\>), vẫn giữ lại BP7 trong bộ nhớ, khi cần có thể quay trở về BP7 bằng cách gõ EXIT tại dấu nhắc

• Exit: Đóng tất cả các cửa sổ, thoát khỏi Borland Pascal, giải phóng bộ nhớ chiếm dụng, trở về DOS

II.2 E dit menu (Alt + E): Các chức năng soạn thảo

Trang 4

• U ndo: Phục hồi lại trạng thái văn bản về trạng thái trước khi thực hiện một số thao tác gần nhất, rất hữu ích trong việc phục hồi lại các đoạn văn bản bị xoá nhầm, sửa nhầm vì một

lý do nào đó

• R edo: Ngược lại với Undo: Nói cách khác nó Undo lại trạng thái trước khi Undo

• Cut: Cắt đoạn văn bản đã đánh dấu vào Clipboard (một vùng nhớ đặc biệt của BP7)

• C opy: Sao chép đoạn văn bản đã đánh dấu vào Clipboard, khác với Cut, đoạn văn bản đánh dấu không bị cắt bỏ

• P aste: Dán đoạn văn bản trong Clipboard vào vị trí con trỏ

• Clear: Xoá đoạn văn bản đã đánh dấu

• S how clipboard: Hiện nội dung văn bản trong Clipboard (có thể sửa trong đó) (Clipboard

có thể quan niệm như một vùng nhớ phụ của BP7 để lưu các đoạn văn bản tạm thời cho việc cắt dán)

Lưu ý: BP7 khuyến cáo nên sử dụng phương pháp đánh dấu đoạn văn bản bằng cách giữ Shift + các phím ←↑→↓, sau đó có thể sao chép, di chuyển khối đánh dấu thông qua Clipboard (Copy-Paste; Cut-Paste) để có thể sao chép một đoạn văn bản từ cửa sổ này sang cửa sổ khác Tuy nhiên nếu như việc cắt, dán, sao chép là trên cùng 1 cửa sổ thì người ta vẫn ưa chuộng cách thức của TP5 hơn: Copy khối đánh dấu tới vị trí con trỏ: Ctrl + K+C, Di chuyển khối đánh dấu tới vị trí con trỏ: Ctrl + K+V, Xoá khối đánh dấu: Ctrl + K+Y, Ghi khối đánh dấu vào một file: Ctrl + K+W, Đọc một file vào vị trí con trỏ và tạo khối đánh dấu chứa nội dung đọc vào: Ctrl + K+R Dịch các dòng chứa khối vào trong: Ctrl + K + I Dịch các dòng chứa khối ra ngoài Ctrl + K + U

II.3 S earch menu (Alt + S): Tìm kiếm

• F ind : Tìm một dãy ký tự trong văn bản; BP7 sẽ hiện khung thoại hỏi xâu cần tìm và cho phép chọn cách tìm: Tìm có phân biệt chữ hoa, chữ thường; Tìm trong cả văn bản hay phần đánh dấu; Tìm xuôi xuống dưới hay tìm ngược lên trên v.v Nếu tìm được, BP7 sẽ cho con trỏ nhảy tới vị trí của xâu ký tự tìm thấy Shortcut key của menu này là Ctrl+Q+F

• R eplace : Tìm và thay thế; Gần giống như Find nhưng thêm chức năng: thay thế dãy ký

tự tìm được bởi dãy ký tự mới, Shortcut key: Ctrl+Q+A

• S earch again: Lặp lại thao tác Find hay Replace dùng gần đây nhất

Trang 5

• G o to line number Cho người sử dụng gõ số hiệu dòng và nhảy con trỏ tới dòng đó.

• Show last compiler error: Cho hiện thông báo lỗi sau nhất, ít công dụng

• Find error : Tìm lỗi thông qua địa chỉ lỗi, ít công dụng

• Find procedure : Gõ tên thủ tục hay hàm, BP7 sẽ nhảy con trỏ tới thân chương trình con

đó Rất hữu ích trong một chương trình dài có rất nhiều chương trình con

• Previous browser: hiện cửa sổ browser mới mở gần đây nhất

• O bjects: Hiện các thực thể đối tượng trong chương trình (Dùng cho lập trình hướng đối tượng)

• U nits: Hiện tất cả các unit và program đang sử dụng

• Global: Hiện tất cả các đối tượng toàn cục (hằng, biến, chương trình con), chương trình có thể sử dụng mà không cần khai báo (ví dụ: MaxInt, Abs, )

• Symbol : Hiện thông tin về một ký hiệu nào đó trong chương trình trong cửa sổ Browser

II.4 R un menu (Alt + R): Chạy chương trình

• R un: Chạy chương trình Thông thường sẽ chạy chương trình đang soạn thảo trong cửa sổ hoạt động Nếu đặt Primary file (trong Compiler menu) thì sẽ chạy Primary file

• S tep over: Chạy từng bước để gỡ rối, mỗi lần Step over, chương trình cứ chạy xong 1 dòng lệnh thì dừng lại

• T race into: Gần giống như Step over, chỉ có điều nếu như chạy 1 dòng lệnh có lời gọi chương trình con, nó sẽ chạy theo vết vào chương trình con đó

• G o to cursor: Chạy đến chỗ con trỏ thì dừng lại, chẳng hạn chương trình có 7000 dòng và

ta muốn chạy ngay tới dòng 5000 để gỡ rối tiếp, thay vì bấm hàng ngàn lần F8 để Step over, ta có thể di chuyển đến dòng 5000 và bấm F4

• P rogram reset: Nếu chương trình chưa chạy hết bị dừng lại do nhiều nguyên nhân: người

sử dụng ấn Ctrl+Break hay do chạy bằng Step over hay Trace into thì có thể dùng chức năng này dừng vô điều kiện việc chạy tiếp

• Parameters: Giả lập tham số dòng lệnh như khi chạy file EXE

II.5 C ompiler menu (Alt + C): Dịch chương trình

Borland Pascal và Turbo Pascal có khác nhau đôi chút về menu này

Đối với Borland Pascal

Trang 6

• C ompiler: Dịch chương trình trong cửa sổ hoạt động, mặc nhiên nếu chạy mà chưa dịch thì BP7 sẽ tự động dùng chức năng này để dịch trước rồi mới chạy

• M ake: Dịch chương trình nhưng đồng thời dịch lại các thư viện sử dụng nếu có sự thay đổi

• B uild: Dịch chương trình, đồng thời dịch lại tất cả các thư viện mà chương trình sử dụng

• T arget : Mặc định là Real: Chế độ thực: Chương trình viết ra để chạy trong bộ nhớ quy ước của DOS với giới hạn bộ nhớ 640KB, có hai chế độ khác: Chế độ Protected cho phép chương trình viết ra chạy trong chế độ bảo vệ, có thể sử dụng được vùng nhớ mở rộng (có trên các máy 286 trở lên), Chế độ Windows cho phép chương trình có thể chạy như một ứng dụng của hệ điều hành Windows Lập trình trong chế độ bảo vệ của BP7 rất phức tạp

và có thể nói là một sự đối phó, để lập trình trên Windows phải cần các công cụ chuyên dụng hơn Ngày nay, khi làm các bài thi bằng BP7, người ta bắt buộc viết trong chế độ thực

• P rimary file: file ưu tiên hàng đầu, nếu đặt Primary file thì khi chạy chương trình nó sẽ chạy file này bất kể cửa sổ hoạt động chứa file nào, điều này hữu ích khi ta đang viết một thư viện (UNIT) và cần có một program file để thử các thủ tục và hàm trong thư viện (Unit không chạy trực tiếp được như Program)

• Clear primary file: Xoá primary file, không phải là xoá trên đĩa mà chỉ là vô hiệu hoá việc đặt primary file mà thôi

• I nformation: Cho biết thông tin biên dịch, số dòng, kích thước mã lệnh, kích thước bộ nhớ thi hành v.v

Đối với Turbo Pascal

Menu Compiler của TP7 gần giống như BP7, chỉ khác là không có menu Target, mà thay vào

đó là menu Destination Turbo Pascal không lập trình trực tiếp được trong chế độ nào khác ngoài chế độ thực Menu Destination cho người sử dụng hai lựa chọn: Disk và Memory, nếu đặt là Disk thì khi dịch chương trình, Turbo Pascal sẽ dịch thành một file EXE trên đĩa và file

Trang 7

đó có thể chạy trực tiếp từ dấu nhắc DOS Nếu đặt là Memory thì mã biên dịch sẽ được đặt trực tiếp vào bộ nhớ và thi hành ngay trong TP7 Lưu ý rằng BP7 bỏ đi menu này vì nó luôn luôn dịch ra đĩa và tạo ra file EXE.

II.6 D ebug menu (Alt + D): Các chức năng gỡ rối

• B reakpoints Điều khiển điểm dừng chương trình

• C all stack: Khi chương trình dừng lại, muốn kiểm tra xem khi chạy tới điểm dừng thì thứ

tự các chương trình con gọi xếp chồng và tham số của nó như thế nào thì chọn chức năng này

• R egister: Mở cửa sổ theo dõi giá trị các thanh ghi của 8088, hữu ích nếu lập trình có chèn nhiều mã lệnh Assembly

• W atch: Mở cửa sổ Watches để theo dõi giá trị của biến trong khi gỡ rối

• O utput: Mở cửa sổ theo dõi kết quả ra màn hình ra sao, ít công dụng, người ta hay dùng User screen hơn

• U ser screen: Tạm ẩn màn hình BP7, cho hiện màn hình kết quả ra, điều này rất có ý nghĩa bởi các chương trình viết và chạy trong BP7, khi chạy xong sẽ tự động quay về màn hình của BP7 nên không kịp nhìn kết quả Muốn trở lại màn hình BP7 thì gõ một phím bất kỳ

• E valuate/ modify: gõ tên biến hoặc biểu thức sẽ cho kết quả, dùng làm máy tính tay rất tốt bởi nó tính được cả biểu thức có biến và xử lý được cả dấu ngoặc Hơn nữa, nó cho phép thay đổi giá trị biến trong quá trình chạy

• A dd watch Thêm một biến, biểu thức vào cửa sổ Watches để theo dõi giá trị trong quá trình gỡ rối

• Add breakpoint: Tạo điểm dừng lúc chạy, để xem giá trị một biến lúc dừng là bao nhiêu chẳng hạn

II.7 T ools menu (Alt + T): Các công cụ hỗ trợ

Trang 8

Các công cụ thêm cho BP7, có thể do chính bản hãng viết hoặc hãng khác viết, nếu có điều kiện tham khảo thêm trong phần Help Bạn có thể viết thêm các công cụ khác bổ sung cho Menu này: Ví dụ: Công cụ hiện bảng mã ASCII, công cụ đo thời gian, v.v

II.8 O ptions menu (Alt + O): Đặt các tham số tuỳ chọn

• C ompiler : Đặt các dẫn hướng biên dịch, có kiểm tra tràn phạm vi hay không ?, có kiểm tra lỗi vào ra đĩa hay không ?

• M emory sizes Đặt lại kích thước bộ nhớ dành cho chương trình gồm có bộ nhớ Stack dành cho các biến địa phương và mã lệnh chương trình con, bộ nhớ Heap dành cho các biến cấp phát động

• L inker : Trình biên dịch khi dịch một chương trình, nó phải dịch một số thư viện mà chương trình dùng đến sau đó liên kết và mã lệnh chương trình, chức năng này đặt một số tuỳ chọn cho quá trình liên kết

• Debugger : Đặt một số tuỳ chọn cho trình gỡ rối

• D irectories : Đặt đường dẫn tìm file, trong đó có việc đặt file EXE khi dịch ra vào thư mục nào, tìm các thư viện ở đâu v.v

• T ools: Thêm công cụ hỗ trợ cho lập trình viên vào menu Tools, thường là một file EXE ví

dụ như chương trình hiện bảng mã ASCII chẳng hạn

• E nvironment: Đặt các tham số môi trường phát triển chẳng hạn như đặt màu chữ, màu nền trong cửa sổ soạn thảo, đặt chế độ khi chạy chương trình thì tự động ghi file v.v

• O pen, Save, và Save as: Mở file chứa các tuỳ chọn/ ghi các tuỳ chọn vào file (.TP)

Trang 9

II.9 W indow menu(Alt+W) : Quản lý cửa sổ

• T ile: Sắp xếp các cửa sổ trên màn hình BP7 bằng cách "lát" kín màn hình BP7 Ví dụ như

có 4 cửa sổ đang mở thì mỗi cửa sổ lúc đó sẽ chiếm 1/4 màn hình

• Cascade: Sắp xếp các cửa sổ trên màn hình BP7 theo cách xếp chồng

• Close all: Đóng tất cả các cửa sổ

• R efresh display: Lập trình truy cập trực tiếp bộ nhớ màn hình khiến cho màn hình BP7 đôi khi gặp "rác" thì dùng chức năng này để quét hết rác Nếu chỉ dùng các lệnh vào ra thông thường thì chẳng bao giờ dùng chức năng này

• S ize/ Move: Thay đổi kích thước, vị trí cửa sổ Bấm Ctrl+F5 sau đó dùng các phím di chuyển ←↑→↓ để dịch chuyển cửa sổ, dùng Ctrl kết hợp với các phím: ← để thu nhỏ chiều ngang; ↑ để thu nhỏ chiều dọc; → để nới rộng chiều ngang, ↓ để nới rộng chiều dọc

• Z oom: Phóng to cực đại cửa sổ hoạt động

• N ext: Chuyển cửa sổ hoạt động sang cửa sổ kế sau (có thể bấm Alt + số hiệu cửa sổ)

• P revious: Chuyển cửa sổ hoạt động sang cửa sổ kế trước (có thể bấm Alt + số hiệu cửa sổ)

• C lose: Đóng cửa sổ hoạt động

• L ist: Hiện danh sách các cửa sổ

II.10 H elp menu (Alt + H): Trợ giúp

Trang 10

• C ontents: Toàn bộ nội dung trợ giúp, nếu không tính đến các cấu trúc bí mật của BP7 thì đây là cuốn sách tra cứu đủ nhất trong tất cả mọi cuốn sách về BP7.

• I ndex: Tìm trợ giúp theo chỉ mục, giống như tra từ điển Ví dụ muốn xem thủ tục Val viết thế nào thì vào chỉ mục V

• T opic search: Di chuyển con trỏ tới một từ nào đó trong văn bản, từ khoá, thủ tục, hàm chuẩn và bấm Ctrl + F1 sẽ hiện ra các thông tin liên quan

• P revious topic: Quay lại chỉ mục trước đây vừa tra

• Using help: Hướng dẫn dùng sách hướng dẫn

• F iles: Các file trợ giúp

• Compiler directives: Hướng dẫn sử dụng các cách thiết lập dẫn hướng biên dịch

• procedures and functions: Danh mục các thủ tục và hàm đã được BP cài đặt sẵn

• R eserved words: Danh mục các từ khoá

• Standard units: Các thư viện chuẩn (Crt, Graph, Dos )

• Borland Pascal Language: Ngôn ngữ Pascal chuẩn quá cứng nhắc đối với lập trình viên, BP7 đã mở rộng ngôn ngữ Pascal để có được sự mềm dẻo hơn, mục này trình bày những

sự sửa đổi đó

• E rror messages: Các thông báo lỗi và cách xử lý

• A bout : Trình bày giới thiệu BP7, tên hãng sản xuất và các vấn đề bản quyền

Trên đây là trình bày sơ qua về hệ thống menu của BP7, có thể nói là có rất nhiều chức năng

và khó nhớ Nên đặt yêu cầu là trừ những chức năng thường xuyên dùng nhất thiết phải nhớ, các chức năng còn lại ta nhớ được càng nhiều càng tốt và học thêm dần dần

III LẬP TRÌNH CẤU TRÚC TRÊN BP7

Lập trình là một công việc khó đòi hỏi phải có tư duy nhanh nhạy và sự tuân thủ kỷ luật nghiêm ngặt trong phong cách lập trình Tư duy tốt để có thể nắm bắt được cấu trúc bài toán

và tìm ra cách giải, còn phong cách tốt là để biến tất cả những cố gắng của trí não và đôi tay thành kết quả cuối cùng Một điều rất hay thấy ở người mới học lập trình là có thể họ nắm bắt được thuật toán rất nhanh nhưng do cách làm việc thiếu hiệu quả nên tiêu tốn rất nhiều thời gian thậm chí càng làm càng bị rối trong hết lỗi này đến lỗi khác Như vậy một phong cách

lập trình tốt trước hết phải là một phong cách viết chương trình có xác suất xảy ra lỗi thấp

nhất, và cho dù có xảy ra lỗi thì cũng dễ dàng chỉnh sửa Còn việc viết các chương trình cỡ

trung bình và lớn mà không có lỗi thì trừ khi sau này người ta sáng tạo ra các máy lập trình chứ nhân loại thì chẳng có ai viết chương trình máy tính mà không có lỗi cả

Ta sẽ phân tích hai vấn đề: "Làm thế nào để hạn chế lỗi" và "nếu có lỗi thì tìm và sửa thế nào".

Hạn chế lỗi thường được quyết định bởi hai yếu tố: Môi trường lập trình và phong cách lập

trình Cách đây vài chục năm với một máy tính cỡ lớn dùng băng đục lỗ, thì rõ ràng khả năng hạn chế và tìm lỗi là rất ít bởi mọi lỗi đều dẫn tới kết quả sai hoặc treo máy, hay với một ngôn ngữ lập trình cấp thấp thì ta chỉ có thể viết những đơn vị chương trình nhỏ mà thôi, bởi tính phi cấu trúc của nó làm cho số lỗi ước tính sẽ tăng theo bình phương chiều dài chương trình Như vậy, xét cho cùng, phải phát triển các ngôn ngữ lập trình (ADA, PASCAL, C++, BASIC)

và chương trình dịch (TP, Borland C, Delphi, VB), phải sáng tạo ra các cách thiết kế (Từ trên

xuống, hướng sự kiện, hướng đối tượng) chính là để giảm bớt công sức cho các lập trình

Trang 11

viên trong việc sửa lỗi để có thể tạo ra những sản phẩm lớn hơn, hoàn thiện hơn, ít lỗi hơn

Rất may cho chúng ta là được làm việc với thế hệ máy tính nhanh, ổn định và thân thiện như ngày nay và với một trình biên dịch như BP7 có khả năng bắt lỗi rất tốt và hỗ trợ lập trình cấu trúc

Phong cách lập trình cấu trúc 3 trên BP7 nên thế nào để hạn chế lỗi?

• Viết một chương trình trên BP7 phải tuân theo các bước: Tìm hiểu yêu cầu bài toán → tìm thuật toán → xây dựng cấu trúc dữ liệu và dựng giải thuật → Viết chương trình + Thử + Sửa lỗi → Nâng cấp → Hoàn thành Không được đảo lộn hay bỏ qua bước nào Lưu ý riêng bước viết chương trình + thử + sửa lỗi, không phải ta viết xong cả chương trình rồi mới thử mà khi có bất kỳ cơ hội nào để thử chạy chương trình (dù là chỉ xong một phần nhỏ) ta chạy thử ngay để có thể tạm yên tâm rằng phần vừa viết không có lỗi

Viết chương trình theo đúng thiết kế từ trên xuống, đầu tiên viết chương trình chính

trước, gồm các bước rất tổng quát, tiếp theo cụ thể hoá từng bước bằng cách viết các

chương trình con tương ứng, thậm chí đôi khi tại mỗi bước cụ thể hoá ta chỉ làm đến mức

độ nào đó rồi lại viết tiếp các chương trình con v.v cách làm này dựa trên nguyên tắc

"chia để trị" rất hiệu quả và đã được thực tế chứng minh Có một vài ý kiến còn cho rằng,

để tiện quan sát, tất cả các chương trình con viết theo cách trên không nên có độ dài quá một trang màn hình Một số người có thói quen viết chương trình cứ từ đầu chí cuối, làm hết chương trình con rồi đến chương trình chính Cách làm như vậy không logic một chút nào bởi khi chưa viết ra chương trình chính, ta đâu đã xác định được nhiệm vụ của các chương trình con, lại càng không xác định được là phải truyền cho chương trình con bao nhiêu tham số và là những tham số nào Đối với chương trình nhỏ thì có thể không nhận thấy điều đó nhưng với những chương trình lớn thì cách làm như trên sẽ phải trả giá rất đắt bằng rất nhiều động tác xoá đi viết lại

• Viết chương trình thì khó tránh phải lỗi cú pháp (Syntax), thiếu dấu thiếu chữ trong việc soạn chương trình cũng là thường tình Các lỗi thiếu ";", thiếu ngoặc, thiếu ":", tên chưa khai báo, v.v thì chỉ cần trình biên dịch báo lỗi đúng chỗ đó là sửa được ngay Cái lỗi cú pháp sửa mất nhiều thời gian nhất là lỗi sai cấu trúc khối (Có "begin", thiếu "end;" hay có

"repeat" thiếu "until" v.v ) Trình biên dịch không thể chỉ ra được chỗ thiếu bởi ví dụ

như có "begin" mà không có "end;" thì chữ "end;" thiếu có thể cho ở nhiều nơi khác nhau

mà vẫn hợp lý cả Trình dịch chỉ thông báo lỗi chung chung là thiếu ";" mà thôi và như vậy thời gian của chúng ta lại lãng phí vào việc dò trong cả chương trình xem thiếu chỗ nào Trong khi lỗi đó sẽ không bao giờ xảy ra nếu như khi soạn chương trình, mỗi khi gõ xong phần mở khối thì ta gõ luôn phần kết khối và lùi vào gõ đoạn giữa khối sau Điều đó không những làm cho khối lệnh được sáng sủa, mở khối kết khối thẳng hàng mà còn làm

ta không phải bận tâm gì về lỗi thiếu cấu trúc khối nữa

end;

repeat .

until ;

R = record .

end;

C = object(P) .

end;

asm .

end;

• Đặt tên gợi nhớ chức năng, không ngại đặt tên dài, trước khi dùng biến phải cân nhắc xem tầm hoạt động của nó là địa phương hay toàn cục, nhiệm vụ của nó để làm gì Nên đặt tên tiếng Anh bởi nếu đặt tiếng Việt khi viết vào máy tính không có dấu dễ bị hiểu theo nghĩa

Trang 12

khác Còn một số việc nhỏ nữa tuy không quan trọng lắm: Từ khoá viết thường, tên thủ tục và hàm chuẩn viết hoa đầu từ tiếng Anh Ví dụ: not, xor, and, or, mod, div, SizeOf, LongInt, Integer, Abs, Sqrt, Sin, Cos, v.v Các tên định nghĩa trong chương trình khi khai báo viết hoa, thường thế nào thì thống nhất trong cả chương trình viết hoa, thường như thế Sau dấu phân cách từ (phẩy hoặc chấm, chấm phẩy ) nên có 1 dấu cách, trước và sau dấu gán := đều có dấu cách Đọc thêm các chương trình mẫu của Borland để rõ điều này.

• Hạn chế tối đa việc viết các thủ tục và hàm lồng nhau quá nhiều cấp, gây rối trong việc đọc chương trình

Nếu ta viết chương trình mà bị lỗi thì sửa như thế nào?

Như đã nói ở trên, ta nói sửa lỗi ở đây là sửa lỗi sai trong cài đặt thuật toán chứ không nói đến lỗi syntax nữa Muốn sửa lỗi cài đặt giải thuật thì về cơ bản các kỹ thuật gỡ rối là khoanh vùng xác định lỗi tức là thu hẹp phạm vi dò tìm tới khi xác định chính xác lỗi và sửa

Lỗi chương trình xảy ra khi ta có một bộ dữ liệu cho vào chương trình chạy được kết quả

không theo ý muốn Khi đó ta sử dụng trình gỡ rối Debugger của BP7 như sau:

Bước 1: Mở cửa số Watches theo dõi giá trị bằng cách bấm Ctrl + F7 hay chọn menu

Debug/Add Watch Gõ tên biến hay biểu thức cần theo dõi, tên biến sẽ hiện ra trong cửa sổ Watches Dùng phím F6 để luân chuyển hoạt động giữa cửa sổ soạn thảo và cửa sổ Watches Bấm Ctrl + F5 hay chọn menu Window/Size/Move sau đó điều chỉnh vị trí và kích thước hai cửa sổ sao cho phù hợp nhất, tốt nhất không nên che nhau

Bước 2: Bấm F8 (Run/ Step over) để thực hiện chương trình từng bước, khi đó trên cửa sổ

soạn thảo sẽ có một vạch ngang cho biết chương trình đã chạy tới dòng nào Mỗi lần bấm F8 thì chương trình chạy đúng 1 dòng và dừng lại, thông báo giá trị các biến được theo dõi trong

cửa số Watches Nhớ rằng mỗi lần chạy qua 1 bước, ta phải tự tính xem, nếu đúng thì giá trị

biến theo dõi phải là bao nhiêu và so sánh với kết quả trong cửa sổ Watches, nếu giống

Trang 13

thì dò tiếp, nếu sai thì chắc chắn dòng lệnh vừa chạy qua là dòng lệnh gây lỗi, ta đã khoanh vùng được một lần.

Bước 3: Nếu dòng lệnh gây lỗi chỉ là một dòng lệnh tương đối đơn giản: như biểu thức số học

chẳng hạn thì nhiều khả năng do ta gõ sai hoặc gõ thừa thiếu một yếu tố gì đó, ta xem kỹ lại biểu thức đó và sửa Nhưng nếu dòng lệnh gây lỗi lại là lời gọi chương trình con thì sao Ta dừng việc gỡ rối bằng cách bấm Ctrl + F2 (Run/ Program reset) và bắt đầu lại từ đầu, chỉ có điều khi đến dòng lệnh gây lỗi ta không bấm F8 chạy qua nữa mà ấn F7 (Run/ Trace into) để trình gỡ rối truy vết vào chương trình con và lại thực hiện chạy từng bước (Step over - F8) hay truy vết (Trace into - F7) tiếp tục thu hẹp phạm vi tìm lỗi

Lưu ý:

1 Cửa sổ Watches có thể theo dõi cùng lúc nhiều biến

2 Để tiết kiệm thao tác cho đỡ phải bấm F8 quá nhiều ta có thể di chuyển con trỏ tới một dòng và bấm F4 (Run/ Go to cursor) để cho chương trình sẽ chạy tới dòng đó thì dừng lại, hiện ra vạch ngang và từ đó gỡ rối tiếp

3 Khi gỡ rối ta phải dùng khá nhiều cửa sổ, chính vì vậy mà những cửa sổ nào không cần

nhất thiết nên đóng lại để khỏi tốn bộ nhớ và che lấp các cửa sổ có ích.

4 Ta cần phải kết hợp cả kỹ thuật đưa giá trị trung gian ra màn hình và tạo điểm dừng theo điều kiện để tiện gỡ rối vòng lặp, ví dụ:

đó bấm Enter để máy nhận Cuối cùng chỉ việc bấm Ctrl+F9 để chạy, khi chạy đến dòng chứa lệnh S1 mà có i = 501 và j = 1000 thì máy sẽ dừng và hiện vạch ngang cho gỡ rối tiếp (gỡ theo vết vào chương trình con S1 chẳng hạn)

5 Cuối cùng, rất quan trọng trong gỡ rối là phải xác định chính xác lỗi, đi sửa lung tung

theo kiểu "có bệnh vái bốn phương" là điều tối kỵ, bởi sửa không đúng chỗ thì lỗi ngày càng tai hại

IV CÁC DẪN HƯỚNG BIÊN DỊCH

Dẫn hướng biên dịch (Compiler Directive) là đặt chế độ bắt buộc trình biên dịch sinh mã theo một điều kiện nào đó Để đặt dẫn hướng biên dịch ta có cú pháp

• {$<Dẫn hướng biên dịch>} hoặc

• (*$<Dẫn hướng biên dịch>*)

Hoặc ta mở menu Options/Compiler và đánh dấu vào các ô trong hộp thoại:

Ngày đăng: 26/10/2014, 22:00

Xem thêm

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w