Giáo án Tin học 11 - Bài 10: Cấu trúc lặp

Giáo án Tin học 11 - Bài 10: Cấu trúc lặp

I. Mục tiêu

1. Kiến thức:

1 Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán

2 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.

3 Biết cách vận dụng đúng đắn cấu trúc lặp vào tình huống cụ thể

 2. Kĩ năng:

1 Mô tả được thuận toán của một số bài toán đơn giản có sử dụng lệnh lặp.

2 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 định trước.

3 Viết được thuật toán của một số bài toán đơn giản.

3. Thái độ:

II. Phương pháp và phương tiện dạy học

1. Phương pháp: Thuyết trình, vấn đáp, thảo luận nhóm.

2. Phương tiện: SGK , bảng, phấn, Slide bài giảng

 

doc 4 trang Người đăng quocviet Lượt xem 17919Lượt tải 1 Download
Bạn đang xem tài liệu "Giáo án Tin học 11 - Bài 10: Cấu trúc lặp", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Ngày sọan:
Tiết PPCT: Tuần:
Bài 10: CẤU TRÚC LẶP
Mục tiêu
1. Kiến thức:
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ể
 2. Kĩ năng:
Mô tả được thuận 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 định trước.
Viết được thuật toán của một số bài toán đơn giản.
3. Thái độ: 	
Phương pháp và phương tiện dạy học
1. Phương pháp: Thuyết trình, vấn đáp, thảo luận nhóm.
2. Phương tiện: SGK , bảng, phấn, Slide bài giảng
Hoạt động dạy – học
1. Ổn định lớp, kiểm tra sỉ số
2. Kiểm tra bài cũ:
	Câu 1: Nêu cú pháp và hoạt động của câu lệnh if-then dạng thiếu và đủ.
	Câu 2: Viết câu lệnh rẽ nhánh để tính 
3. Nội dung bài mới:
Nội dung chính
Hoạt động của giáo viên và học sinh
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
Bài toán 2: Tính tổng
S2 = 
với điều kiện 
Cách giải:
- Bắt đầu S được gán giá ttrị 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, 4, 
- Với bài toán 1, việc cộng thêm dừng khi 1/(a+N) < 0.0001, Þ số lần lặp chưa biết trước
- 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 lặp 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 loại câu lệnh lặp có số lần biết trước:
- 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 sao do thực hiện 1 lần.
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 bước 2;
Bước 5: Đưa kết quả S ra màn hình rồikế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 biết như sau:
WhileDo;
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.
Ví dụ 2: Tìm ước chung lớn nhất của M, N.
Thuật toán:
B1: Nếu M = N thì UCLN:= 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
Chương trình tìm UCLN (SGK)
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);
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
VD2: Tính tổng của một đoạn số nguyên mà không được dùng công thứ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 2 thuật toán này?
Sau khi so sánh kỹ 2 thuật toán trên, giáo viên đưa ra 2 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.
 Yêu cầu học sinh đưa ra cách giả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 (đã 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 giá trị của các biến.
- Lấy một ví dụ cụ thể khi tìm ước số chung của hai số 15 và 25. 
 m n
15	25
15 10
5 10
5 5
Trả lời: 5 là ước số chung lớn nhất.
- Hỏi: Điều kiện để tiếp tục lặp là gì?
 - Điều kiện: mn 
- Hỏi: Các lệnh cần lặp lại là gì?
 - Lệnh cần lặp: m:=m-n; hoặc n:=n-m;
- Yêu cầu học sinh: Nêu thuật toán để tìm ước số chung của hai số đó?
Đánh giá cuối bài:
Nhắc lại những kiến thức cần nắm.
Yêu cầu học sinh tóm tắt lại.
Nhận xét rút kinh nghiệm:

Tài liệu đính kèm:

  • docDocument.doc