Bài tập turbo pascal


CHƯƠNG IV CẤU TRÚC LẶP KHÔNG XÁC ĐỊNH



tải về 0.6 Mb.
trang14/42
Chuyển đổi dữ liệu27.02.2022
Kích0.6 Mb.
#51050
1   ...   10   11   12   13   14   15   16   17   ...   42
100 bài tập pascal
13234
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.



tải về 0.6 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   10   11   12   13   14   15   16   17   ...   42




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương