CHƯƠNG IV
CẤU TRÚC LẶP KHÔNG XÁC ĐỊNH
A. LÝ THUYẾT
-
Dạng REPEAT
|
Dạng WHILE
|
Repeat
S;
Until B;
|
While B Do S;
|
Ý nghĩa:
Dạng REPEAT: Lặp lại công việc S cho đến khi biểu thức B=TRUE thì dừng. Trước Repeat có thể B chưa được xác định nhưng khi thực hiện S thì B xác định.
Dạng WHILE: Trong khi biểu thức B=TRUE thì tiếp tục thực hiện công việc S. Trước While cần có các lệnh để B được xác định.
Yêu cầu quan trọng: Trong S phải có một lệnh làm thay đổi dữ liệu liên quan đến điều kiện B.
B. BÀI TẬP
Bài tập 4.1:
Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng số nguyên dương n ( Với n được nhập). Yêu cầu nhập lại nếu n <=0
a. Hướng dẫn:
- Sử dụng kiến thức số lẻ đầu tiên bằng 1. Số lẻ sau bằng số trước cộng với 2.
- Cho biến i có giá trị ban đầu bằng 1.
- Dùng vòng lặp while do với điều kiện i < n và công việc bên trong là in i và tăng i lên 2.
b. Mã chương trình:
-
var f,g: text;
i,n:integer;
begin
Assign(f,’bai4_1.inp’); reset(f);
Assign(g,’bai4_1.out’); rewrite(g);
Repeat
readln(f,n);
until n>0;
i:=1;
while i<=n do
begin
write(g,i:3,', ');
i:=i+2;
end;
close(f); close(g);
end.
|
Nhận xét:
- Mọi vòng lặp For ... to ... do đều có thể thay thế bằng vòng lặp while ... do.
- Đoạn mã:
Repeat
write('Nhap so n: ');readln(n);
until n>0;
Dùng để kiểm tra, khống chế điều kiện của dữ liệu vào.
- Trong vòng lặp while nhất thiết phải có một câu lệnh làm thay đổi điều kiện lặp. Ở đây là i:=i+2. Nếu không có sẽ dẫn đến trường hợp lặp vô hạn. Chương trình chạy mãi mà không có lối ra (Không thoát ra khỏi vòng lặp được).
Bài tập 4.2:
Viết chương trình tính n! với n! được định nghĩa như sau:
- n! = 1 với n = 0
- n! = 1.2.3...n (Tích của n số từ 1 đến n).
Yêu cầu: Sử dụng vòng lặp với số lần chưa biết trước:
a. Hướng dẫn:
- Có thể viết lại: n! = n.(n-1)... 3.2.1.
- Lặp gt = gt*n; n = n-1 với điều kiện n>0.
b. Mã chương trình:
-
Var ,fg:text;
n, gt:longint;
begin
Repeat
Assign(f,’bai4_2.inp’)reset(f);
Assign(g,’bai4_2.out’)rewrite(g);
readln(f,n);
until n>0;
gt:=1;
while n>0 do
begin
gt:=gt*n;
n:=n-1;
end;
writeln(g,'Giai thua cua n la: ',gt);
readln
end.
|
Chia sẻ với bạn bè của bạn: |