1: Các khái niệm
- lặp:là thực hiện 1 công việc nhiều lần
Vậy trong đây cần xác đònh rõ hai yếu tố
+công việc gì?
+nhiều lần là mấy lần, khi nào thì dừng.
-
lặp với số lần chưa biết là thực hiện đến 1
giai đoạn nào đó thì dừng chứ chưa biết là
bao nhiêu lần. Ngược lại nếu đã biết được số
lần làm là lặp với số lân biết trước.
-cấu trúc lặp: trong Pascal có hai cách thể
hiện cho việc lặp lại đó là
+for-do: lặp với số lần biết trước.
+while-do và repeat-until: lặp với số lần
chưa biết.
-chặn dừng: đối với
+for-do: là số lần lặp lại
+while-do và repeat-until: là điều kiện dừng
lại
Vd:
+ đi 100 bước thì dừngchặn dừng là 100.
+ đi đến kia thì dừng chặn dừøng là chỗ kia
2:cấu trúc for-do
(lặp với số lần biết trước)
-công thức:
For <biến đếm>:=<giá trò đầu> to <giá trò cuối> do <câu lệnh>
For <biến đếm>:=<giá trò cuối> downto <giá trò đầu>do<cl>
-cần xác đònh:
+công việc lặp lại.
+giá trò đầu, giá trò cuối.
+kiểu biến đếm
VD1: xét bài toán: tính tổng của các số chẵn trong khoảng từ
1 đến n với n nhập từ bàn phÍm (1<=n<=1000);
VD1: xét bài toán: tính tổng của các số chẵn trong khỏang từ 1
đến n với n nhập từ bàn phím (1<=n<=1000);
+công việc: tính tổng của các số chẵn
phải làm 2 công việc:
+kiểm tra xem nó có phải số chẵn không
+nếu là số chẵn thì tính tổng của chúng
+giá trò đầu: 1; giá trò cuối: n (1<=n<=1000)
số lần lặp không quá 1000
kiểu biến đếm là số nguyên(integer,longint…)
Lưu ý:biến đếm thường là hai kiểu sau: số nguyên và
kiểu ký tự (char). Theo kinh nghiệm của mình kiểu
của biến đếm sẽ cùng kiểu với giá trò đầu (cuối).
Var I,n:integer;tong:longint;
Begin
Tong:=0;
Writeln(‘nhap n’);
Readln(n);
For i:=1 to n do
if I mod 2=0 then {kieåm tra soá chaün}
tong:=tong+I; {tính toång}
Writeln(‘tong can tim ’,tong);
Readln
End.
Lưu ý:
+số a chia hết cho b được Pascal thể hiện là
a mod b=0chia hết cho 2 là mod2=0
+tinh tổng lần lượt
.i=1sai, không làm
.i=2đúng, tong:=0+2;
.i=3sai, không làm
.i=4đúng, tong:=2+4;
………………………………………………….
vậy tổng lần thứ k thì= tổng lần thứ k-1 cộng thêm với I
+tại sao phải gán tong:=0 ngay từ đầu chương trình?
Vì nếu xét tổng đầu tiên, ta có tổng đầu tiên=tổng nào cộng cho nó
chính là tong được gán =0
tổng đầu là 0, tích đầu là 1
-for-downto gần giống for-to-do nhưng nó đi
ngược lại từ lớn đến nhỏ, nghóa là biến đếm
sẽ giảm dần.
3:lưu ý chung
-không thay đổi giá trò biến đếm khi vòng lặp
đang chạy.
-”to”; từ nhỏ đến lớn.
-“downto”:từ lớn đến nhỏ.
-hoạt động của vòng lặp là hoạt động tuần tự,
có thể làm ngoài nháp để thử kết quả (xem
lại VD1)
4:cấu trúc while-do hay repeat_until
a: while-do
-công thức:
While <điều kiện> do
-ý nghóa: trong khi điều kiện đúng thì làm.
làm gì???
*điều quan trọng nhất của dạng lặp không biết
trước số lần lặp này là tính dừngnghóa là
điều kiện phải bò vi phạm.
Xét lại VD1 nhưng viết bằng While-do
4:cấu trúc while-do hay repeat-until
a: while-do
-lưu đồ của While-do
Điều kiện
Công việc
End.
true
False
Nếu Đk đúng thì cứ tiếp tục, sai
thì thoát khỏi vòng lặp