Bạn nào có đề liên quan đến phần này thì cho mình xin vs ạ
Ai hiểu rõ phần này thì nói cụ thể giúp mình về lệnh while...do ak
VÒNG LẶP CÓ SỐ LẦN 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; |
[TBODY]
[/TBODY]
Ý 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 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:
Program In_So_Le;
uses crt;
var i,n:integer;
begin
clrscr;
Repeat
write('Nhap so n: ');readln(n);
until n>0;
i:=1;
while i<=n do
begin
write(i:3,', ');
i:=i+2;
end;
readln
end. |
[TBODY]
[/TBODY]
Bài tập 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:
Program Giai_Thua_while;
uses crt;
var n, gt:longint;
begin
clrscr;
Repeat
write('Nhap so n: ');readln(n);
until n>0;
gt:=1;
while n>0 do
begin
gt:=gt*n;
n:=n-1;
end;
writeln('Giai thua cua n la: ',gt);
readln
end. |
[TBODY]
[/TBODY]
c. Nhận xét: Tiết kiệm được một biến i để chạy nhưng làm thay đổi n nên khi xuất ra chỉ có thể xuất một câu chung chung “Giai thua cua n la:”
Bài tập 3
Dãy Fibonacy có hai phần tử đầu là 1, 1. Các phần tử sau bằng tổng hai phần tử đứng ngay trước nó: 1, 1, 2, 3, 5, 8, 13, 21, ...
Viết chương trình in ra dãy Fibonacy có phần tử lớn nhất nhỏ hơn n?
a.Hướng dẫn:
- Cần hai biến F_1 và F có giá trị đầu là 1, 1.
- Thực hiện lặp cho đến khi F >= n.
- Do yêu cầu chỉ in các số bé hơn n nên khi in cần thêm một lệnh kiểm tra.
b.Mã chương trình:
Program Fi_Bo_na_xi;
Var n, F_2,F_1, F: Longint;
Begin
Write('Nhap n: ');Readln(n);
F_1:=1; F_2:=1;
Write(F_2,';',F_1,';');
Repeat
F:=F_2+F_1;
if F< n then Write(F,';');
F_2:=F_1; F_1:=F;
Until F>n;
Readln;
End. |
[TBODY]
[/TBODY]
Cái này mình trích trong tài liệu bồi dưỡng của mình đó bạn, bạn tham khảo thêm ở sgk nha, mình không biết tiểu tiết lắm