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 a Hãy xác định INPUT và OUTPUT của bài toán trên!. Giá trị đầu, giá trị cu
Trang 1ViÕt c©u lÖnh If Then (trong –
Pascal) thÓ hiÖn cÊu tróc rÏ nh¸nh sau:
NÕu ngµy b»ng 20 vµ th¸ng b»ng 11 th× ®a ra mµn h×nh 5
dßng th«ng b¸o “Chµo mõng ngµy nhµ gi¸o viÖt nam”
Trang 2IF (ngay=20) and (thang=11) THEN
Begin
End;
Trang 3Bµi 10
Gi¸o ¸n ®iÖn tö tin häc líp 11
(PhÇn 1 vµ phÇn 2 (lý thuyÕt))
TiÕt 11
Trang 4Bà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
Các bài toán đặt vấn đề : Tính tổng S, với a là số nguyên và a>2
cho đến khi 1 < 0 0001
+ N a
Trang 5XuÊt ph¸t
a
1
1
+
+
a
LÇn 1
2
1
+
+
a
LÇn 2
+…
LÇn N
N
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
Mçi lÇn thùc hiÖn gi¸ trÞ tæng S t¨ng thªm bao nhiªu?
Trang 6Bà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 a +1N < 0.0001
Số lần lặp biết trước.
Việc tăng giá trị cho tổng S được lặp đi lặp lại cho đến khi
0.0001 N
a
1
<
+
• Việc tăng giá trị cho
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.
các em hãy cho biết
sự khác biệt giữa hai
bài toán?
Trang 7CÊu tróc lÆp
Trang 81 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 a
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
100
1
2
1 1
1
1
+
+
+ +
+ +
+
=
a a
a a
S
Trang 9Phân tích bài toán (ý tưởng)
Nhận xét:
Ban đầu: S = 1/a
Cộng lần 1: S = S + 1/(a+1)
Cộng lần 2: S = S + 1/(a+2)
Cộng lần 3: S = S + 1/(a+3)
Cộng lần 100: S = S + 1/(a+100)
a
1
=
S
Bắt đầu từ lần cộng 1 việc tính
S được lặp đi lặp lại 100 lần theo quy luật
S sau = S trước + 1/(a+i) với i chạy từ 1 → 100
1
1
+
+
1
+
+
1
+
+
a
100
1
+
+
+
a
Từ ý tưởng trên em hãy viết thuật toán cho bài toán
Trang 10B1: Nhập a;
B2: S1/a; i0;
B4: Nếu i >100 thì đưa ra giá
trị S rồi Kết thúc;
B5 : S S + 1/(a+i) rồi quay
lại bước 3;
B3: i i +1;
Xây dựng thuật toán
Trang 11Phân tích bài toán (ý tưởng 2)
Nhận xét:
Ban đầu: S = 1/a
Cộng lần 1: S = S + 1/(a+100)
Cộng lần 2: S = S + 1/(a+99)
Cộng lần 3: S = S + 1/(a+98)
Cộng lần 100: S = S + 1/(a+1)
a
1
=
S
Bắt đầu từ lần cộng 1 việc tính
S được lặp đi lặp lại 100 lần theo quy luật
S sau = S trước + 1/(a+i) với i chạy từ 100 → 1
100
1
+
+
1
+
+
1
+
+
a
1
1
+
+ +
a
Trang 12B1: Nhập a;
B2: S1/a; i0;
B4: Nếu i >100 thì đưa ra giá
trị S rồi Kết thúc;
B5 : S S + 1/(a+i) rồi quay
lại bước 3;
B3: i i +1;
Xây dựng thuật toán Thuật toán Tong_1a
B1: Nhập a;
B2: S1/a; i101;
B4: Nếu i <1 thì đưa ra giá trị
S rồi Kết thúc;
B5 : S S + 1/(a+i) rồi quay lại bước 3;
B3: i i -1;
Thuật toán Tong_1b
Thuật toán Tong_1a , giá trị i bắt đầu tham gia vòng lặp là 1 sau mỗi lần lặp i tăng lên 1 cho đến khi i > 100 (i = 101) thì
kết thúc lặp (thực hiện 100 lần).
Nhận xét:
Thuật toán Tong_1b , giá trị i bắt đầu tham gia vòng lặp là 100 sau mỗi lần lặp i giảm đi 1 cho đến khi i < 1 (i = 0) thì kết thúc
Ta nói cách lặp trong thuật toán Tong_1a là dạng tiến và trong thuật toán Tong_1b là dạng lùi.
Trang 13FOR <biến đếm> := <giá trị đầu> TO <giá trị cuối> DO < câu lệnh>;
VD1: S:=1/a;
FOR i:=1 TO 100 DO S:=S+1/(a+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 >;
VD1: S:=1/a;
FOR i:=100 DOWNTO 1 DO S:=S+1/(a+i);
a Dạng 1 (dạng tiến)
2 Lặp với số lần lặp biết trước
VD2: IF (ngay=20) and (thang=11) THEN
FOR i:=1 TO 5 DO writeln(’ngay nha giao Viet Nam’);
VD2: IF (ngay=20) and (thang=11) THEN
FOR i:=5 DOWN TO 5 DO writeln(’ngay nha giao Viet Nam’);
Trang 14 Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm, giá trị đầu phải nhỏ hơn giá trị cuối.
VD: For i:= 100 to 200 do write(i);
Giá trị biến đếm được điều chỉnh tự động, vì vậy câu
lệnh sau DO không được thay đổi giá trị biến đếm.
Trong đó
Biến đếm là biến kiểu số nguyên hoặc kí tự.
VD2: For i:=‘a’ to ‘z’ do write(i);
Trang 15S := 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
S 6>5 ? Tổng S=2.28 In Tổng S
Với N = 5
2.28
Đ
Mô phỏng thuật toán
Trang 16Lặp dạng tiến Lặp dạng lùi
Biến:=<GT đầu >
Biến <= GT cuối
Cõu lệnh Biến tự động tăng 1 ĐVị
Biến:=<GT cuối >
Biến >= GT đầu
Cõu lệnh
Biến tự động giảm 1 ĐVị
Biến:=<GT đầu >
Biến <= GT cuối
Cõu lệnh
Biến tự động tăng 1 ĐVị
True
False
Biến:=<GT cuối >
Biến >= GT đầui
Cõu lệnh
Biến tự động giảm 1 ĐVị
True
Lưu đồ hoạt động
Trang 17Hãy nhớ!
FOR TO DO
…
FOR Downto DO
trước.