Bµi
10
Gi¸o ¸n ®iÖn tö tin häc líp 11
(2 tiÕt)
Bµi to¸n 1:
Bµi to¸n 2:
100
1
2
1
1
11
+
++
+
+
+
+=
aaaa
S
1
2
1
1
11
+
a
Lần 2
+
Lần N
Na +
+
1
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
Bài toán 1: Bài toán 2:
100
1
2
1
1
11
+
++
+
+
+
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Êu tróc lÆp
1. 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
100
. . . . . . . . . . . . . . . . . . . .
§
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
FOR <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)
toán đặt vấn đề.
Lập ch ơng trình tính tổng sau:
N
1
4
1
3
1
2
1
1S +++++=
S := 1 ; i := 2;
i >N
KT
S := S +1/ i ;
i := i +1;
2.081.83
1.51
432
L îti
S
2.28
5
NhËp N
S := 1 ; i := 2;
2>5 ?
S
S
1
11
+
++
+
+
+
+=
aaaa
S
?
Hãy xác định giá trị khởi đầu của S, quy luật thay đổi giá
trị của S và số lần lặp.
Viết ch ơng trình để giải bài toán trên.
-
S:=1/a;
- S:= S + 1/(a+i);
- i chạy từ 1 đến 100 => Số lần lặp là 100 lần.
1. Bài toán
Dữ liệu ra (Output) : Tổng S
Dữ liệu vào (Input) : Nhập a
Hãy xác định
INPUT, OUTPUT
và nêu thuật toán
giải bài toán trên?
1
B ớc 4:
S:=S+1/(a+N);
N:=N+1;
=> quay lại b ớc 3
thuật toán
B ớc 1: Nhập a.
S:=1/a ; N:=1
Đ a ra S
=> Kết thúc
S:= S+1/(a+N);
N:= N+1;
Vòng lặp chỉ dừng khi 1/(a+N)<0.0001
Nhập a
S
Đ
1/(a+N) >= 0.0001
B ớc 5: In S => Kết thúc.
WHILE
<§iÒu kiÖn>
DO
<C©u lÖnh>
;
§iÒu kiÖn
§óng
C©u lÖnh
§iÒu kiÖn: Lµ biÓu thøc
quan hÖ hoÆc l«gic.
C©u lÖnh: Lµ mét c©u lÖnh cña
+
+
+
+=
Naaaa
S
1
0.0001
a N
<
+
Tính giá trị tổng S, với a là số nguyên và a>2
thì dừng lại.
Cho đến khi
Ch ¬ng tr×nh
Program Bai_toan;
Uses Crt;
Var a,N:Integer;
S:Real;
BEGIN
Clrscr;
Write(‘Nhap gia tri cua a= ‘);Readln(a);
S:=1/a;N:=1;
WHILE 1/(a+N)>=0.0001 DO
BEGIN
S:=S+1/(a+N);
N:=N+1;
END;
Writeln(‘Gia tri cua tong S = ‘,S:8:3);
<§iÒu kiÖn
>;
§iÒu kiÖn
Sai
C©u lÖnh
§óng
Bµi to¸n ®Æt vÊn ®Ò:
Program Bai_toan;
Uses Crt;
Var a,N:Integer;
S:Real;
BEGIN
Clrscr;
Write(‘Nhap gia tri cua a= ‘);Readln(a);
S:=1/a;N:=1;
REPEAT {Bat dau lap}
S:=S+1/(a+N);
N:=N+1
UNTIL 1/(a+N)< 0.0001; {Ket thuc lap}
Writeln(‘Gia tri cua tong S = ‘,S:8:3);
Readln;
END.
Hãy nhớ!
Câu lệnh rẽ nhánh.
Câu lệnh lặp
IF <đk> THEN <câu lệnh>;