Ví dụ 3: Nếu cộng lần lượt n số tự nhiên đầu tiên (n=1, 2, 3, ….), cần cộng bao nhiêu số tự nhiên đầu
tiên để ta nhận được tổng T nhỏ nhất lớn hơn 1000?
*) Phân tích bài tốn:
Điều kiện T 1000
Đúng
n
Tổng T
1
2
3
…
T=1
T=1+2
T=1+2+3
…
?
T=1+2+3+…+?
Đúng
Sai
Sao cho T nhỏ nhất lớn hơn 1000
Kết thúc việc tính tổng.
Đúng
Đúng
Ví dụ 3: Nếu cộng lần lượt n số tự nhiên đầu tiên (n=1, 2, 3, ….), cần cộng bao nhiêu số tự nhiên đầu
tiên để ta nhận được tổng T nhỏ nhất lớn hơn 1000?
*) Mơ tả thuật tốn:
Bước 1: T
0, n
0.
Bước 2: Nếu T 1000 thì chuyển tới bước 3; Ngược lại (T>1000) chuyển tới bước 4.
Bước 3: n
n+1; T
T+n; Và quay lại bước 2.
Bước 4: In kết quả: số n nhỏ nhất để tổng lớn hơn 1000 và tổng đầu tiên lớn hơn 1000.
Kết thúc thuật toán
Ví dụ 3: Nếu cộng lần lượt n số tự nhiên đầu tiên (n=1, 2, 3, ….), cần cộng bao nhiêu số tự nhiên đầu
tiên để ta nhận được tổng T nhỏ nhất lớn hơn 1000?
*) Sơ đồ khối:
T 1000?
Sai
Đúng
n
T
n+1
T+n
Kết thúc lặp
Ví dụ 3: Nếu cộng lần lượt n số tự nhiên đầu tiên (n=1, 2, 3, ….), cần cộng bao nhiêu số tự nhiên đầu
tiên để ta nhận được tổng T nhỏ nhất lớn hơn 1000?
*) Chương trình:
program tinh_tong;
uses crt;
var T, n: integer;
begin
clrscr;
T:=0; n:=0;
while T<=1000 do
begin
n:=n+1;
T:=T+n
end;
writeln(‘So n nho nhat de tong > 1000 la ‘ ,n);
writeln(‘Tong dau tien > 1000 la ‘ ,T);
readln;
end.
1 1
1
Ví dụ 4: Tính tổng sau T 1 ...
, sử dụng lệnh lặp với số lần lặp cho trước for…do.
2 3
100
*) Phân tích bài tốn:
Biến đếm i
Tổng T
1
T=1
2
T 1
3
…
100
1
2
1 1
T 1
2 3
…
1 1
1
T 1 ...
2 3
100
1 1
1
Ví dụ 4: Tính tổng sau T 1 ...
, sử dụng lệnh lặp với số lần lặp cho trước for…do.
2 3
100
*) Mơ tả thuật tốn:
Bước 1: T
0.
Bước 2: Nếu i 100 thì chuyển tới bước 3; Ngược lại (i>100) chuyển tới bước 4.
Bước 3: i
i+1; T
T 1/ i ; Và quay lại bước 2.
Bước 4: In kết quả.
Kết thúc thuật toán
1 1
1
Ví dụ 4: Tính tổng sau T 1 ...
, sử dụng lệnh lặp với số lần lặp cho trước for…do.
2 3
100
*) Sơ đồ khối:
T
0
Sai
i 100
Đúng
i
T
i+1
T 1/ i
Kết thúc
1 1
1
Ví dụ 4: Tính tổng sau T 1 ...
, sử dụng lệnh lặp với số lần lặp cho trước for…do.
2 3
100
*) Chương trình:
program tinhtong;
uses crt;
var i, T: integer;
begin
clrscr;
T:=0;
for i:=1 to 100 do T:= T+1/i;
writeln(‘Tong la ‘ ,T);
readln;
end.
1 1
1
Ví dụ 4: Tính tổng sau T 1 ...
, nếu sử dụng lệnh lặp while…do?
2 3
100
Nếu sử dụng câu lệnh while… do ta thay đoạn lặp trong chương trình trên:
program tinhtong;
uses crt;
var i, T: integer;
begin
clrscr;
T:=0; i:=1;
T:=0;
while
i<=100
T:=T+1/i; i:=i+1 end;
for
i:=1
to 100do
dobegin
T:= T+1/i;
writeln(‘Tong la
la ‘‘ ,T);
,T);
writeln(‘Tong
readln;
end.
Và thu được là cùng một kết quả.
=> Chúng ta có thể sử dụng câu lệnh while… do thay cho câu lệnh for… do.