YOMEDIA
NONE

Nêu sự khác nhau giữa câu lệnh lặp và câu lệnh đếm?

Nêu sự khác nhau giữa câu lệnh lặp và câu lệnh đếm. và viết cấu trúc của hai câu lệnh trên

Câu lệnh lặp được thực hiện như thế nào? Nêu cấu trúc và viết các bước thực hiện câu lệnh lặp?

Theo dõi Vi phạm
ATNETWORK

Trả lời (1)

  • "For..to..do.." hay "For..downto..do.." được hiểu như là cấu trúc lặp với số lần lặp được báo trước và thường sẽ có kết thúc (hay còn gọi là "thoát" khỏi vòng lặp).
    Tuy nhiên, cấu trúc "While..do.." hay "Repeat..Until.." nói chung được hiểu như cấu trúc lặp với số lần lặp không biết trước (hoặc chưa biết trước) và có một số trường hợp sẽ "treo" máy vì cấu trúc lặp vô tận xãy ra do lỗi cài đặt hoặc xử lý câu lệnh của người viết chương trình

    Câu lệnh lặp với số lần biết trước

    a. Dạng 1:

    1 2 for <bien>:=<gia_tri_dau> to <gia_tri_cuoi> do <cong_viec>;

    – Bước 1: Kiểm tra giá trị đầu có <= (nhỏ hơn hoặc bằng) giá trị cuối hay không. Nếu đúng thì gán giá trị đầu cho biến và thực thi công việc.
    – Bước 2: Kiểm tra giá trị biến <> (khác) giá trị cuối hay không. Nếu đúng thì tăng thêm biến một đơn vị (bien:=SUCC(bien)) rồi thực hiện công việc.
    – Lập lại bước 2, cho đến khi giá trị biến bằng giá trị cuối thì kết thúc câu lệnh.
    Lưu ý:Biến sau từ khoá for phải là biến đếm được và giá trị đầu phải <= giá trị cuối.

    b. Dạng 2:

    1 2 for <bien>:=<gia_tri_dau> downto <gia_tri_cuoi> do <cong_viec>;

    – Bước 1: Kiểm tra giá trị đầu có >= (nhỏ hơn hoặc bằng) giá trị cuối hay không. Nếu đúng thì gán giá trị đầu cho biến và thực thi công việc.
    – Bước 2: Kiểm tra giá trị biến <> (khác) giá trị cuối hay không. Nếu đúng thì giảm biến xuống một đơn vị(bien:=PRED(bien)) rồi thực hiện công việc.
    – Lập lại bước 2, cho đến khi giá trị biến bằng giá trị cuối thì kết thúc câu lệnh.
    Lưu ý:Biến sau từ khoá for phải là biến đếm được và giá trị đầu phải >= giá trị cuối.

    Lưu ý: Không giống với các ngôn ngữ khác, Pascal không kiểm tra (biến>cuối) trong câu lệnh FOR … TO … DO để kết thúc vòng lặp mà là kiểm tra (biến=cuối) để thực hiện lần lặp cuối cùng. Vì lẽ đó việc can thiệp vào biến đếm có thể gây ra sự cố “vòng lặp vô tận”. Ngay cả khi bien đã duyệt qua hết phạm vi của kiểu dữ liệu (tức giá trị 255) thì bien quay lai giá trị 0 … và mọi thứ lại tiếp tục …trừ khi gõ Ctrl – Break.

    4. Câu lệnh lặp với số lần chưa biết trước

    a. Vòng lặp WHILE
    Cú pháp:

    1 2 while <dieu_kien> do <cong_viec>;

    Khi gặp vòng lặp chương trình sẽ kiểm tra điều kiện, nếu điều kiện đúng thì thực thi công việc, sau đó quay lại kiểm tra điều kiện. Cứ tiếp tục như thế cho tới khi nào điều kiện sai thì kết thúc.
    {Trong khi điều kiện đúng thì làm công việc}.

    b. Vòng lặp REPEAT

    Cú pháp:

    1 2 3 4 repeat writeln('i =',i); i:=i+1; until i>10;

    Khi gặp vòng lặp chương trình sẽ thực thi công việc, sau đó kiểm tra điều kiện, nếu điều kiện sai thì tiếp tục thực hiện công việc sau đó kiểm tra điều kiện. Cứ tiếp tục như thế cho tới khi nào điều kiện đúng thì kết thúc. {Làm công việc cho đến khi điều kiện đúng}.

    Lưu ý:

    + Không giống với vòng lặp for Cả hai vòng lặp While và Repeat đều là vòng lặp không xác định trước số lần lặp. Cần phải có câu lệnh thay đổi giá trị biến điều khiển vòng lặp để có thể thoát ra khỏi vòng lặp.
    + Trong vòng lệnh while thì điều kiện sẽ được kiểm tra trước, nếu điều kiện đúng thì thực hiện công việc. Còn trong lệnh repeat thì ngược lại, công việc được làm trước rồi mới kiểm tra điều kiện, nếu điều kiện đúng thì vòng lặp kết thúc. Như vậy đối với vòng lặp repeat bao giờ thân vòng lặp cũng được thực hiện ít nhất một lần, trong khi thân vòng lặp while có thể không được thực hiện lần nào.
    + Nếu dùng 2 lệnh này để giải cùng một bài toán, cùng một giải thuật như nhau thì điều kiện sau while và điều kiện sau until là phủ định nhau.
    + Các câu lệnh trong vòng lặp repeat không cần phải đặt trong cặp từ khóa BEGIN và END;

      bởi nguyen taan 17/10/2018
    Like (0) Báo cáo sai phạm

Nếu bạn hỏi, bạn chỉ thu về một câu trả lời.
Nhưng khi bạn suy nghĩ trả lời, bạn sẽ thu về gấp bội!

Lưu ý: Các trường hợp cố tình spam câu trả lời hoặc bị báo xấu trên 5 lần sẽ bị khóa tài khoản

Gửi câu trả lời Hủy
 
NONE

Các câu hỏi mới

AANETWORK
 

 

YOMEDIA
ATNETWORK
ON