SKKN Một số kinh nghiệm hướng dẫn học sinh học tốt bài 10 cấu trúc lặp – sách giáo khoa Tin học 11

SKKN Một số kinh nghiệm hướng dẫn học sinh học tốt bài 10 cấu trúc lặp – sách giáo khoa Tin học 11

Hiện nay đổi mới phương pháp dạy học là một trong những nhiệm vụ quan trọng của cải cách giáo dục. Điều đó được thể hiện trong nghị quyết Hội nghị Trung ương 8 khóa XI về đổi mới căn bản toàn diện giáo dục và đào tạo “Tiếp tục đổi mới phương pháp dạy và học theo hướng hiện đại; phát huy tính tích cực, chủ động, sáng tạo và vận dụng kiến thức, kỹ năng của người học; khắc phục lối truyền thụ áp đặt một chiều, ghi nhớ máy móc. Tập trung dạy cách học, cách nghĩ, khuyến khích tự học, tạo cơ sở để người học tự cập nhật và đổi mới tri thức, kỹ năng, phát triển năng lực. Chuyển từ học chủ yếu trên lớp sang tổ chức hình thức học tập đa dạng, chú ý các hoạt động ngoại khóa, nghiên cứu khoa học. Đẩy mạnh ứng dụng công nghệ thông tin và truyền thông trong dạy và học”.

Chương trình Tin học 11 nhằm trang bị cho học sinh một số khái niệm cơ bản về lập trình và ngôn ngữ lập trình bậc cao. Đây là môn học khá mới mẽ và khá trừu tượng đối với học sinh, do đó phần đông các em không nắm bắt được kiến thức để vận dụng vào việc giải bài tập. Hơn nữa học sinh hiện nay phải học quá nhiều môn đặc biệt là các môn thi tốt nghiệp, môn thi đại học, môn Tin học vẫn được học sinh ngầm hiểu là “môn phụ” do đó thời gian dành cho việc tìm hiểu đào sâu nghiên cứu đối với môn học là rất hạn chế. Từ đó đòi hỏi mỗi giáo viên phải không ngừng tự tìm tòi, tự đổi mới phương pháp giảng dạy tích cực để tăng hứng thú học tập cho học sinh, làm cho học sinh yêu thích môn học hơn, học sinh sẽ chủ động tích cực trong việc tự học, tự chiếm lĩnh tri thức.

 

docx 20 trang thuychi01 8073
Bạn đang xem tài liệu "SKKN Một số kinh nghiệm hướng dẫn học sinh học tốt bài 10 cấu trúc lặp – sách giáo khoa Tin học 11", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
MỤC LỤC
Trang
1. Mở đầu	1
- Lý do chọn đề tài	1
- Mục đích nghiên cứu	2
- Đối tượng nghiên cứu	2
- Phương pháp nghiên cứu	2
2. Nội dung sáng kiến kinh nghiệm	3
2.1. Cơ sở lý luận của sáng kiến kinh nghiệm	3
2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm	3
2.3. Các giải pháp đã sử dụng để giải quyết vấn đề	4
2.4. Hiệu quả của sáng kiến kinh nghiệm	16
3. Kết luận, kiến nghị	18
- Kết luận	18
- Kiến nghị	18
Tài liệu tham khảo	19
1. MỞ ĐẦU
- Lý do chọn đề tài
Hiện nay đổi mới phương pháp dạy học là một trong những nhiệm vụ quan trọng của cải cách giáo dục. Điều đó được thể hiện trong nghị quyết Hội nghị Trung ương 8 khóa XI về đổi mới căn bản toàn diện giáo dục và đào tạo “Tiếp tục đổi mới phương pháp dạy và học theo hướng hiện đại; phát huy tính tích cực, chủ động, sáng tạo và vận dụng kiến thức, kỹ năng của người học; khắc phục lối truyền thụ áp đặt một chiều, ghi nhớ máy móc. Tập trung dạy cách học, cách nghĩ, khuyến khích tự học, tạo cơ sở để người học tự cập nhật và đổi mới tri thức, kỹ năng, phát triển năng lực. Chuyển từ học chủ yếu trên lớp sang tổ chức hình thức học tập đa dạng, chú ý các hoạt động ngoại khóa, nghiên cứu khoa học. Đẩy mạnh ứng dụng công nghệ thông tin và truyền thông trong dạy và học”.
Chương trình Tin học 11 nhằm trang bị cho học sinh một số khái niệm cơ bản về lập trình và ngôn ngữ lập trình bậc cao. Đây là môn học khá mới mẽ và khá trừu tượng đối với học sinh, do đó phần đông các em không nắm bắt được kiến thức để vận dụng vào việc giải bài tập. Hơn nữa học sinh hiện nay phải học quá nhiều môn đặc biệt là các môn thi tốt nghiệp, môn thi đại học, môn Tin học vẫn được học sinh ngầm hiểu là “môn phụ” do đó thời gian dành cho việc tìm hiểu đào sâu nghiên cứu đối với môn học là rất hạn chế. Từ đó đòi hỏi mỗi giáo viên phải không ngừng tự tìm tòi, tự đổi mới phương pháp giảng dạy tích cực để tăng hứng thú học tập cho học sinh, làm cho học sinh yêu thích môn học hơn, học sinh sẽ chủ động tích cực trong việc tự học, tự chiếm lĩnh tri thức. 
Trong chương trình Tin học 11, tôi nhận thấy học sinh gặp rất nhiều khó khăn khi học tới cấu trúc lặp. Đây là một cấu trúc điều khiển rất quan trọng trong lập trình, nếu không nắm được các câu lệnh của cấu trúc này học sinh sẽ không thể học được đơn vị kiến thức tiếp theo.
 Học sinh đã quá quen với việc giải quyết các bài toán trong các môn khoa học tự nhiên một cách tuần tự, hoặc có chăng là biện luận (rẽ nhánh) nên khi gặp cấu trúc lặp nếu lấy ngay các ví dụ và thuật toán trong sách giáo khoa để giảng dạy thì đa số học sinh rất khó hình dung, thậm chí rất mơ hồ không biết lặp là gì, như thế nào là lặp biết trước số lần lặp, lặp chưa biết số lần lặp, không biết máy tính thực hiện việc lặp đó như thế nào,  từ đó không biết vận dụng các câu lệnh lặp vào cài đặt thuật toán. 
 Qua thực tế nhiều năm giảng dạy, tôi nhận thấy việc vận dụng các ví dụ thực tiễn gần gũi với đời sống hằng ngày, các ví dụ phù hợp với trình độ của đa số học sinh kết hợp với bảng mô phỏng thực hiện câu lệnh sẽ giúp học sinh dễ hiểu, dễ khắc sâu kiến thức; học sinh có thể vận dụng kiến thức để làm tốt các bài tập liên quan, các em có thể đào sâu và mở rộng kiến thức đã học một cách khoa học; đồng thời làm cho tiết học sinh động, hấp dẫn hơn, học sinh được làm việc nhiều; từ đó học sinh hứng thú, say mê với môn học hơn.
Chính vì thế mà tôi chọn đề tài “Một số kinh nghiệm hướng dẫn học sinh học tốt §10 cấu trúc lặp – sách giáo khoa Tin học 11” làm sáng kiến kinh nghiệm của mình trong năm học 2015 -2016. 
 Mục đích nghiên cứu
	Đề tài này nghiên cứu nhằm giúp học sinh chủ động tích cực tiếp thu kiến thức về cấu trúc lặp từ đó vận dụng các câu lệnh lặp để cài đặt linh hoạt các thuật toán giải các bài toán trong tin học. 
	Từ kinh nghiệm dạy học của bài này có thể nghiên cứu áp dụng cho các bài học khác để tăng hứng thú học tập cho học sinh, làm cho học sinh yêu thích môn Tin học hơn dẫn đến kết quả học tập tốt hơn.
Đối tượng nghiên cứu
Đề tài này sẽ nghiên cứu cách thức để hướng dẫn học sinh học tốt bài “Cấu trúc lặp”. Cụ thể là lựa chọn những ví dụ phù hợp với trình độ học sinh, những bài toán từ thực tiễn kết hợp mô phỏng minh họa thực hiện câu lệnh để học sinh có thể học tốt bài học.
Phương pháp nghiên cứu
Phương pháp nghiên cứu xây dựng cơ sở lý thuyết; Phương pháp điều tra khảo sát thực tế, thu thập thông tin; 
Để có cơ sở đánh giá về hiệu quả của việc áp dụng đề tài vào thực tế dạy học, tôi chọn các lớp của Trường trung học phổ thông Triệu Sơn 4 tôi được phân công giảng dạy, cụ thể:
- Lớp đối chứng: 11A1, 11A2, 11A3, 11A4, 11A5 (Năm học 2012-2013)
- Lớp thực nghiệm: 11D1, 11D2, 11D3, 11D4, 11D5 (năm học 2015 – 2016)
Các lớp được chọn tham gia nghiên cứu cho đề tài có nhiều điểm tương đồng nhau về tỉ lệ giới tính, ý thức học tập của học sinh, đặc biệt là năng lực học tập, thái độ học tập với môn Tin học 11 trước khi tác động.
2. NỘI DUNG SÁNG KIẾN KINH NGHIỆM
	2.1. Cơ sở lý luận của sáng kiến kinh nghiệm
Đổi mới phương pháp dạy học đang thực hiện bước chuyển từ chương trình giáo dục tiếp cận nội dung sang tiếp cận năng lực của người học, từ chỗ quan tâm đến việc học sinh học được cái gì đến chỗ quan tâm học sinh vận dụng được cái gì qua việc học. Để đảm bảo được điều đó, phải thực hiện chuyển từ phương pháp dạy học theo lối "truyền thụ một chiều" sang dạy cách học, cách vận dụng kiến thức, rèn luyện kỹ năng, hình thành năng lực và phẩm chất – gọi là dạy học theo định hướng phát triển năng lực.
“Năng lực được hình thành phát triển thông qua các hoạt động vận dụng kiến thức, kỹ năng học được để giải quyết các tình huống do cuộc sống đặt ra. Do vậy để hình thành và phát triển năng lực của học sinh cần sử dụng các hình thức tổ chức dạy học, phương pháp dạy học trong đó học sinh cần phải vận dụng những tri thức đã học vào thực tiễn cuộc sống” – (trích “Tài liệu bồi dưỡng cán bộ quản lý và giáo viên về dạy học và kiểm tra, đánh giá kết quả học tập của học sinh theo định hướng năng lực môn Tin học cấp THPT”- Tài liệu lưu hành nội bộ 2014).
Từ đó ta thấy rằng việc sử dụng các ví dụ từ thực tiễn, kết hợp với phương pháp dạy học tích cực để tăng hứng thú học tập cho học sinh là phù hợp với xu thế phát triển của giáo dục hiện đại.
2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm.
Khi giảng dạy phần lập trình nói chung và phần cấu trúc lặp nói riêng học sinh thường khó hiểu, tiếp thu chậm. Học sinh đã quá quen với việc giải các bài toán một cách tuần tự nên khi gặp cấu trúc lặp đòi hỏi sự tư duy của người học rất cao phần nhiều các em sẽ cảm thấy trừu tượng, khó hiểu. 
Trong khi đó sách giáo khoa Tin học 11 (trang 42) có đưa ra hai bài toán làm ví dụ mở đầu giới thiệu cấu trúc lặp hai dạng: 
Ví dụ 1: Tính và đưa kết quả ra màn hình tổng:
 (Với a là số nguyên lớn hơn 2)
Ví dụ 2: Tính và đưa kết quả ra màn hình tổng:
 Cho đến khi 
 Theo tôi, hai ví dụ này không phù hợp với học sinh của mình vì kiến thức khá tổng quát, học sinh không hiểu được ý đồ của thuật toán. Qua giảng dạy các năm trước sử dụng các ví dụ này tôi thấy không hiệu quả lắm.
Trong năm học 2012 – 2013 sau khi dạy xong bài cấu trúc lặp tôi đã tiến hành khảo sát kiến thức về phần này đối với các lớp 11A1, 11A2, 11A3, 11A4, 11A5. Kết quả thu được như sau:
Lớp
Sĩ số
8 ≤ Điểm ≤ 10
6,5 ≤ Điểm < 8
5 ≤ Điểm < 6,5
0 ≤ Điểm < 5
SL
%
SL
%
SL
%
SL
%
11A1
47
2
4,26
20
42,55
25
53,19
0
0
11A2
46
0
0
14
30,43
32
69,57
0
0
11A3
41
0
0
11
26,83
28
68,29
2
4,88
11A4
40
0
0
8
20
25
62,5
7
17,5
11A5
41
0
0
7
17,07
26
63,42
8
19,51
Tổng
215
2
0.93
60
27,91
136
63,26
17
7,9
Kết quả khảo sát cho thấy số lượng học sinh nắm được bài còn thấp. Đa số học sinh mới dừng lại ở mức nhận biết có câu lệnh lặp ( khoảng 93%), số học sinh phân biệt được lặp có hai dạng lặp là lặp biết trước số lần lặp và lặp chưa biết trước số lần lặp khoảng 66%, số học sinh hiểu được hoạt động của các câu lệnh lặp chỉ khoảng 41%, số học sinh biết vận dụng câu lệnh lặp để giải quyết các bài toán đơn giản chỉ có 15%. 
Vì vậy cần có cần có cải tiến cần thiết, đặc biệt là việc lựa chọn các ví dụ phù hợp, gắn với thực tiễn để học sinh có thể nắm vững kiến thức, kỹ năng theo Chuẩn kiến thức kỹ năng yêu cầu. 
2.3. Các giải pháp đã sử dụng để giải quyết vấn đề	
Lấy ví dụ từ thực tiễn phù hợp với trình độ học sinh. Tình huống công việc thực tiễn, giúp tạo động cơ học tập, hướng đích cho học sinh, gắn bài học với thực tế sinh động diễn ra hàng ngày. Góp phần hình thành nhân sinh quan, thế giới quan duy vật biện chứng, hình thành năng lực giải quyết vấn đề cho học sinh. Căn cứ chuẩn kiến thức kỹ năng, giáo viên cài đặt những tri thức định dạy cho học sinh vào trong tình huống đó theo trình tự và nội dung cần dạy một cách logic, để học sinh tiến hành chiếm lĩnh kiến thức, kỹ năng một cách say mê, hào hứng hoạt động tự giác, tích cực, chủ động và sáng tạo. Cụ thể ở các nội dung kiến thức bài cấu trúc lặp tôi tiến hành như sau:
1. Nhận biết việc lặp và phân biệt hai cấu trúc lặp
Ví dụ 1: 
	Cần đổ đầy một bình chứa tối đa 30 lít nước bằng một cái ca có dung tích là 1 lít thì ta phải thực hiện lặp lại việc múc nước rồi đổ vào bình tối thiểu bao nhiêu lần?
1 lít
Bình 30 lít
Hình 1
Học sinh sẽ dễ dàng trả lời: Cần lặp lại 30 lần công việc múc đầy ca nước đổ vào bình.
- Tiếp theo cho các em xem hình thứ 2 với cái ca chưa biết dung tích
Bình 30 lít
Hình 2
Giáo viên đặt câu hỏi: nếu đổ với cái ca không biết dung tích thì các em có biết được số lần thực hiện công việc đổ nước không ? Đổ nước đến khi nào thì dừng việc đổ nước?
Học sinh sẽ trả lời: chưa biết được số lần đổ và thực hiện công việc đổ nước cho đến khi bình đầy thì dừng việc đổ nước lại.
Từ ví dụ đơn giản này chúng ta có thể giúp cho các em hiểu và biết được như thế nào là lặp và phân biệt được lặp với số lần biết trước và lặp với số lần chưa biết trước.
2. Lặp biết trước số lần lặp và câu lệnh for – do
Ví dụ 1: Viết chương trình ghi ra màn hình 10 câu "Toi thich hoc lap trinh"
Chương trình như sau:
Program vidu1;
Uses Crt;
Begin
Clrscr;
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Writeln('Toi thich hoc lap trinh');
Readln;
End.
Phát hiện tình huống có vấn đề
Chương trình này học sinh viết được vì nó không có gì khó khăn, khi lên viết ở bảng học sinh phải viết đầy đủ các lệnh như trên nên dễ dàng rút ra được nhận xét: chương trình viết lặp lại 10 lần một lệnh Writeln('Toi thich hoc lap trinh'); nếu chương trình yêu cầu đưa ra màn hình 50 câu thì việc viết lặp lại sẽ rất mất thời gian.
Qua ví dụ này, giáo viên đã giúp học sinh phát hiện tình huống có vấn : Một bài toán có thể yêu cầu lặp lại một (hoặc một số) công việc nào đó nhiều lần, nếu sử dụng cách viết như trên thì mất thời gian và gây nhàm chán, vậy có cách nào để chương trình viết ngắn gọn hơn nhưng vẫn thực hiện được đúng yêu cầu đề ra?
Giải quyết vấn đề
Giáo viên giới thiệu cú pháp và hoạt động của câu lệnh for – do dạng lặp tiến và dạng lặp lùi sau đó đưa ra chương trình vận dụng câu lệnh for – do để giải quyết ví dụ 1.
Chương trình ví dụ viết bằng câu lệnh for – do như sau:
Program vidu1;
Uses Crt;
Var i: byte;
Begin
Clrscr;
For i:=1 to 10 do
 Writeln('Toi thich hoc lap trinh');
Readln;
	End.
Mô phỏng thực hiện lệnh For - do : 
For i:=1 to 10 do Writeln('Toi thich hoc lap trinh');
Ta có thể mô phỏng việc thực hiện câu lệnh này bằng bảng sau:
Giá trị i
Câu lệnh được thực hiện
kết quả ra màn hình
1
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
2
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
3
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
4
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
5
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
6
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
7
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
8
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
9
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
10
writeln('Toi thich hoc lap trinh');
Toi thich hoc lap trinh
Ví dụ 2: Bài toán tiết kiệm
Tý muốn tiết kiệm tiền ăn sáng để có tiền mua chiếc đồng hồ đeo tay mà không muốn phải nhịn ăn sáng hay giảm khẩu phần ăn đột ngột, bạn ấy đã lên kế hoạch tiết kiệm tiền ăn sáng của mình như sau: Ngày đầu tiên Tý bỏ vào heo đất 1 nghìn đồng, ngày thứ hai 2 nghìn đồng, ngày thứ ba 3 nghìn đồng, cứ như vậy mỗi ngày số tiền Tý dành lại để “nuôi” heo đất lại tăng thêm 1 nghìn đồng. Hỏi sau 20 ngày bạn Tý tiết kiệm được bao nhiêu tiền? 	Hình 3
Bài toán này đơn giản là tính tổng:
S = 1 + 2 + 3 +  + 20
Học sinh có thể sẽ đưa ra hai chương trình như sau:
Chương trình 1: 
Program vidu2;
Uses crt;
Var S:integer;
Begin 
 S:= 1 + 2 + 3 + + 20;
	 Write (‘ So tien Tý tiet kiem duoc sau 20 ngay la:’, S ,’nghin dong’);
	Readln;
End.
Chương trình 2:
Program vidu2;
Uses crt;
Var S:integer;
Begin
 Clrscr;
 S:= 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20;
 Write (‘ So tien Tý tiet kiem duoc sau 20 ngay la:’, S ,’nghin dong’);
	Readln;
End
Giáo viên cho học sinh tự nhận xét: 
Với chương trình 1, máy tính sẽ báo lỗi cú pháp vì không hiểu được dấu ba chấm ().
Với chương trình 2, ta nhận thấy phép toán tính tổng rất dài dòng, Nếu mở rộng bài toán tính tổng với số lớn thì công thức tính tổng sẽ rất dài dễ dẫn đến sai sót.
Tìm giải pháp
Ở ví dụ này học sinh nhận thấy công việc lặp lại mỗi ngày là Tý bỏ tiền tiết kiệm vào heo nhưng có khác là số tiền tiết kiệm mỗi ngày tăng thêm 1 nghìn đồng. Có nghĩa là:
Ngày thứ
Số tiền cần tiết kiệm
1
1 nghìn đồng
2
2 nghìn đồng
3
3 nghìn đồng
20
20 nghìn đồng
Ta có thể đưa ra nhận xét rằng số tiền cộng thêm mỗi ngày chính bằng số ngày đã tiết kiệm. Nếu gọi I là biến đếm số ngày đã tiết kiệm, S là tổng số tiền đã tiết kiệm được tính đến ngày thứ I thì công việc lặp lại sau mỗi ngày là S=S+I. Từ đó có thể đưa ra thuật toán:
Bước 1: Sß 0; I ß 0;
Bước 2: I ß I + 1;
Bước 3: nếu I >50 thì chuyển qua bước 5;
Bước 4: Sß S + I;
Bước 5: Đưa ra S rồi kết thúc;
 	Thuật toán này được cài đặt bằng ngôn ngữ lập trình Pascal như sau
	Program tietkiem1;
	Uses crt;
	Var S, I : integer;
	Begin 
	S:=0;
	For I:=1 to 20 do S:=S+I;
	Write(‘So tien Ty tiet kiem duoc sau 20 ngay la:’, S,’ nghin dong’);
	Readln
	End.
Mô phỏng thực hiện lệnh For - do : câu lệnh
S:=0;
For I:=1 to 20 do S:=S+I;
Có thể được mô phỏng việc thực hiện qua bảng sau:
Giá trị biến đếm i
Câu lệnh được thực hiện
kết quả S
S=0
1
 S:=S+I;
S = 0 + 1 = 1
2
 S:=S+I;
S = 1 + 2 = 3
3
 S:=S+I;
S = 3 + 3 = 6
4
 S:=S+I;
S = 6 + 4 = 10
5
 S:=S+I;
S = 10 + 5 = 15
6
 S:=S+I;
S = 15 + 6 = 21
7
 S:=S+I;
S = 21 + 7 = 28
8
 S:=S+I;
S= 28 + 8 = 36
9
 S:=S+I;
S = 36 + 9 = 45
10
 S:=S+I;
S = 45 + 10 = 55
11
 S:=S+I;
S = 55 + 11 = 66
12
 S:=S+I;
S = 66 + 12 = 78
13
 S:=S+I;
S = 78 + 13 = 91
14
 S:=S+I;
S = 91 + 14 = 105
15
 S:=S+I;
S = 105 + 15 = 120
16
 S:=S+I;
S = 120 + 16 = 136
17
 S:=S+I;
S = 136 + 17 = 153
18
 S:=S+I;
S = 153 + 18 = 171
19
 S:=S+I;
S = 171 + 19 = 190
20
 S:=S+I;
S = 190 + 20 = 210
Vậy kết quả cuối cùng S = 120.
Từ bảng mô phỏng thực hiện câu lệnh for – do trên học sinh sẽ hiểu hơn việc thực hiện lệnh lặp. Giáo viên yêu cầu học sinh viết câu lệnh for – do của ví dụ trên dưới dạng lặp lùi. 
Bài tập tương tự
Lập trình tính:
T = 1*2*3**10
T= 1*22*32**52
S = 1 + 23+33++103
S = 1+12+13++130
 (Với a là số nguyên lớn hơn 2)
Tổng các số chia hết cho 3 trong phạp vi từ 1 đến 100.
Kết luận: những bài toán có tính chất thực hiện lặp lại một câu lệnh nào đó (hoặc câu lệnh tương tự nhau) nhiều lần, với số lần biết trước người ta gọi đây là những bài toán có Cấu trúc lặp biết trước số lần. Để giải quyết các bài toán dạng này ta có thể sử dụng câu lệnh for – do để cài đặt thuật toán.
3. Lặp chưa biết trước số lần lặp và câu lệnh while – do
Ví dụ 1: 
Tý muốn tiết kiệm tiền ăn sáng để có tiền mua chiếc đồng hồ đeo tay mà không muốn phải nhịn ăn sáng hay giảm khẩu phần ăn đột ngột, bạn ấy đã lên kế hoạch tiết kiệm tiền ăn sáng của mình như sau: Ngày ngày thứ nhất Tý bớt lại 1 nghìn đồng bỏ vào “heo đất”, ngày thứ hai 2 nghìn đồng, ngày thứ ba 3 nghìn đồng, cứ như vậy sau mỗi ngày số tiền Tý dành lại để “nuôi” heo đất lại tăng thêm 1 nghìn đồng. Biết chiếc đồng hồ mà Tý muốn mua có giá rẻ nhất là 200 nghìn đồng. Hỏi sau bao nhiêu ngày bạn Tý tiết kiệm được đủ tiền để mua đồng hồ?
Tình huống có vấn đề
Khi gặp ví dụ này, học sinh nhận thấy quen quen vì tương tự ví dụ 2 ở dạng cấu trúc lặp biết trước số lần. Nhưng đọc kỹ thì đây là một dạng khác của bài toán. Cũng như ở phần trước giáo viên có thể đưa về bài toán tính tổng
S = 1+2+3++ n +  cho đến khi S≥200.
Ở bài toán này cũng thực hiện việc lặp lại công việc cộng dồn vào tổng S, có nghĩa là tương tự thuật toán ở ví dụ trước, sau mỗi lần tăng I câu lệnh lặp lại là: S:= S + I;
Nhưng ta chưa biết được câu lệnh này sẽ thực hiện bao nhiêu lần do đó không thể sử dụng câu lệnh for – do để viết chương trình được. Vì vậy các ngôn ngữ lập trình cung cấp thêm câu lệnh lặp chưa biết trước số lần lặp.
Giải quyết vấn đề
Trong Pascal sử dụng câu lệnh while - do để giải quyết vấn đề này. Cấu trúc câu lệnh while – do như sau:
While do ;
Trong đó:
Điều kiện là biểu thức logic;
Câu lệnh là một câu lệnh đơn hoặc ghép
Việc thực hiện câu lệnh while – do được thực hiện theo sơ đồ sau
Điêu kiện
Sai
Đúng
Câu lệnh
Hình 4
Câu lệnh này có nghĩa là trong khi điều kiện đúng thì thực hiện câu lệnh, khi nào điều kiện sai thì thoát khỏi vòng lặp. 
Ở ví dụ này vòng lặp được thể hiện theo sơ đồ sau:
Sß 0; Iß 0;
S <200
Iß I + 1;
Sß S + I;
Đúng
Sai
Thông báo I rồi kết thúc
Hình 5
Dựa vào sơ đồ thuật toán này giáo viên có thể yêu cầu học sinh áp dụng vòng lặp while – do để cài đặt thuật toán.
Program vidu1;
Uses crt;
Var S, I: integer;
Begin
	S:=0; I:=0;
	While S < 200 do
 	Begin
 	I:= I +1;
	S:= S+ I;
	End;
Write(‘So ngay ban Tý can tiet kiem de du tien mua dong ho la’, I, ‘ngay’);
Readln
End.
Mô phỏng thực hiện lệnh While – do
Giáo viên có thể thay đổi điều kiện của bài toán nhỏ lại để học sinh điền vào bảng mô phỏng đã chuẩn bị sẵn như sau với điều kiện S < 50
Điều kiện S <50
Câu lệnh được thực hiện
kết quả 
I:=0; S=0;
S=0 < 50: đúng
I:= I +1; 
S:=S+I;
I = 1;
S = 0 + 1 = 1;
S=1 < 50: đúng
I:= I +1;
S:=S+I;
I = 2
S = 1 + 2 = 3
S=3 < 50: đúng
I:= I +1;
S:=S+I;
I = 3
S = 3 + 3 = 6
S=6 < 50: đúng
I:= I +1;
S:=S+I;
I = 4 
S = 6 + 4 = 10
S=10 < 50: đúng
I:= I +1;
S:=S+I;
I = 5
S = 10 + 5 = 15
S=15 < 50: đúng
I:= I +1;
S:=S+I;
I = 6
S = 15 + 6 = 21
S=21 < 50: đúng
I:= I +1;
S:=S+I;
I = 7
S = 21 + 7 = 28
S=28 < 50: đúng
I:= I +1;
S:=S+I;
I = 8
S= 28 + 8 = 36
S=36 < 50: đúng
I:= I +1;
S:=S+I;
I = 9
S = 36 + 9 = 45
S=45 < 50: đúng
I:= I +1;
S:=S+I;
I = 10
S = 45 + 10 = 55
S=55 < 50: sai 
dừng lệnh while
Kết quả cuối cùng: S= 55; I = 10.
Bài tập tương tự:
Lập trình tính:
T = 1*2*3**n* cho đến khi T > 30000 thì dừng
T= 1*22*32**n2*	cho đến khi T>50000 thì dừng
S = 1+12!+13!++1n! +  cho đến khi 1n!<0.000000001
 (Với a là số nguyên lớn hơn 2) cho đến khi 1a+n < 0.00001
Ví dụ 2: Vận dụng câu lệnh while - do để cài đặt bài toán tìm ước chung lớn nhất của hai số nguyên dương.
Ý tưởng sư phạm: giáo viên có thể diễn đạt ý tưởng thuật toán bằng ngôn ngữ nói. “trong khi MN thì thực hiện:
Nếu M > N thì thực hiện M ß M –N
Ngược lại, N ß N – M;
Cho đến khi điều kiện MN sai, có nghĩa là M = N thì thoát khỏi vòng lặp, giá trị của M và 

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

  • docxskkn_mot_so_kinh_nghiem_huong_dan_hoc_sinh_hoc_tot_bai_10_ca.docx