Dạng 1: Biết trước số lần lặp for – in Cú pháp: Dạng 2: Chưa biết trước số lần lặp while Cú pháp: Chú ý: Lệnh break; dùng để ngắt vòng lặp gần nhất
for in :
Hoạt động: sẽ được lặp lại một cách tự động thông qua , sẽ nhận lần lượt các giá trị trong
Tập giá
trị:
– Hàm range[[start],[step]]→Tạo tập danh sách liên tiếp bắt đầu từ start đến end – 1 thông qua step
+[start]: Giá trị bắt đầu, không bắt buộc, mặc định là 0
+: Giá trị kết thúc, bắt buộc phải có
+[step]: Bước nhảy, không bắt buộc, mặc định là 1
Ví dụ:
range[8] → Tạo ra danh sách các giá trị từ 0 tới7 :{0,1,2,3,4,5,6,7} [start=0; step=1]
range[1,8]→
Tạo ra danh sách các giá trị từ 1 tới 7 :{1,2,3,4,5,6,7} [step=1]
range[1,8,2] → Tạo ra danh sách các giá trị từ 1 tới 7 và có bước nhảy là 2 : {1,3,5,7}
range[8,1,-1] → Tạo ra danh sách các giá trị giảm dần từ 8 tới 2 và có bước nhảy là -1 : {8,7,6,5,4,3,2}
Chú ý:
Lặp tiến: Step là số dương và start + step < end
Lặp lùi: Step là số âm và start – step > end
– Kiểu
List: a=[1, 5, 1, 6, 9]
– Kiểu Set: a={3, 5, 1, 6, 9}
while :
Hoạt động: Chương trình kiểm tra trước, nếu đúng thì thực hiện rồi lặp đi lặp lại quá trình trên khi sai thì thoát khỏi vòng
lặp while.
Ví dụ:i=0
while i <=10:
if i%3==0:
print[i,'chia hết cho 3']
break
i=i+1
print['Kết thúc']
cấu trúc 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
S1=
* Bài toán 2 : Tính tổng
S2 =
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 N = 100 → số lần lặp biết trước.
– Với bài toán 2, việc cộng thêm dừng khi 1/[a+N] < 0.0001 → thỏa mãn điều kiện.
· 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 kiểm tra điều kiện trước.
cấu trúc lặp với số lần biết trước và câu lệnh for-do.
· Lặp dạng tiến:
for :=
to do ;
·Lặp dạng lùi:
for :=
downto do ;
Trong đó:
+ Biến đếm thường là biến kiểu 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.
viết chương trình dùng câu lệnh for-do.
VD1: Tính tổng S với a nhập từ bàn phím:
S=
Sử dụng lệnh lặp dạng tiến:
program vi_du_1:
uses crt;
var a, N: integer; S: real;
begin
write[‘Nhap gia tri a: ’]; readln[a];
S:=1/a;
for N:=1 to 100 do S:=S+1/[a+N];
writeln[‘Tong S la: ’, S:8:4];
readln
end.
Sử dụng lệnh lặp dạng lùi:
Tương tự như trên, chỉ thay đổi lệnh lặp:
for N:=100 downto 1 do S:=S+1/[a+N];
VD2:Nhập 2 số nguyên dương M và N [M