Làm sao để biết lỗi sai trong pascal năm 2024

Từ khoá của các lệnh : If, Then, Else, Case, For, To, Do, With, Downto, While, Repeat, Until, Goto, Break, Exit,…

Từ khoá toán tử: And, Or, Not, In, Div, Mod,Nul

• Không khai báo sử dụng thư viện CRT mà dùng các hàm clrscr, gotoxy …: Để tránh lỗi này tốt nhất dù không dùng hay dùng các hàm điểu khiển màn hình cũng viết thêm câu lệnh

Code:

Uses CRT;

• Chưa khai báo biến mà đã sử dụng trong chương trình chính. Lỗi này khó phát hiện khi viết chương trình trên giấy, tốt nhất là khi viết chương trình khi cần biến nào các bạn liệt kê lại rồi kiểm tra xem mình đã khai báo hay chưa. Khi viết phần khai báo biến nên để trống ra 1,2 dòng với trước BEGIN, tên biến và kiểu dữ liệu nên các ra một vài khoảng trống, để nếu có biến nào chưa khai báo ta có thể thêm vào mà không phải tẩy xóa

VÍ DỤ

Code:

Var x,y : integer; a,b : real;

BEGIN … END.

• Trong lệnh WRITE, hoặc WRITELN thì khi in ra dòng thông báo thường thiếu dấu nháy đơn mở, đóng lời thông báo, nếu in ra nhiều mục thì thiếu dấu ‘,’ ngăn cách các mục.

Code:

SAI : WRITE(‘Nhap so luong so N= ); WRITE(Nhap ten cua ban : ); WRITELN(‘Tong S tinh duoc la : ’ S) ;

ĐÚNG : WRITE(‘Nhap so luong so N=’ ); WRITELN(‘Tong S tinh duoc la : ’, S);

• Viết lệnh ghép (lệnh có >1 lệnh) mà không có begin , end hoặc có begin mà không có end VÍ DỤ : Chương trình tính tổng của dãy số (N số ) nhập từ bàn phím, khi nhập ta sẽ vừa nhập vừa đếm số nhập vào và tính tổng các số luôn. Do đó tại mỗi bước lặp của vòng lặp ta thực hiện nhiều hơn 1 lệnh nên khối lệnh đó cần bắt đầu bằng Begin và kết thúc là End; (có dấu ‘;’)

Code:

S:=0; dem:=0; For i:=1 to N do Begin write(‘Nhap gia tri tiep theo : ’); readln(x); S:=S+x; dem:=dem+1; End;

• Kết thúc chương trình không có end. Hay có end nhưng không có dấu ‘.’ SAI : END; HOẶC END ĐÚNG : END. Chú ý : là đây là lệnh END kết thúc phần thân chương trình chính. Thân chương trình chính bắt đầu bằng BEGIN và kết thúc bằng END.

• Trong chương trình chính viết sai phép gán : kiểu dữ liệu của biến và biểu thức trong phép gán không tương thích : Gán 1 biểu thức có giá trị thực cho một biến nguyên.

Chào các bạn, nếu bạn là một người học lập trình lâu năm hoặc đã có kinh nghiệm trong lập trình thì các lỗi cú pháp sẽ không khó sửa đối với các bạn. Tuy nhiên với các bạn mới bắt đầu học ngôn ngữ lập trình Pascal thì có thể sẽ hơi lúng túng một chút trong việc sửa các lỗi cú pháp cơ bản như chưa khai báo biến, hằng hoặc khai báo sai kiểu,…

Để giúp các bạn có thể dễ dàng nhận biết và sửa các lỗi thì mình đã lập trình một tính năng gọi là “Auto Fix”, chức năng này sẽ giúp các bạn tự sửa một số lỗi cơ bản:

1. Khai báo biến

begin

aa := 2;
end.

Nhận thấy rằng đoạn chương trình trên chưa khai báo biến, khi nhấn biên dịch, ứng dụng sẽ giúp bạn khai báo biến.

var

aa: integer;
begin
aa := 2;
end.

2. Khai báo hàm, thủ tục

3. Khai báo hằng

var

aa: integer;
begin
aa := cc + 2;
end.

Sau khi sửa sẽ trở thành

const

cc = |;
var
aa: integer;
begin
aa := cc + 2;
end.

Con trỏ sẽ được đưa vào sau dấu =, các bạn điền giá trị của hằng vào.

4. Sửa lỗi khai báo sai kiểu (trình biên dịch sẽ tự sửa đúng với kiểu dữ liệu)

var

variable : integer;
begin
variable := 'string';
end.

Đoạn chương trình trên khai báo sai kiểu của biến

var

aa: integer;
begin
aa := 2;
end.

0, chương trình sẽ sửa lại thành

var

variable : String;
begin
variable := 'string';
end.

Tức là chuyển kiểu

var

aa: integer;
begin
aa := 2;
end.

1 sang kiểu

var

aa: integer;
begin
aa := 2;
end.

2

5. Chuyển một hằng thành biến

Giá trị của hằng thì không thể bị thay đổi, trong đoạn chương trình sau đang mắc lỗi đó:

const

constant = 3;
begin
constant := 4;
end.

Khi biên dịch sẽ báo lỗi là giá trị của hằng

var

aa: integer;
begin
aa := 2;
end.

3

var

constant: Integer = 3;
begin
constant := 4;
end.

6. Tự sửa khi thiếu chương trình chính

7. Tự sửa kiểu của hằng

8. Tự sửa kiểu của biến

var var1: string; var2: longint; begin var2 := 3; var1 := var2; end.

Đoạn chương trình trên khi biên dịch sẽ báo lỗi biến

var

aa: integer;
begin
aa := 2;
end.

4 không thể gán giá trị là biến

var

aa: integer;
begin
aa := 2;
end.

5 vì

var

aa: integer;
begin
aa := 2;
end.

4 có kiểu

var

aa: integer;
begin
aa := 2;
end.

2 còn

var

aa: integer;
begin
aa := 2;
end.

5 có kiểu

var

aa: integer;
begin
aa := 2;
end.

  1. Chương trình sẽ sửa lại thành

var var1: Longint; var2: longint; begin var2 := 3; var1 := var2; end.

9. Thêm vào dấu chấm cuối chương trình

10. Thêm end vào cuối chương trình

Và còn nhiểu tính năng khác mình sẽ phát triển tiếp trong tương lai

Các bạn có thể tải ứng dụng qua đường dẫn https://play.google.com/store/apps/details?id=com.duy.pascal.compiler&hl=vi