Cách kiểm tra lỗi trong Pascal

Cách kiểm tra lỗi trong Pascal
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn

ĐĂNG BÀI NGAY để cùng thảo luận với các CAO THỦ trên mọi miền tổ quốc. Hoàn toàn miễn phí!

[*] [Thủ Thuật] Kiểm tra tính chính xác của chương trình pascal

Khi bạn viết một chương trình pascal về một bài toán nào đấy, mà chương trình bạn chưa đúng một vài chỗ mà code thì dài bạn không biết nên kiểm tra từ đâu vậy đây là một thủ thuật rất cần thiết để kiểm tra thuật toán đó..nó sẽ giúp ích cho bạn khi mà chương trình của mình chưa đúng nhất là trong các cuộc thi.do mình không biết chụp màn hình khi mở pascal nên không có ảnh minh hoạ mong các bạn thông cảm !!!
vd một chương trình mà mình viết sẵn :​

[COLOR=#000000] [COLOR=#0000BB]program pascal_com[/COLOR][COLOR=#007700]; var [/COLOR][COLOR=#0000BB]n[/COLOR][COLOR=#007700]:[/COLOR][COLOR=#0000BB]integer[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]procedure nhap[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]begin write[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'nhap n='[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]readln[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]n[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]end[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]procedure xuli[/COLOR][COLOR=#007700]; var [/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]j[/COLOR][COLOR=#007700]:[/COLOR][COLOR=#0000BB]integer[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]begin j[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]; for [/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]1 to n [/COLOR][COLOR=#007700]do if [/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]<=[/COLOR][COLOR=#0000BB]j then a[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]i [/COLOR][COLOR=#007700]else [/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]end[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]begin nhap[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]xuli[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]end[/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB][/COLOR] [/COLOR]

Bước 1: bạn mở chương trình ra bước 2: bạn nhấn tổ hợp phím ctrl +f7 nó sẽ hiện ra 1 bảng. bạn muốn kiểm tra giá trị nào thì đánh giá trị đó vd : mình muốn kiểm tra các giá trị i,j,a,b thì mình đánh ctrl+f7 và đánh i tương tự cho j,a,b bước 3: xong bước 2 nó sẽ hiện ra một bảng phía dưới của chương trình làm cho mình không nhìn dc code giờ mình sẽ chỉnh kích cỡ bằng cách *nhấn tổ hợp phím ctrl+f5 *sau đó giữ shift và dùng mũi tên <= để chỉnh kích thước *sau đó bạn thả nút shift rùi dùng các mũi tên để điều chỉnh vị trị cho thích hợp không che mất chương trình của bạn bước 4: bạn nhấn ENTER giờ là bước kiểm tra chương trình của bạn có 2 cách: cách 1Dùng f7 để kiểm tra từng lệnh trong chương trình cách 2Dùng f8 để kiểm tra từng chương trình con trong trường hợp bạn không muốn kiểm tra những chương trình con mà không cần thiết các bạn theo dõi các giá trị cần biết trên bảng rùi xem sai ở lệnh nào trong bài code xong rồi !!! CHÚC CÁC BẠN HỌC TỐT

----------------------------------

Với nhiều chương trình bạn viết trong pascal mà khi bạn chạy bằng những bộ test nhỏ thì nó vẫn hiện ra kết quả đúng khi đó bạn tưởng rằng chương trình đúng rồi mà thực ra trong chương trình bạn vẫn có thể có một số chỗ sai mà bạn chưa biết. Vậy với thủ thuật này nó có thể cho bạn biết chương trình có lỗi bằng cách vd: đây là chương trình để test

[COLOR=#000000] [COLOR=#0000BB]program pascal_com[/COLOR][COLOR=#007700]; var [/COLOR][COLOR=#0000BB]n[/COLOR][COLOR=#007700]:[/COLOR][COLOR=#0000BB]integer[/COLOR][COLOR=#007700];[/COLOR][COLOR=#0000BB]m[/COLOR][COLOR=#007700]:[/COLOR][COLOR=#0000BB]shortint[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]procedure nhap[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]begin write[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'nhap n='[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]readln[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]n[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]end[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]procedure xuli[/COLOR][COLOR=#007700]; var [/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]j[/COLOR][COLOR=#007700]:[/COLOR][COLOR=#0000BB]integer[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]begin m[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]n[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]j[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]a[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]; for [/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]1 to n [/COLOR][COLOR=#007700]do if [/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]<=[/COLOR][COLOR=#0000BB]j then a[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]i [/COLOR][COLOR=#007700]else [/COLOR][COLOR=#0000BB]b[/COLOR][COLOR=#007700]:=[/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]end[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]begin nhap[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]xuli[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]end[/COLOR][COLOR=#007700]. [/COLOR][/COLOR] [/INDENT] [*][COLOR=#000000][COLOR=#007700] [/COLOR][/COLOR]


  1. bạn chạy chương trình với n=30000 nó vẫn chạy với a,b đúng
    nhưng bạn nhìn kĩ xem biến m khai báo là shortint , biến n khai báo là integer thì không thể gán m cho n khi n=30000 nó sẽ vượt qua shortint

    Cách kiểm tra lỗi trong Pascal

    phát hiện bằng cách rất đơn giản bạn nhấn tổ hợp phím ctrl+o+o {'o' là chữ cái nhé } nó sẽ hiện ra

    [COLOR=#000000] [COLOR=#0000BB][/COLOR][COLOR=#007700]{[/COLOR][COLOR=#0000BB]$A[/COLOR][COLOR=#007700]+,[/COLOR][COLOR=#0000BB]B[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]D[/COLOR][COLOR=#007700]+,[/COLOR][COLOR=#0000BB]E[/COLOR][COLOR=#007700]+,[/COLOR][COLOR=#0000BB]F[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]G[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]I[/COLOR][COLOR=#007700]+,[/COLOR][COLOR=#0000BB]L[/COLOR][COLOR=#007700]+,[/COLOR][COLOR=#0000BB]N[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]O[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]P[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]Q[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]R[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]S[/COLOR][COLOR=#007700]+,[/COLOR][COLOR=#0000BB]T[/COLOR][COLOR=#007700]-,[/COLOR][COLOR=#0000BB]V[/COLOR][COLOR=#007700]+,[/COLOR][COLOR=#0000BB]X[/COLOR][COLOR=#007700]+,[/COLOR][COLOR=#0000BB]Y[/COLOR][COLOR=#007700]+} {[/COLOR][COLOR=#0000BB]$M 16384[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]655360[/COLOR][COLOR=#007700]} [/COLOR][/COLOR]


    và sửa R- thành R+ sau khi bạn chạy với n=30000 nó sẽ báo lỗi "RANGE CHECK ERROR" LƯU Ý: CHƯƠNG TRÌNH NÀO BẠN CŨNG NÊN ĐỂ THẾ VÌ NÓ SẼ KHÔNG ẢNH HƯỞNG GÌ ĐẾN CODE CUẢ BẠN

    chương trình sau khi thực hiện​


  2. {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+,Y+} {$M 16384,0,655360} program pascal_com; var n:integer;m:shortint; procedure nhap; begin write('nhap n='); readln(n); end; procedure xuli; var a,b,i,j:integer; begin m:=n; j:=3; a:=0; b:=0; for i:=1 to n do if i<=j then a:=i else b:=i; end; begin nhap; xuli; end.


Last edited by a moderator: 12 Tháng sáu 2012

Chắc em dùng turbo pascal hả Dùng free pascal thì sẽ báo lỗi ngay

Exit code 201