– Trong cuộc sống, có những hành động được gọi là lặp đi lặp lặp lại nhiều lần như:

  • Đánh răng mỗi ngày hai lần, học Tin học mỗi tuần 2 tiết, mỗi ngày tắm một lần…
  • Học cho đến khi thuộc bài, rửa tách trà cho đến khi sạch…

– Trong Pascal, cách mô tả công việc (hoạt động) được lặp lại nhiều lần gọi là cấu trúc lặp. Có 3 loại cấu trúc vòng lặp như sau:

  • Cấu trúc for
  • Cấu trúc while do
  • Cấu trúc repeat

1. Cấu trúc FOR

– Cấu trúc FOR cho phép lặp lại nhiều lần một dãy lệnh mà số lần lặp lại đã biết trước.

– Phát biểu FOR có 2 dạng:

  • Dạng tiến (đếm lên): FOR ….. TO ….. DO
  • Dạng lùi (đếm xuống): FOR ….. DOWNTO ….. DO

– Cú pháp tổng quát:   

FOR <biến đếm> := <giá trị đầu> TO/DOWNTO <giá trị cuối>  DO <Công việc>;

 

– Sơ đồ khối:

 

 

– Hoạt động: 

 

 

  • Bước 1: Thực hiện biểu thức 1 (gán giá trị khởi đầu)
  • Bước 2: Kiểm tra điều kiện lặp:
    • Nếu điều kiện lặp có giá trị ‘sai’ thì ra khỏi vòng lặp.
    • Ngược lại, nếu điều kiện lặp có giá trị ‘đúng’ thì chuyển tới bước 3.
  • Bước 3: Thực hiện khối lệnh sau for (thân của for), chuyển tới bước 4.
  • Bước 4: Thực hiện biểu thức 3 (tăng/ giảm biến đếm), rồi quay về bước 2.

 

* Chú ý: 

  • Giá trị đầu, giá trị cuối là các biến hoặc hằng;
  • Biến đếm phải là kiểu rời rạc.

 

 

– Ví dụ 1: Chương trình in một dãy số từ 0 đến 9

PROGRAM Day_So;
VAR i: Integer;
BEGIN
FOR i := 0 TO 9 DO
Write (i);
Readln;
END.

 

2. Câu lệnh While …Do

– Cấu trúc:

WHILE <điều kiện> DO <lệnh cần lặp>;

– Sơ đồ khối:

* Lưu ý: Trong khối các lệnh lặp bắt buộc phải có lệnh thay đổi biến chỉ số (để thay đổi giá trị <điều kiện>)

– Hoạt động:

  • Bước 1: Kiểm tra điều kiện lặp:
    • Nếu điều kiện lặp sai thì thoát khỏi vòng lặp, chuyển sang lệnh tiếp theo.
    • Nếu điều kiện lặp đúng thì chuyển sang bước 2.
  • Bước 2: Thực hiện khối  các lệnh lặp.
  • Bước 3: Quay lại bước 1.

– Ví dụ 2: Chương trình tính trung bình n số:  x1 + x2 + x3 + … + xn

Program Trung_binh_Day_So;
VAR  n, count: Integer;
x, sum, average: real;
BEGIN
count := 1;
sum := 0;
Writeln('Nhập n = '); readln (n);
WHILE  count  < n+1  DO
BEGIN
Writeln('Nhập giá trị thứ' , count,' của x = '); readln (x);
sum := sum + x;
count := count + 1;
END;
average :=  sum/n;
Writeln('Trung bình là =' , average : 10 : 3 );
Readln;
END.

THOÁT KHỎI BÌNH LUẬN

Please enter your comment!
Please enter your name here