Hãy chỉ ra lỗi và sau đó sửa lỗi trong các câu lệnh sau đây: a) A:=5While A:=5 do A:=A+3; b) S:=O; For i:=1 to 5.5 do s:=s+i; c) m:=O; T:=O; While T<=

Hãy chỉ ra lỗi và sau đó sửa lỗi trong các câu lệnh sau đây:
a) A:=5While A:=5 do A:=A+3;
b) S:=O; For i:=1 to 5.5 do s:=s+i;
c) m:=O; T:=O;
While T<=5 do m:=m+1; T:=T+m; d) T:=O; For i:=6 to 1 do T:= T*i ;

0 bình luận về “Hãy chỉ ra lỗi và sau đó sửa lỗi trong các câu lệnh sau đây: a) A:=5While A:=5 do A:=A+3; b) S:=O; For i:=1 to 5.5 do s:=s+i; c) m:=O; T:=O; While T<=”

  1. a) A:=5 While A:=5 do A:=A+3;

    ⇒ Sai cú pháp: Thiếu dấu ; trước While

    ⇒ Sửa lỗi: A:=5; While A:=5 do A:=A+3;

    b) S:=0; For i:=1 to 5.5 do s:=s+i;

    ⇒ Sai cú pháp: Trong câu lệnh For..do, giá trị cuối (sau to) không là số nguyên

    ⇒ Sửa lỗi: S:=0; For i:=1 to 5 do s:=s+i;

    c) m:=0; T:=0;

    While T<=5 do m:=m+1; T:=T+m;

    ⇒ Sai logic: Sau do ở câu lệnh While..do, không có câu lệnh đổi các giá trị của các biến có ở điều kiện. Do đó, chương trình lặp vô tận.

    ⇒ Sửa lỗi: m:=0; T:=0;

                     While T<=5 do

                               begin

                               m:=m+1; T:=T+m;

                               end;

    d) T:=0; For i:=6 to 1 do T:= T*i ;

    ⇒ Sai cú pháp: Trong câu lệnh For..do, giá trị cuối (sau to) bé hơn giá trị đầu

    ⇒ Sửa lỗi: T:=0; For i:=1 to 6 do T:= T*i;

           hoặc: T:=0; For i:=6 downto 1 do T:= T*i;

    (Ngoài ra, nếu đây là đoạn lệnh tính tích các STN từ 1 đến 6 thì:

    ⇒ Sai logic: Mọi số i nhân T=0 đều cho ra T=0. Do đó, chương trình gặp lỗi khi tính toán

    ⇒ Sửa lỗi: T:=1; For i:=1 to 6 do T:= T*i;

           hoặc: T:=1; For i:=6 downto 1 do T:= T*i;)

    Bình luận
  2. a) sai:

    – chỗ sau 5 không có ;

    – điều kiện ko có :

    sửa: A:=5; while A=5 do A:=A+3;

    b)

    sai chỗ giá trị cuối

    sửa: S:=0; for i:=1 to 5 do s:=s+i;

    c)

    thiếu ko có begin end nếu ko có câu lệnh sẽ lặp vô hạn

    sửa:

    m:=0; T:=0;

    while T<=5 do begin

    m:=m+1; T:=T+m;

    end;

    d) sai:

    – giá trị đầu và giá trị cuối

    – nếu gán 0 cho T chương trình kết thúc sẽ ra 0 ko tính ra được vì đây là phép tính nhân nên phải gán T:=1;

    sửa: T:=1; for i:=1 to 6 do T:=T*i;

    Bình luận

Viết một bình luận