Bài toán Dữ liệu ra Output : Dữ liệu vào Input : Hãy xác định INPUT, OUTPUT và nêu thuật toán giải bài toán trên?. thì dừng lại... WHILE DO ;Điều kiện Đúng Câu lệnh Điều kiện: Là bi
Trang 1Gi¸o ¸n ®iÖn tö tin häc líp 11
Bµi 10
(tiÕt 2)
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
Bài toá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 3Bà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.
• 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
tìm sự khác biệt
Số lần lặp ch a biết tr ớc.
100 lần
Trang 4CÊu tróc lÆp
Trang 51 Bài toán
Dữ liệu ra (Output) :
Dữ liệu vào (Input) :
Hãy xác định INPUT, OUTPUT
và nêu thuật toán giải bài toán trên?
1
2
1 1
1
1
N a
a a
a S
Cho đến khi 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.
II Lặp với số lần lặp không biết tr ớc
Nh p a ập a
T ng S ổng S
Trang 6B íc 2 :
S:=1/a; N:=1;
{Khëi t¹o S vµ N}
B íc 3 :
NÕu 1/(a+N) < 0.0001
=> B íc 5
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
NhËp a
S
§
1/(a+N) >= 0.0001
B íc 5: In S => KÕt thóc.
1/(a+N)<0.0001
Trang 7WHILE <Đ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
Pascal.
Sai
3 Lặp với số lần lặp ch a biết tr ớc và câu lệnh
while do: – do:
Trong đó:
Chừng nào điều kiện còn đúng thì câu lệnh còn đ ợc thực hiện.
(Ghi tập)
Trang 8WHILE 1/(a+N) >= 0.0001 DO
Begin
S:=S+1/(a+N);
N:=N+1;
END;
Ví dụ 1: (sgk)
Bài toán :
Nhận xét:
hiện:
+ Tăng giá trị của tổng S thêm 1/(a+N).
+ Tăng N thêm 1 đơn vị
1
2
1 1
1
1
N a
a a
a S
1
0.0001
aN
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
Trang 9Ch ¬ng tr×nh
Program Tinhtong_2;
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);
Readln;
END.
(Ghi tập)
Trang 10Lập ch ơng trình nhập vào hai số nguyên d ơng M,N Tìm ƯCLN của hai số đó.
B1: Nhập M,N;
B2 : Chừng nào MN
nếu M>N thì M:=M-N,
ng ợc lại thì N:=N-M;
B3: Đến khi M=N thì
=> Đ a ra ƯCLN(M,N)=M;
=> Kết thúc.
B1: Nhập M,N B2 : While M<>N DO
Begin
IF M>N then M:=M - N
else N:=N - M; end;
B3: In ƯCLN(M,N)
Thuật toán các b ớc viết ch ơng trình
Ví dụ 2: (sgk)
Trang 11Ch ¬ng tr×nh
Program UCLN;
Uses Crt;
Var M,N:Integer;
BEGIN
Clrscr;
Write(‘M, N= ‘);Readln(M,N);
WHILE M <> N DO
IF M>N then M:=M - N
else N:=N - M;
Writeln(‘UCLN = ‘,M);
Readln;
END.
(Ghi tập)
* Chó ý: (SGK)
Trang 12Tham kh¶o:
D¹ng kh¸c cña c©u lÖnh lÆp víi sè lÇn lÆp kh«ng biÕt tr íc
REPEAT <C©u lÖnh> UNTIL <§iÒu kiÖn >;
§iÒu kiÖn
Sai
C©u lÖnh
§óng
Trang 13Ch ¬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;
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);
Readln;
END.
Trang 14Toựm taột!
Câu lệnh rẽ nhánh.
Câu lệnh lặp
IF <đk> THEN <câu lệnh>;
FOR TO DO …
IF <đk> THEN <câu lệnh 1>
ESLE <câu lệnh 2>;
FOR Downto DO
+ Dạng khuyết.
+ Dạng đầy đủ.
+ Lặp với số lần lặp biết tr ớc + Lặp với số lần lặp không
biết tr ớc.