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,… Show
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ếnbegin 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 begin end.2. Khai báo hàm, thủ tục3. Khai báo hằngvar begin end.Sau khi sửa sẽ trở thành const var begin 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 begin end.Đoạn chương trình trên khai báo sai kiểu của biến var begin end.0, chương trình sẽ sửa lại thành var begin end.Tức là chuyển kiểu var begin end.1 sang kiểu var begin end.2 5. Chuyển một hằng thành biếnGiá 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 begin end.Khi biên dịch sẽ báo lỗi là giá trị của hằng var begin end.3 var begin end.6. Tự sửa khi thiếu chương trình chính7. Tự sửa kiểu của hằng8. Tự sửa kiểu của biếnvar 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 begin end.4 không thể gán giá trị là biến var begin end.5 vì var begin end.4 có kiểu var begin end.2 còn var begin end.5 có kiểu var begin end.
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ình10. Thêm end vào cuối chương trìnhVà còn nhiểu tính năng khác mình sẽ phát triển tiếp trong tương laiCá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 |