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 |
Chia sẻ: maiphuongdc | Lượt xem: 8021 | 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