Page 16 - Tin Học 11 - Chương III
P. 16

Tin học 11                                                                        Tập 2




                 Lặp là điều khiển công việc lặp đi lặp lại khi chưa đủ số lần lặp

                 hoặc khi có một điều kiện nào đó còn đúng.

                 Cấu trúc lặp dùng để mô tả thao tác lặp được phân làm hai loại:

                     •  Lặp với số lần biết trước

                     •  Lặp với số lần chưa biết trước


               Trong một số thuật toán, có những thao tác phải thực hiện lặp đi lặp lại một số lần.
               Một trong các đặc trưng của máy tính là có khả năng thực hiện hiệu quả các thao tác
               lặp. Các ngôn ngữ lập trình đều có các câu lệnh để mô tả cấu trúc lặp.



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

                            for-do:


                        Cho bài toán sau:

                                      S = 1 + 2 + 3 + 4 + … + 100.


               Có hai thuật toán để giải bài toán trên là:

               Thuật toán 1:
                   Bước 1.  S ← 0; N ← 0; {Khởi tạo S và N}
                   Bước 2.  N ← N+1;
                   Bước 3.  Nếu N>100 thì chuyển sang Bước 5;
                   Bước 4.  S ← S + N rồi quay lại Bước 2;
                   Bước 5.  Đưa S ra màn hình, rồi kết thúc.


               Thuật toán 2:
                   Bước 1.  S ← 100; N ← 100; {Khởi tạo S và N}
                   Bước 2.  N ← N-1;
                   Bước 3.  Nếu N<1 thì chuyển sang Bước 5;
                   Bước 4.  S ← S + N rồi quay lại Bước 2;
                   Bước 5.  Đưa S ra màn hình, rồi kết thúc.

               Thuật toán 1 là lặp với số lần biết trước dạng tiến vì sau mỗi lần lặp, N sẽ được tăng
               thêm 1. Ngược lại, thuật toán 2 là dạng lùi vì sau mỗi lần lặp, N sẽ giảm đi 1.

                     Câu lệnh lặp for-do thể hiện dạng lặp với số lần biết trước:


                 Dạng lặp tiến  for <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;

                 Dạng lặp lùi    for <biến đếm> := <giá trị cuối> downto <giá trị đầu> do <câu lệnh>;



                                                                                                      16
   11   12   13   14   15   16   17   18   19   20   21