2. Trường: ĐH Sư Phạm TP.HCM
Khoa: Công Nghệ Thông Tin
Môn: Phương Pháp Dạy Học 3
TIN HỌC 11- CHƢƠNG 3:
CẤU TRÚC RẼ NHÁNH VÀ LẶP
-BÀI 10: CẤU TRÚC LẶP.
GVHD: Cô Nguyễn Thị Ngọc Hoa
SVTH: Nguyễn Thị Thanh Xuân–K36.103.090
LỚP: Tin4
3. Nội dung bài học
1
Lặp với số lần không biết trước
2
Ví dụ mở rộng
3
Củng cố và bài tập về nhà
4. n Tong_2
Tính tổng S với a là số nguyên và a>2
S
1
a
1
(a
n khi:
1
1)
(a
1
(a
1
...
2)
(a
N )
0 . 0001
N)
Với cấu trúc fordo đã học thì áp
dụng vào bài
toán này như thế
nào?
5. Tong_2
Tính tổng S với a là số nguyên và a>2
1
S
a
1
S= S+
( a 1) ( a
1
i N=100
...
2) (a
NH
1
1
(
Na) N )
S
n
Tong_1
n
Tính tổng S với a là số nguyên và a>2
S
1
a
1
(a
n khi:
1
1)
(a
...
2)
1
(a
1
(a
0 . 0001
N)
N)
n
Tong_2
6. Tính tổng S với a là số nguyên và a>2
1
S
1
a
n khi:
-Input:
-Output:
(a
1
1)
1
(a
(a
1
...
2)
(a
N )
0 . 0001
N )
nguyên a>2
a
B1
(a
Nhập a
B2
1
0 . 0001
pa
N)
Khởi tạo S:=1/a; N:=1;
3
B3
Kiểm tra:
Nếu 1/(a+N)>=0,0001 thì thực
hiện bước 4
B4
4
S:=S+1/(a+N); N:=N+1;
c3
B5
c
S:=1/a; N:=1;
S
1/(a+N)>=
0,0001
Đ
S:= S+1/(a+N);
N:= N+1;
1/(a+N)<0.0001
i khi
t
S
=> t
c
7. 1. Lặp với số lần không biết trước
WHILE <điều kiện> DO <câu lệnh>;
Trong đó:
Điều kiênh: là biểu thức
quan hệ hoặc logic
Câu lệnh: là một câu lệnh của
Pascal.
Điều kiện
đúng
Câu lệnh
Trong khi điều kiện còn đúng thì thực hiện câu lệnh
sai
8. Cài đặt thuật toán Tong_2
nh
BEGIN
Clrscr;
n
n thân chƣơng
nh
nh
Write(‘Nhap a= ‘);
Readln(a);
nh
pa
N
ng WHILE-DO
nh
Program Tong_2;
S:=0;
N:=0;
WHILE 1/(a+N)>=0.0001 DO
BEGIN
Uses Crt;
S:=S+1/(a+N);
Var a,N:Integer;
N:=N+1;
10. Ngoài ra còn có lệnh do-while, va repeat…until
khi o
y
bao giơ
ng cho
y
t ng p
không
n khi t
y không?
Nếu biểu thức điều kiện luôn nhận
giá trị true thì câu lệnh được thực
hiện mãi, ta gọi là vòng lặp vô hạn
Tại sao bài toán này lại
lặp vô hạn?
Cách giải quyết?
S=0;
i=0;
While (i=0)
Begin
S=s+i;
End
11. -
FOR-DO
Xét bài toán Tong_1:
Lập chương trình tính tổng sau:
S
1
a
1
(a
1
1)
(a
1
...
2)
Có thể viết bài toán trên bằng
cách sử dụng while-do không?
(a
N )
12. Lập chƣơng trình tính Tong_1
1
S
a
1
1
(a
1)
(a
1
...
2)
(a
N )
nh
Input?
Ouput?
BEGIN
Clrscr;
ng chung
Write(‘Nhap gia tri cua
a= ‘);
S:=1/a; N:=1;
n:
ng S thêm
1/(a+N)
Program Tong_1;
Uses Crt;
Var a,N:Integer;
Readln(a);
S:=1/a;
N:=1;
WHILE N<101 DO
BEGIN
S:=S+1/(a+N);
N:=N+1;
13. Kết luận
• Với việc biết trước số lần lặp thì việc lựa chọn cấu
trúc nào để áp dụng vào bài toán là tùy thuộc vào
người lập trình
• For-do có thể chuyển thành while-do
• Vòng for trong pascal ta không thể thay đổi biến
điều khiển(mỗi lần tăng lên 1), nhưng trong while
thì biến điều khiển có thể điều chỉnh được
14. 2. Ví dụ
Lập chương trình nhập vào hai số nguyên dương M,N. Tìm ƯCLN
của hai số đó. Suy nghĩ thuật toán
và viết các bƣớc
Thuật toán
Các
thực hiện chƣơng bước của chương trình
B1: Nhập M,N; trình cho bài toán Nhập M,N
B1:
B2 : Chừng nào M N trên???? B2 : While M<>N DO
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.
Begin
IF M>N then M:=M-N
else N:=N-M;
end;
B3: In ƯCLN(M,N)
15. Chú ý
Chú ý:
Các câu lệnh trong vòng lặp thường lặp lại
nhiều lần, vì vậy để tăng hiệu quả của chương
trình thì những thao tác không cần lặp lại đưa
ra ngoài vòng lặp
16.
17. Kiến thức cần nhớ
Câu lệnh rẽ nhánh
IF <đk> THEN <câu lệnh>;
IF <đk> THEN <câu lệnh 1>
ESLE <câu lệnh 2>;
+ Dạng khuyết
+ Dạng đầy đủ
Câu lệnh lặp
FOR ... TO ... DO ...…
FOR ... DOWNTO ... DO
+ Lặp với số lần biết trƣớc
While <đk> Do <câu lệnh>;
+ Lặp với số lần không biết trƣớc
18. Bài tập về nhà
- Viết thuật toán,vẽ sơ đồ khối, viết chương trình hoàn thành
ví dụ trên.
- HS xem nội dung lại kiến thức bài học và bài tập về
nhà tại: http://nttxk36.wordpress.com/
-Tìm hiểu về vòng lặp repeat…until, chuyển đổi lệnh
for..do sang while..do trong các ví dụ ở bài cấu trúc lặp
tiết 2.
- Chuẩn bị cho bài thực hành số 2.