Trong lập trình, có những thao tác 
phải lặp lại nhiều lần, khi đó ta gọi là 
cấu trúc lặp.
Lặp thường có 2 loại :
 Lặp với số lần biết trước .
 Lặp với số lần không biết trước .
NNLT nào cũng cung cấp một số câu 
lệnh để mô tả các cấu trúc lặp như trên.
Sau đây chúng ta sẽ tìm hiểu các câu 
lệnh trong ngôn ngữ Pascal.
                
              
                                            
                                
            
 
            
                 7 trang
7 trang | 
Chia sẻ: maiphuongdc | Lượt xem: 8184 | Lượt tải: 5 
              
            Bạn đang xem nội dung tài liệu Giáo án Tin 11 - Cấu trúc lặp, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
§10 CẤU TRÚC LẶP 
I. MỤC ĐÍCH YÊU CẦU 
 Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán . 
 Hiểu cấu trúc lặp kiểm tra điều kiện trước, cấu trúc lặp với số lần định 
trước . 
 Biết cách vận dụng đúng đắn cấu trúc lặp vào tình huống cụ thể . 
 Mô tả thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp . 
 Viết đúng các lệnh lặp kiểm tra điều kiện trước, lệnh lặp với số lần lặp 
trước . 
 Viết được thuật toán của một số bài toán đơn giản . 
II. PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC : 
 Phương pháp : Thuyết trình, vấn đáp . 
 Phương tiện : Máy chiếu, máy tính, phòng chiếu hoặc bảng . 
III. LƯU Ý SƯ PHẠM : 
 Cần tổng kết 3 loại cấu trúc điều khiển: tuần tự, rẽ nhánh và lặp 
 Bước đầu hình thành khái niệm lập trình có cấu trúc cho học sinh. 
 Cần xây dựng các bài thực hành và tổ chức thực hiện tại phòng máy để 
học sinh đạt được những kỹ năng theo yêu cầu 
 Khi dạy lệnh lặp, với mỗi một dạng lệnh lặp, tốt nhất viết một ví dụ cụ thể, 
với số lần lặp nhỏ rồi viết mô tả việc hoạt động của vòng lặp bằng cấu trúc 
tuần tự (thể hiện sự tương đương trong công việc nhưng lệnh lặp diễn tả 
ngắn hơn nhiều) điều đó cũng giúp học sinh hiểu hơn về vòng lặp) 
IV. NỘI DUNG BÀI GIẢNG : 
 Hoạt động của Giáo viên và Học sinh 
Nội dung 
Ổn định lớp: 
 Chào thầy cô. 
 Cán bộ lớp báo cáo sỉ số 
 Chỉnh đốn trang phục 
GV : Đưa ra bài toán, yêu cầu học sinh 
tìm cách để lập trình giải các bài toán này 
. 
HS : Đưa ra cách giải của mình, học sinh 
có thể đưa ra những cách giải khác nhau . 
GV : Đưa ra cách giải cho bài toán . 
Giải theo các lệnh tuần tự 
S1:=0; 
If (1/a>0.0001) then S1:=S1+ 1/a; 
If (1/(a+1)>0.0001) then S1:=S1+ 1 
/(a+1); 
If (1/(a+2)>0.0001) then S1:=S1+ 1 
/(a+2); 
If (1/(a+3)>0.0001) then S1:=S1+ 1 
/(a+3); 
1. Khái niệm lặp 
- Xét 2 bài toán như sau với a > 2 là số 
nguyên cho trước : 
Bài toán 1 : Tính tổng 
S1=
100
1...
2
1
1
11
aaaa
Bài toán 2 : Tính Tổng 
S2= ...1...
2
1
1
11
Naaaa
Với điều kệin 0001.01 
 Na
Cách giải : 
- Bắt đầu S được gán giá trị 1/a. 
- Tiếp theo mỗi lần cộng thêm vào S 
là 1/(a+N) với N = 1, 2, 3, … 
… 
HS : Nhận xét với việc giải bài toán theo 
cách đó ? 
Với N = 100 thì lặp 100 lần như thế 
nhưng theo việc kiểm tra điều kiện thì 
không biết phải làm theo cách nào? Theo 
cả hai trường hợp thì đều quá dài. 
Để học sinh hiểu được khái niệm lặp, 
giáo viên đưa ra một số ví dụ trong thực 
tế được tính toán lặp đi lặp lại nhiều lần. 
VD1 : Bài toán gửi tiền vào ngân hàng. 
Hằng tháng phải tính lãi và cộng thêm 
vào gốc đang gửi hay nói cách khác gốc 
của tháng sau = gốc + lãi tháng trước. 
VD 2: Tính tổng của một đoạn số 
nguyên mà không được dùng công thức. 
- Với bài toán 1, việc cộng thêm 
dừng khi 1/(a+N) số 
lần lặp chưa biết. 
- Với bài toán 2, việc cộng thêm 
dừng khi N = 100, => số lần lặp đã 
biết trước. 
Trong lập trình, có những thao tác 
phải lặp lại nhiều lần, khi đó ta gọi là 
cấu trúc lặp. 
Lặp thường có 2 loại : 
 Lặp với số lần biết trước . 
 Lặp với số lần không biết trước . 
NNLT nào cũng cung cấp một số câu 
lệnh để mô tả các cấu trúc lặp như trên. 
Sau đây chúng ta sẽ tìm hiểu các câu 
lệnh trong ngôn ngữ Pascal. 
2. Lặp có số lần biết trước và câu 
lệnh for – do 
Trong Pascal, có 2 lọai câu lệnh lặp có 
số lần biết trước : 
GV : Đưa ra ví dụ: 
So sánh hai thuật toán sau: 
Thuật toán 
Tong_1a 
B1: S:=1/a; 
N:=0; 
B2: N:=N+1; 
B3: Nếu N >100 
thì chuyển sang 
bước 5; 
B4: S:= S + 
1/(a+ N) rồi 
quay lại B2; 
B5: Đưa ra S rồi 
kết thúc. 
Thuật toán 
Tong_1b 
B1: S:=1/a; 
N:=101; 
B2: N := N -1; 
B3: Nếu N < 1 
thì chuyển sang 
bước 5; 
B4: S:= S+ 
1/(a+N) rồi quay 
lại B2; 
B5: Đưa ra S rồi 
kết thúc. 
GV : Gọi một số học sinh nhận xét về 2 
thuật toán trên về một số vấn đề : 
 Thuật toán có lặp không? 
 Lặp bao nhiêu lần? 
 Hai thuật toán giống và khác nhau 
như thế nào? 
 Cái gì thay đổi trong thuật toán 
này? 
- Lặp dạng tiến: 
For := to 
 do ; 
- Lặp dạng lùi 
For := 
downto do ; 
Trong đó: 
 Biến đếm thường là biến kiểu số 
nguyên. 
 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 
hay bằng giá trị cuối. 
 Ở dạng lặp tiến: Biến đếm tự 
tăng dần từ giá trị đầu đến giá trị 
cuối. 
 Ở dạng lặp lùi: Biến đếm tự 
giảm dần từ giá trị cuối đến giá 
trị đầu. 
 Tương ứng với mỗi giá trị của 
biến đếm, câu lệnh sau do thực 
hiện 1 lần 
 Sau khi so sánh hai thuật toán trên, giáo 
viên đưa ra hai cách lặp trong ngôn ngữ 
Pascal, giải thích ý nghĩa của các thành 
phần trong câu lệnh . 
GV : Lấy ví dụ minh họa trong Pascal để 
các em thấy được sự thay đổi giá trị của 
biến đếm trong một chương trình thực sự 
của Pascal . 
 Với 2 ví dụ này, giáo viên nên gõ sẵn 
chương trình và cho học sinh quan sát 
việc chạy chương trình, giáo viên vừa 
cho chạy chương trình vừa giải thích ý 
nghĩa các lệnh trong chương trình (chú ý 
nhiều đến lệnh lặp) . 
GV : Đưa ra thuật toán hoặc có thể yêu 
cầu học sinh tự xây dựng thuật toán giải 
bài toán 2, nếu tự xây dựng được thuật 
toán thì các em sẽ hiểu hơn về lặp không 
biết trước số lần 
 Đưa thêm ví dụ : Nhắc lại bài toán 
gửi tiền vào ngân hàng: Nếu có số tiền là 
A, muốn gửi vào ngân hàng để được số 
tiền là B > A thì cần gửi trong bao lâu 
với lãi suất là k%. 
 Yêu cầu học sinh đưa ra cách giải 
Ví dụ 1 : Hai chương trình cài đặt thuật 
toán tong_1a và tong_1b . 
Ví dụ 2 : Tính tổng các số nguyên chia 
hết cho 3 hoặc 5 trong phạm vi từ M 
đến N (M<N). 
3. Lặp với số lần chưa biết trước và 
câu lệnh while – do 
Để giải bài toán 2 ta dùng thuật toán 
như sau : 
Bước 1 : S :=1/a; N :=0; 
Bước 2 : Nếu 1/(a+N) < 0.0001 thì 
chuyển đến bước 5 ; 
Bước 3: N :=N +1; 
Bước 4: S := S+ 1/(a+N) rồi quay lại 
cho bài toán này . 
GV : Phân tích phương án trả lời của học 
sinh sau đó đưa ra lời giải cho bài toán. 
GV : Đưa ra cấu trúc câu lệnh While – 
Do Trong Pascal, giải thích ý nghĩa các 
thành phần. 
HS : Lắng nghe và ghi chép. 
GV: Nên gõ sãn những ví dụ này để học 
sinh có thể quan sát chương trình, giáo 
viên chạy thử chương trình trong Pascal. 
Riêng với VD 2, trước khi đưa ra thuật 
toán, GV nên cho học sinh xây dựng 
thuật toán tìm ước chung lớn nhất (đã 
bước 2; 
Bước 5: Đưa kết qủa S ra màn hình rồi 
kết thúc 
- Từ bước 2 đến bước 4 được lặp lại 
nhiều lần nếu điều kiện 1/(a+N) < 
0.0001 chưa được thỏa mãn. 
_ Pascal sử dụng câu lệnh lặp While 
- Do để tổ chức lặp với số lần chưa viết 
như sau 
While Do ; 
Trong đó 
- Điều kiện là biểu thức quan hệ hoặc 
logic. 
- Câu lệnh là một câu lệnh trong 
Pascal. 
Ý nghĩa : Khi điều kiện còn đúng thì 
còn thực hiện câu lệnh sau Do sau đó 
lại quay lại kiểm tra điều kiện. 
Ví dụ 1 : Chương trình của bài toán 1. 
học ở lớp 10) 
Chạy chương trình với nhiều cặp M, N 
khác nhau. 
Tốt nhất chạy từng bước, cho học sinh 
thấy sự thay đổi của các biến. 
Ví dụ 2 : Tìm ước chung lớn nhất của 
M và N. 
Thuật toán : 
B1: Nếu M = N thì ƯCLN := M; 
Kết thúc. 
B2: Nếu M > N thì M := M – N rồi 
quay lại B1, ngược lại N := N – M rồi 
quay lại B1 
Sau đây là chương trình tìm UCLN; 
V. CỦNG CỐ , DẶN DÒ: 
 Nhắc lại một số khái niệm mới 
 Nhắc lại cấu trúc câu lệnh. 
 Cho bài tập về nhà 
            Các file đính kèm theo tài liệu này:
 10_cau_truc_lap_8687.pdf 10_cau_truc_lap_8687.pdf