Bài giảng Môn Tin học lớp 11 - Tuần 6, 7 - Bài 10 - Cấu trúc lặp

GV: Đặt câu hỏi: Hãy nhận xét 2 cách giải như trên?

Với cách giải bài toán 2 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.

Nhưng giải bài toán theo cả 2 trường hợp trên đều quá dài, gây khó khăn trong việc lập trình.

 

doc5 trang | Chia sẻ: rimokato | Lượt xem: 2708 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài giảng Môn Tin học lớp 11 - Tuần 6, 7 - Bài 10 - 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
Tuần: 06, 07
Tiết PPCT: 12, 13, 14
Lớp: 11Cb6, 7
nh
§10. CẤU TRÚC LẶP
I. Mục tiêu:
Về 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 với số lần biết trước, cấu trúc lặp kiểm tra điều kiện trước;
Mô tả được thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp.
Về kỹ năng:
Vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể;
Viết đúng các lệnh lặp với số lần biết trước, lệnh lặp kiểm tra điều kiện trước.
Về thái độ:
Giúp hs nâng cao kiến thức về sử dụng NNLT, từ đó thêm yêu thích môn học.
II. Những phương pháp dạy học được sử dụng:
Kết hợp các phương pháp giảng dạy như thuyết trình, vấn đáp, vẽ hình minh họa, kiểm tra đánh giá,…
III. Phương tiện dạy học:
1. Chuẩn bị của giáo viên: 
Máy tính, máy chiếu (nếu có);
Bài giảng thiết kế trên các Slide nếu có máy tính và máy chiếu;
Sách giáo khoa và sách giáo viên Tin học 11;
Nếu không có máy tính và máy chiếu thì giáo viên sẽ dùng phấn và bảng đen là công cụ chủ yếu để giảng dạy.
2. Chuẩn bị của học sinh:
Vở ghi lý thuyết;
Sách giáo khoa tin học 11;
IV. Tài liệu tham khảo (nếu có):
Bài tập tin học 11 - Nhà xuất bản Giáo dục - Hồ Sĩ Đàm, Nguyễn Thanh Tùng.
V. Tiến trình lên lớp:	
1. Ổn định lớp (2’)
Yêu cầu lớp trưởng báo cáo sĩ số, ổn định lớp.
2. Kiểm tra bài cũ và gợi động cơ:
a. Kiểm tra bài cũ (5’)
Giáo viên cho câu hỏi, gọi hs trả lời:
Câu hỏi 1: Em hãy nêu cú pháp câu lệnh IF trong NNLT Pascal?
HS trả lời:
NNLT Pascal sử dụng câu lệnh IF - THEN để mô tả việc rẽ nhánh tương ứng với 2 loại mệnh đề rẽ nhánh cú pháp như sau:
Dạng thiếu:
IF THEN ;
Dạng đầy đủ:
IF THEN ELSE ;
Trong đó:
Điều_kiện: là biểu thức quan hệ hoặc logic;
Câu_lệnh, câu_lệnh_1, câu_lệnh_2 là một câu lệnh của Pascal.
Trước Else không chứa dấu chấm phẩy (;).
Câu hỏi 2: Hãy nêu cách viết câu lệnh ghép?
HS trả lời:Trong NNLT Pascal, câu lệnh ghép có dạng:
Begin
End;
- Sau END phải là dấu chấm phẩy (;).
b. Gợi động cơ (2’)
Ở bài trước chúng ta đã được giới thiệu cách sử dụng cấu trúc rẽ nhánh để thực hiện hay không thực hiện một công việc nào đó khi thỏa hay không thỏa một điều kiện nào đó. Tiết học này chúng ta tiếp tục với cấu trúc lặp để giải quyết bài toán thực hiện lặp đi lặp lại nhiều lần một thao tác nào đó.
3. Nội dung bài giảng:
TG
NỘI DUNG
HĐ CỦA GV
HĐ CỦA HS
1. Bài toán đặt vấn đề:
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= 1/a + 1/(a+1) + 1/(a+2) + … + 1/(a+100)
Cách giải bài toán 1:
S1:=0;
S1:=S1+1/a;
S1:=S1+1/(a+1);
S1:=S1+1/(a+2);
S1:=S1+1/(a+3);
…
S1:=S1+1/(a+100)
Với cách giải bài toán 1 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.
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.
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.
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.
GV: Đưa ra cách giải cho bài toán.
Bài toán 2: Tính tổng
S2 = 1/a + 1/(a+1) + 1/(a+2) + … + 1/(a+N) + …
Với điều kiện 1/(a+N) < 0,0001
Cách giải bài toán 2:
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)
…
GV: Đặt câu hỏi: Hãy nhận xét 2 cách giải như trên?
Với cách giải bài toán 2 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.
Nhưng giải bài toán theo cả 2 trường hợp trên đều quá dài, gây khó khăn trong việc lập trình.
Sau đây, chúng ta sẽ tìm hiểu các câu lệnh lặp trong NNLT Pascal
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.
HS: Nêu nhận xét của mình với việc giải bài toán theo 2 cách trên.
HS: Chăm chú nghe giảng.
2. Lặp với 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 và lặp dạng lùi.
Lặp dạng tiến:
FOR := TO DO 
Lặp dạng lùi:
FOR := DOWNTO DO 
Trong đó:
- bien_dem thường là biến kiểu số nguyên.
- gia_tri_dau, gia_tri_cuoi: là các biểu thức cùng kiểu với biến đếm. gia_tri_dau phải nhỏ hơn hay bằng gia_tri_cuoi.
- Ở dạng lặp tiến: bien_dem tự tăng dần từ gia_tri_dau đến gia_tri_cuoi.
- Ở dạng lặp lùi: bien_dem tự giảm dần từ gia_tri_cuoi đến gia_tri_dau.
- Tương ứng với mỗi giá trị của bien_dem, câu lệnh sau DO thực hiện 1 lần.
GV: Đưa ra ví dụ: so sánh 2 thuật toán sau:
Thuật toán tong_1a
Thuật toán tong_1b
B1. S:=1/a; N:=0;
B2. N:=N+1
B3. Nếu N>100 thì sang B5.
B4. S:=S+1/(a+N) rồi quay lại B2.
B5. Đưa ra S rồi kết thúc.
B1. S:=1/a; N:=101;
B2. N:=N-1;
B3. Nếu N < 1 thì sang B5.
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 vài 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 nhau và khác nhau như thế nào?
- Cái gì thay đổi trong 2 thuật toán này?
GV: Lấy thêm 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.
VD: 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)
HS: Quan sát 2 thuật toán.
HS: Đưa ra nhận xét của mình, tham gia xây dựng bài.
HS: Suy nghĩ xây dựng thuật toán, tiến hành viết chương trình tính tổng trên.
3. Lặp với số lần chưa biết trước và câu lệnh WHILE - DO
Cú pháp:
WHILE DO 
Trong đó:
- dieu_kien: là biểu thức quan hệ hoặc logic;
- cau_lẹnh: là một câu lệnh trong NNLT Pascal.
Ý nghĩa:
Khi dieu_kien còn đúng thì còn thực hiện cau_lenh sau DO, sau đó quay lại kiểm tra dieu_kien.
VD: Thuật toán tìm UCLN của M và N:
B1: nếu M = N thì UCLN:= M rồi 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:
Program USCLN;
Uses crt;
Var m, n: byte;
Begin
	Clrscr;
	Write(‘Nhap so m: ‘);
	Readln(m);
	Write(‘Nhap so n: ‘);
	Readln(n);
	While not(m=n) do
	If m > n then
	m:= m - n
	Else
	n:= n - m;
	Writeln(‘UCLN của M và N là: ‘, m);
	Readln;
End.
GV: Để giải bài toán 2 ta dùng thuật toán như sau:
B1: S:= 1/a; N:= 0;
B2: Nếu 1/(a+N) < 0.0001 thì chuyển đến bước 5.
B3: N:= N+1;
B4: S:= S+1/(a+N) rồi quay lại B2;
B5: Đưa kết quả 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 có câu lệnh lặp WHILE - DO để tổ chức lặp với số lần chưa biết như trên.
HS: Trật tự, chú ý lắng nghe. Ghi bài đầy đủ.
4. Củng cố bài, dặn dò (5’)
Nhắc lại cho hs một số khái niệm mới:
2 dạng của cấu trúc lặp với số lần biết trước:
Tiến: FOR := TO DO 
Lùi: FOR := DOWNTO DO 
Trong đó:
bien_dem thường là biến kiểu số nguyên.
gia_tri_dau, gia_tri_cuoi: là các biểu thức cùng kiểu với biến đếm. gia_tri_dau phải nhỏ hơn hay bằng gia_tri_cuoi.
Tương ứng với mỗi giá trị của bien_dem, câu lệnh sau DO thực hiện 1 lần.
Cấu trúc lặp với số lần c hưa biết trước:
WHILE DO 
Trong đó:
dieu_kien: là biểu thức quan hệ hoặc logic;
cau_lẹnh: là một câu lệnh trong NNLT Pascal.
5. Bài tập về nhà (2’)
Đọc trước bài tập thực hành 2: “Bài toán bộ số Pi-ta-go” chuẩn bị cho tiết thực hành tiếp theo.
Làm bài tập 1, 2, 6, 7 và 8 trang 50, 51 SGK.
6. Rút kinh nghiệm tiết dạy

File đính kèm:

  • docTin hoc 11 cau truc lap.doc