M
mikelhpdatke
Chắc suất Đại học top - Giữ chỗ ngay!! ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.
[*] [Thủ Thuật] Kiểm tra tính chính xác của chương trình pascal
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
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 :
vd một chương trình mà mình viết sẵn :
Mã:
[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
Mã:
[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]
- 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
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
Mã:[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
Mã:{$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: