Cấu trúc lặpI.. Lặp với số lần lặp biết trước II.. Lặp với số lần lặp không biết trước... Bài toán đặt vấn đề - Dữ liệu ra Output : Tổng S Lập chương trình tính tổng sau: - Dữ liệu vào
Trang 1TiÕt 12 - Bµi 10
cÊu tróc lÆp
Trang 2Bµi to¸n 1:
Bµi to¸n 2:
100
1
2
1 1
1
1
+
+
+ +
+ +
+
=
a a
a a
S
1
2
1 1
1
1
+ +
+
+ +
+ +
+
=
N a
a a
a S
a
Trang 3XuÊt ph¸t
a
1
1
+
+
a
LÇn 1
2
1
+
+
a
LÇn 2
+…
LÇn N
N
Mçi lÇn thùc hiÖn gi¸ trÞ tæng S t¨ng thªm bao nhiªu? 1
Sau mçi lÇn thùc hiÖn gi¸ trÞ tæng S t¨ng thªm ( víi i =1; 2; 3 ; ;N)
a + i
Cïng t×m thuËt to¸n
Trang 4Bài toán 1: Bài toán 2:
100
1
2
1 1
1
1
+
+
+ +
+ +
+
=
a a
a a
+
+
+ +
+ +
+
=
N a
a a
a S
Cho đến khi 1 < 0.0001
+ N a
Số lần lặp biết trước.
tổng S được lặp đi lặp lại cho đến khi
0.0001 N
a
1
<
+
tổng S được lặp đi lặp
lại 100 lần
tìm sự khác biệt
Số lần lặp chưa biết trước.
Trang 5Cấu trúc lặp
I Lặp với số lần lặp biết trước
II Lặp với số lần lặp không biết trước
Trang 61 Bài toán đặt vấn đề
- Dữ liệu ra (Output) : Tổng S
Lập chương trình tính tổng sau:
- Dữ liệu vào (Input) : Nhập N
Hãy xác định INPUT và OUTPUT của bài
toán trên!
I Lặp với số lần lặp biết trước
N
1
4
1 3
1 2
1 1
Trang 7Phân tích bài toán với N = 100
Nhận xét:
S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4 = S3 + 1/4
S100 = S99 + 1/100
1
=
S
Bắt đầu từ S2 việc tính S đư
ợc lặp đi lặp lại 99 lần theo quy luật
Ssau = Strước+ 1/i với i chạy từ 2 → 100
2
1
+
3
1
+
4
1
+ + + 1
100
Trang 8
S
NhËp N
S:= 1 ; i:= 2
i > N ?
S:= S + 1/i
§a ra S råi kÕt thóc
B1: NhËp N;
B2: S:=1; i:=2;
B3: NÕu i > N th× ®a ra gi¸
trÞ S => KÕt thóc;
B4 : S:= S + 1/i;
B5: i := i +1 quay l¹i B3.
X©y dùng thuËt to¸n
i:= i+1
Trang 9FOR <biến đếm> := <giá trị đầu> TO <giá trị cuối> DO < câu lệnh>;
Ví dụ: S:=1;
FOR i:=2 TO 100 DO S:=S+1/i;
b Dạng 2 (dạng lùi)
FOR <biến đếm> := <giá trị cuối> DOWNTO <giá trị đầu> DO <câu lệnh >;
Ví dụ: S:=1;
FOR i:=100 DOWNTO 2 DO S:=S+1/i;
a Dạng 1 (dạng tiến)
2 Lặp với số lần lặp biết trước
Trang 10Sự thực hiện của cõu lệnh
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><giá trị đầu> DO <câu lệnh >; DOWNTO
Begin
Biến điều khiển:= giỏ trị
đầu
DO <Cụng việc>
Biến điều khiển:= biến điều
khiển + 1
Biến điều khiển > giỏ trị
cuối
End
Begin
Biến điều khiển:= giỏ trị Cuối
DO <Cụng việc>
Biến điều khiển := biến
điều khiển - 1
Biến điều khiển
< giỏ trị đầu
End
Trang 11S := 1 ; i := 2;
S := S +1/ i ;
i := i +1;
2.08 1.83
1.5 1
4 3
2 Lượt
i
5
Nhập N
S := 1 ; i := 2;
2>5 ?
S
S := 1 +1/2 ;
i := 2 +1;
3>5 ?
S := 1.5+1/3 ;
i := 3 +1;
4>5 ?
S := 1.83+1/4 ;
i := 4 +1;
5>5 ?
S := 2.08+1/5;
i := 5 +1;
6
SSS
6>5 ? Tổng S=2.28 In Tổng S
Với N = 5
2.28
Đ
Mô phỏng thuật toán
S= 1 + ẵ +1/3 + ẳ + …+ 1/N
Trang 12S := 1/5 ; i := 4;
S := S +1/ i ;
i := i -1;
1,28 0,78
0,45 0,2
2 3
4 Lượt
i
1
Nhập N
S := 1/5 ; i := 4;
4<1 ?
S
S := 0,2 ;
i := 5-1;
3<1 ?
S := 0,2+1/4 ;
i := 4 - 1;
2<1 ?
S := 0,45+1/3 ;
i := 3-1;
1<1 ?
S := 0,78+1/2;
i := 2-1;
0
SSS
0<1 ? Tổng S=2.28 In Tổng S
Với N = 5
2.28
Đ
Mô phỏng thuật toán
S= 1 + ẵ +1/3 + ẳ +…+ 1/N
Trang 13Bài 1:Viết chương trình hiển thị các số từ 1 đến 10
ra màn hình
Var i: byte;
Begin For i:= 1 to 10 do Write(i);
End.
Trang 14Bài 2: Viết chương trình tính Tổng :
S= 1 + 2+ 3 +….+ 100
Var s,i: integer;
BEGIN S:=1;
For i:= 1 to 100 do S:= S+1; Write(s);
Readln;
END.