cau truc lap

Bài 10: CẤU TRÚC LẶP

 
 
1. Khái niệm lặp
– Xét 2 bài toán như sau với a > 2 là số nguyên cho trước :
 
Bài toán 1 : Tính tổng
 
Bài toán 2 : Tính Tổng

 

 
 
 
 
 

Với điều kiện: 

 
Cách giải :
 
–  Bắt đầu S được gán giá trị 1/a.
–  Tiếp theo mỗi lần cộng thêm vào S là 1/(a+N) với N = 1, 2, 3, …
–  Với bài toán 1, việc cộng thêm dừng khi 1/(a+N) < 0.0001, => số lần lặp chưa biết.
–  Với bài toán 2, việc cộng thêm dừng khi N = 100, => số lần lặp đã biết trước.
 
 
Trong lập trình, có những thao tác phải lặp lại nhiều lần, khi đó ta gọi là cấu trúc lặp.
Lặp thường có 2 loại :
Lặp với số lần biết trước .
Lặp với số lần không biết trước .
NNLT nào cũng cung cấp một số câu lệnh để mô tả các cấu trúc lặp như trên.
Sau đây chúng ta sẽ tìm hiểu các câu lệnh trong ngôn ngữ Pascal.
 
 2. Lặp có số lần biết trước và câu lệnh for – do
  
Trong Pascal, có 2 lọai câu lệnh lặp có số lần biết trước :
 
– Lặp dạng tiến:
For <biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
– Lặp dạng lùi
For <biến đếm> := <giá trị cuối> downto <giá trị đầu> do <câu lệnh>;
 
Trong đó:
Biến đếm thường là biến kiểu số nguyên.
Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm. Giá trị đầu phải nhỏ hơn hay bằng giá trị cuối.
Ở dạng lặp tiến: Biến đếm tự tăng dần từ giá trị đầu đến giá trị cuối.
Ở dạng lặp lùi: Biến đếm tự giảm dần từ giá trị cuối đến giá trị đầu.
Tương ứng với mỗi giá trị của biến đếm, câu lệnh sau do thực hiện 1 lần
 
 Ví dụ 1 : Hai chương trình cài đặt thuật toán tong_1a và tong_1b .
 
 
 Ví dụ 2 : Tính tổng các số nguyên chia hết cho 3 hoặc 5 trong phạm vi từ M đến N (M<N).
 
 
 
3. Lặp với số lần chưa biết trước và câu lệnh while – do
Để giải bài toán 2 ta dùng thuật toán như sau :
Bước 1 : S :=1/a; N :=0;
Bước 2 : Nếu 1/(a+N) < 0.0001 thì chuyển đến bước 5 ;
 
Bước 3: N :=N +1;
Bước 4: S := S+ 1/(a+N) rồi quay lại bước 2;
Bước 5: Đưa kết qủa S ra màn hình rồi kết thúc
 
– Từ bước 2 đến bước 4 được lặp lại nhiều lần nếu điều kiện 1/(a+N) < 0.0001 chưa được thỏa mãn.
_ Pascal sử dụng câu lệnh lặp While
– Do để tổ chức lặp với số lần chưa viết như sau
 
While <Điều kiện> Do <Câu lệnh>;
 
Trong đó
– Điều kiện là biểu thức quan hệ hoặc logic.
– Câu lệnh là một câu lệnh trong Pascal.
 
Ý nghĩa :  Khi  điều kiện còn đúng thì còn thực hiện câu lệnh sau Do sau đó lại quay lại kiểm tra điều kiện.
 
Ví dụ 1 : Chương trình của bài toán 1.
 
 
Ví dụ 2 : Tìm ước chung lớn nhất của M và N.
 
Thuật toán :
B1: Nếu M = N thì ƯCLN := M;
Kết thúc.
B2: Nếu M > N thì M := M – N rồi quay lại B1, ngược lại N := N – M rồi quay lại B1
Sau đây là chương trình tìm UCLN;