Bài 10: Cấu trúc lặp

BÀI 10. CẤU TRÚC LẶP
- 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.

Bài Viết Liên Quan

Phản Hồi Độc Giả


Biểu Tượng Cảm XúcBiểu Tượng Cảm Xúc