5: Kiểm thử chương trình (Testing program)

Một phần của tài liệu (SKKN CHẤT 2020) kĩ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình pascal (Trang 30 - 34)

c. Tính chất của thuật toán:

1.2. 5: Kiểm thử chương trình (Testing program)

Chạy thử và tìm lỗi và công việc mà người lập trình cần phải làm khi viết xong chương trình để kiểm tra chương trình của mình. Chương trình là do con người viết ra, cho nên khó có thể tránh khỏi sự nhầm lẫn. Một chương trình viết xong chưa chắc đã chạy được ngay trên máy tính để cho ra kết quả mong muốn. Kỹ năng tìm lỗi, sửa lỗi, điều chỉnh lại chương trình cũng là một kỹ năng quan trọng của người lập trình. Kỹ năng này có được bằng kinh nghiệm tìm và sửa lỗi của chính mình.

Có 2 loại lỗi cơ bản thường gặp khi lập trình:

+ Lỗi thuật toán: Lỗi này ít gặp nhất nhưng nguy hiểm nhất. Nếu nhẹ thì phải điều chỉnh lại thuật toán, nếu nặng thì có khi phải viết lại một thuật toán mới từ đầu.

+ Lỗi cú pháp: lỗi này hay gặp nhưng cũng là lỗi dễ sửa nhất. Chỉ cần nắm vững ngôn ngữ lập trình là đủ. Một người được coi là không biết lập trình nếu không biết sửa lỗi cú pháp. Và đây là lỗi thường gặp nhất đối với học sinh bắt đầu học lập trình.

Ví du 1: Tìm số lớn nhất trong 3 số a,b,c nguyên được nhập vào từ bàn phím.

Lần 1: Program tim_so_lon_nhat ; uses crt; var a,b,c:integer; begin clrscr; write('nhap 3 so=');readln(a,b,c); if a<b then a:=b

else if a<c then a:=c; write('so lon nhat la ',a);

readln End.

Với chương trình này cũng chạy được song đáp số có lúc đúng, có lúc sai tùy thuộc vào lúc nhập giá trị a, b, c { nếu nhập thứ tự a = 5 ; b= 7; c= 9 thì sẽ cho ta kết quả số lớn nhất là 7 sai hoàn toàn.

Do đó người lập trình cần phải biết cách tìm lỗi. Sữa lỗi, điều chỉnh viết lại chương trình cũng là kỹ năng quan trọng của người lập trình. Vậy với ví dụ trên để kết quả luôn đúng thì ta có thể viết lại chương trình

Lần 2: Program tim_so_lon_nhat ; uses crt;

var a,b,c, max :integer; begin

clrscr ;

write('nhap 3 so = ') ; readln(a,b,c); max:=a ;

if max < b then max :=b; if max <c then max :=c ; writeln ('so lon nhat la ', max); readln End. Nếu nhập: Lần nhập 1 2 3

Ví dụ 2: Viết chương trình in ra màn hình hình chữ nhật toàn dấu * với chiều dài và chiều rộng nhập từ bàn phím. Lần 1: Program hinh_chu_nhat; Uses crt; Var i, cd,cr :integer; Begin Clrscr;

Write(‘ Nhap chieu dai hinh chu nhat’); readln(cd); Write(‘ Nhap chieu rong hinh chu nhat’); readln(cr); For i : = 1 to cd*cr do writeln(‘*’);

Readln End.

Với chương trình này cũng chạy được song kết quả sai (in ra màn hình một

cột toàn dấu * với chiều dài là diện tích hinh chữ nhật).

Với ví dụ trên để kết quả luôn đúng thì ta có thể viết lại chương trình. Lần 2: Program hinh_chu_nhat ;

Uses crt;

Var i,j, cd,cr:integer; Begin

Clrscr;

Write(‘ Nhap chieu dai hinh chu nhat’); readln(cd); Write(‘ Nhap chieu rong hinh chu nhat’); readln(cr); For i: = 1 to cr do Begin for j: = 1 to cd do write(‘*’); Writeln; End; Readln End. Ví dụ 3: viết chương trình tính tổng S=1 1 2 1 3 .... 1 n (n được nhập vào từ bàn phím)

Học sinh viết chương trình khai báo biến S thuộc kiểu dữ liệu nguyên (Integer) thì chương trình sẽ không thực hiện được phép toán tính tổng. Do vậy để thực hiện được phép toán thì khai báo biến S là thuộc kiểu dữ liệu thực (Real).

Ví dụ 4: Viết chương trình giải phương trình bậc nhất ax+b=0 với a,b được nhập vào từ bàn phím.

program ptb1; var

a,b:real; begin

write('nhap cac he so='); readln(a,b);

if a<>0 then writeln('phuong trinh vo so nghiem'); else

if b=0 then writeln('phuong trinh co nghiem',-b/a:4:2) else

writeln('phuong trinh vo nghiem') readln

end.

Với chương trình trên hoàn toàn có thể chạy được song kết quả sẽ không đúng khi nhập dữ liệu a, b vào . Do vậy ta phải sắp xếp lại thuật toán để cho một kết quả đúng như yêu cầu :

program ptb1; var a,b:real; begin

write('nhap cac he so=');readln(a,b); if a<>0 then

if b=0 then writeln('phuong trinh vo nghiem') else

writeln('phuong trinh co nghiem',-b/a:4:2) else

writeln('phuong trinh vo so nghiem'); readln

end.

Ví dụ 5: Lỗi sau câu lệnh ta không sử dụng dấu chấm phẩy, hay kết thúc chương trình không có dấu chấm, hay từ khoá BEGIN nếu ta viết BE GIN thì sẽ không có nghĩa.

Một phần của tài liệu (SKKN CHẤT 2020) kĩ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình pascal (Trang 30 - 34)

Tải bản đầy đủ (DOCX)

(43 trang)
w