RÈN LUYỆN HỌC SINH KỸ NĂNG SỬ DỤNG CÂU LÊNH LẶP I. LÍ DO CHỌN ĐỀ TÀI Dựa trên mục tiêu đổi mới chương trình giáo dục của Bộ GD – ĐT nhằm góp phần năng cao chất lượng giáo dục. Từ năm 2006 đến nay, bộ môn tin học đã được áp dụng cho mọi đối tượng học sinh THCS và được dạy cho cả 4 khối lớp 6, 7, 8, 9 với thời lượng hai tiết tuần. Là giáo giảng dạy môn tin học trong trường THCS, trực tiếp giảng dạy, hướng dẫn các em, tôi thấy rằng để đạt hiệu quả cao trong tiết học, chúng ta cần có cách thiết kế bài giảng cho phù hợp với nội dung kiến thức, phương pháp đứng lớp phải phù hợp với từng đối tượng học sinh. Để qua mỗi tiết học, học sinh thích thú với kiến thức mới, đồng thời các em còn thấy được tầm quan trọng của việc ứng dụng kiến thức đã học vào thực tiễn trong đời sống xã hội thông qua việc viết các chương trình hướng dẫn máy tính giải toán. Ngôn ngữ lập trình Pascal là một loại ngôn ngữ bậc cao, có các câu lệnh viết bằng các thuật ngữ tiếng Anh mà nội dung liên quan đến toán học vừa khô khan vừa trừu tượng, khó hiểu. Chính vì vậy để có thể học tốt môn này đòi hỏi người học phải có tính tự giác, sáng tạo, chịu khó tư duy, có khả năng phân tích, tổng hợp. Do đó môn học này sẽ gây rất nhiều khó khăn cho học sinh lớp 8, nhất là học sinh yếu kém. Nhận thấy vai trò của môn tin học nói chung, lập trình nói riêng và những khó khăn trong việc học lập trình của học sinh nên tôi chọn đề tài ‘RÈN LUYỆN HỌC SINH KỸ NĂNG SỬ DỤNG CÂU LỆNH LẶP’, hy vọng qua đề tài này giúp cho học sinh THCS có hứng thú với môn học này hơn, đặc biệt là học sinh yêu thích môn tin học sẽ gắn bó say mê trong việc nghiên cứu dạng câu này. 1. Thuận lợi: Được sự quan tâm sâu sát của BGH trong việc đầu tư trang thiết bị dạy học, sự giúp đỡ tạo điều kiện của tổ chức đoàn thể, sự hỗ trợ của đồng nghiệp. Bản thân tôi luôn có ý thức cầu tiến, luôn học hỏi kinh nghiêm từ người đi trước, nhiệt tình trong giảng dạy. Đa số học sinh ham học, tích cực phát biểu xây dựng bài, tài liệu SGK tương đối đầy đủ. Một số em đã biết thực hành một số thao tác cơ bản trên máy tính. 2. Khó khăn: Tuy có hai phòng máy, nhưng số máy mỗi phòng chưa đủ để đáp ứng cho mỗi HS nên vẫn còn tình trạng 2,3 học sinh sử dụng chung 1 máy. Học sinh còn phân biệt giữa môn chính và môn phụ nên chưa dành nhiều thời gian đầu tư bài. Tư duy của học sinh còn thấp, kiến thức toán học của các em chưa đủ để đáp ứng giải bài toàn bằng lập trình. Ngôn ngữ lập trình khô khan, trừu tượng nên làm học sinh khó hứng thú với môn học. Còn một bộ phận HS ý thức chưa cao, chưa tự giác học bài, làm bài trước khi đến lớp. Bảng thống kê
Trang 1RÈN LUYỆN HỌC SINH KỸ NĂNG SỬ DỤNG CÂU LÊNH LẶP
I LÍ DO CHỌN ĐỀ TÀI
- Dựa trên mục tiêu đổi mới chương trình giáo dục của Bộ GD – ĐT nhằm góp phần năng cao chất lượng giáo dục Từ năm 2006 đến nay, bộ môn tin học đã được áp dụng cho mọi đối tượng học sinh THCS và được dạy cho cả 4 khối lớp 6,
7, 8, 9 với thời lượng hai tiết/ tuần
- Là giáo giảng dạy môn tin học trong trường THCS, trực tiếp giảng dạy, hướng dẫn các em, tôi thấy rằng để đạt hiệu quả cao trong tiết học, chúng ta cần có cách thiết kế bài giảng cho phù hợp với nội dung kiến thức, phương pháp đứng lớp phải phù hợp với từng đối tượng học sinh Để qua mỗi tiết học, học sinh thích thú với kiến thức mới, đồng thời các em còn thấy được tầm quan trọng của việc ứng dụng kiến thức đã học vào thực tiễn trong đời sống xã hội thông qua việc viết các chương trình hướng dẫn máy tính giải toán
- Ngôn ngữ lập trình Pascal là một loại ngôn ngữ bậc cao, có các câu lệnh viết bằng các thuật ngữ tiếng Anh mà nội dung liên quan đến toán học vừa khô khan vừa trừu tượng, khó hiểu Chính vì vậy để có thể học tốt môn này đòi hỏi người học phải có tính tự giác, sáng tạo, chịu khó tư duy, có khả năng phân tích, tổng hợp Do đó môn học này sẽ gây rất nhiều khó khăn cho học sinh lớp 8, nhất là học sinh yếu kém
- Nhận thấy vai trò của môn tin học nói chung, lập trình nói riêng và những
khó khăn trong việc học lập trình của học sinh nên tôi chọn đề tài ‘RÈN LUYỆN
HỌC SINH KỸ NĂNG SỬ DỤNG CÂU LỆNH LẶP’, hy vọng qua đề tài này
giúp cho học sinh THCS có hứng thú với môn học này hơn, đặc biệt là học sinh yêu thích môn tin học sẽ gắn bó say mê trong việc nghiên cứu dạng câu này
1 Thuận lợi:
- Được sự quan tâm sâu sát của BGH trong việc đầu tư trang thiết bị dạy học, sự giúp đỡ tạo điều kiện của tổ chức đoàn thể, sự hỗ trợ của đồng nghiệp
- Bản thân tôi luôn có ý thức cầu tiến, luôn học hỏi kinh nghiêm từ người đi trước, nhiệt tình trong giảng dạy
- Đa số học sinh ham học, tích cực phát biểu xây dựng bài, tài liệu SGK tương đối đầy đủ
- Một số em đã biết thực hành một số thao tác cơ bản trên máy tính
2 Khó khăn:
- Tuy có hai phòng máy, nhưng số máy mỗi phòng chưa đủ để đáp ứng cho
mỗi HS nên vẫn còn tình trạng 2,3 học sinh sử dụng chung 1 máy
- Học sinh còn phân biệt giữa môn chính và môn phụ nên chưa dành nhiều
thời gian đầu tư bài
- Tư duy của học sinh còn thấp, kiến thức toán học của các em chưa đủ để đáp ứng giải bài toàn bằng lập trình
Giáo viên: Đặng Thị Cẩm Tú
Trang 1
Trang 2- Ngôn ngữ lập trình khô khan, trừu tượng nên làm học sinh khó hứng thú với môn học
- Còn một bộ phận HS ý thức chưa cao, chưa tự giác học bài, làm bài trước khi đến lớp
Bảng thống kê
II TỔ CHỨC THỰC HIỆN ĐỀ TÀI
1 Cơ sở lý luận:
- Căn cứ công văn 5555/BGDĐT-GDTrH ngày 08/10/2014 của Bộ GDĐT: đẩy mạnh việc dạy học giải quyết vấn đề, các phương pháp thực hành, dạy học theo dự án trong các môn học, tích cực ứng dụng công nghệ thông tin phù hợp với nội dung bà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ĩ, bảo đảm cân đối giữa trang bị kiến thức, rèn luyện
kĩ năng và định hướng thái độ, hành vi cho học sinh, chú ý việc tổ chức dạy học phân hóa phù hợp các đối tượng học sinh khác nhau
- Căn cứ công văn số 4509/BGDĐT-GDTrH ngày 03/9/2015 của Bộ Giáo dục và Đào tạo (GDĐT) về hướng dẫn thực hiện nhiệm vụ giáo dục trung học năm 2015 – 2016: Tiếp tục đổi mới mạnh mẽ phương pháp dạy học, đánh giá học sinh nhằm phát huy tính tích cực, chủ động, sáng tạo và rèn luyện phương pháp tự học của học sinh, tăng cường kĩ năng thực hành, vận dụng kiến thức, kĩ năng vào giải quyết các vấn đề thực tiễn, đa dạng hóa các hình thức học tập, chú trọng các hoạt động trải nghiệm sáng tạo, nghiên cứu khoa học của học sinh; đẩy mạnh ứng dụng công nghệ thông tin và truyền thông trong dạy và học
- Trong chương trình Tin học cấp trung học cơ sở ở lớp 8 phần lập trình đơn
0
5
10
15
20
25
30
35
40
45
50
TRƯỚC KHI THỰC HIỆN
Trang 3giản, học sinh được học ngôn ngữ lập trình Pascal để lập trình giải các bài toán
trong chương trình trung học và cũng như nội dung thi học sinh giỏi môn Tin, hội
thi tin học trẻ không chuyên đều sử dụng ngôn ngữ lập trình Pascal để giải các bài
toán
2 Nội dung, biên pháp thực hiện các giải pháp:
Trong cuộc sống hằng ngày, có rất nhiều hoạt động được thực hiện lặp đi lặp lại nhiều lần, có những hoạt động lặp lại với một số lần biết trước, cũng có những hoạt động lặp lại với số lần chưa biết trước
2.1 Giải pháp 1: Đối với lí thuyết:
2.1.1 Lặp với số lần biết trước:
- Giáo viên cho HS nêu một vài ví dụ có tính lặp trong thực tế mà hàng ngày các
em nhìn thấy, nêu rõ hoạt động đó được lặp lại bao nhiêu lần?
- Giáo viên giới thiệu thêm ví dụ:
- Giáo viên đặt câu hỏi: Hãy quan sát hình trên và cho biết phải thực hiện đổ bao nhiêu lần để hoàn thành công việc trên
- Học sinh sẽ dễ dàng trả lời được là phải thực hiện lặp lại 30 lần để hoàn thành công việc
- Khi viết chương trình máy tính cũng vậy, trong nhiều trường hợp, để máy tính Có thể thực hiện đúng công việc, ta cũng cần phải viết lặp lại câu lệnh nhiều lần
Ví dụ 1: Viết chương in ra mà hình 10 dòng chữ “chào các bạn”.
Đa số học sinh sẽ viết được chương trình này một cách dễ dàng như sau:
Begin
Writeln(‘chao cac ban’);
Writeln(‘chao cac ban’);
Writeln(‘chao cac ban’);
Writeln(‘chao cac ban’);
Writeln(‘chao cac ban’);
Writeln(‘chao cac ban’);
Writeln(‘chao cac ban’);
Writeln(‘chao cac ban’);
Writeln(‘chao cac ban’);
Giáo viên: Đặng Thị Cẩm Tú
Trang 3
Bình mmkj
11
Hình 1
Ca
Bình này chứa tối đa là 30 lít
1
Trang 4Writeln(‘chao cac ban’);
End
- Yêu cầu học sinh nhận xét về cách viết trên
- Học sinh: viết cách viết như trên rất nhàm chán và mất thời gian, đồng thời chỉ áp dụng được khi số lần lặp là tương đối ít, nếu đề bài yêu cầu ta in hàng trăm, hàng nhìn lần thì khó mà thực hiện được?
- Giáo viên: giới thiệu cho học sinh cách khắc phục thông qua câu lệnh:
For i: =1 to 10 do write(‘chao cac ban’);
- Giáo viên yêu cầu học sinh nhận biết các đại lượng trong câu lệnh trên?
Từ ví dụ trên GV chốt lại cú pháp của dạng lặp với số lần biết trước:
Cú pháp: for < biến đếm> := <giá trị đầu> to < giá trị cuối> do <câu lệnh>;
Trong đó: for, to, do là các từ khoá
Biến đếm có kiểu có kiểu số nguyên, giá trị đầu và giá trị cuối là các giá trị nguyên
Ví Dụ 2 : GV mở rộng ra đối với bài toán tính tổng của 10 số tự nhiên đầu tiên.
- Đây không phải là bài toán khó, tuy nhiên học sinh sẽ nhầm lẫn vì cứ nghĩ máy tính sẽ thực hiện cộng dồn T = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 thì sẽ cho kết quả Nhưng không phải như vậy, máy sẽ thực hiện tính lần lượt như sau: T = 0 + 1
=1 T = 1 + 2 = 3 T = 3+3=6 T = 6 + 4= 10 … T = 45 + 10 = 55
Từ đó học sinh có thể viết chương trinh như sau:
Begin
T:=0;
T:= 0 + 1;
T:= 1 + 2;
………
T := 45 + 10;
Write( T);
End
- Cũng giống ví dụ 1: Cách viết này không tối ưu Yêu cầu học sinh áp dụng cú pháp vừa học để thực hiện tính tổng trên
Ta viết: S := 0;
for i:= 1 to 10 do S := S + I;
- Giáo viên mở rộng thêm với bài toán tính tổng của n số tự nhiên đầu tiên
Ta viết: S := 0;
for i:= 1 to n do S := S + I;
- Giáo viên thông qua ví dụ để giới thiệu với học sinh cách thực hiện của câu lệnh lặp dạng này
Ví dụ 3: Sau khi thực hiện đoạn chương trình sau, giá trị của m bằng bao
nhiêu?
Trang 5m := 0;
for i := 0 to 5 do m := m + 3;
- Học sinh thảo luận nhóm để tìm ra cách giải quyết?
- Học sinh đưa ra cách giải quyết theo cách của mình
- Yêu cầu học sinh cho biết đoạn chương trình trên, câu lệnh m := m+ 3 thực
hiện lặp bao nhiêu lần? Có cách nào để tính số lần lặp của câu lệnh hay không?
- Dựa vào bảng trên học sinh có thể trả lời được câu lệnh m := m+ 3 đã được lặp
lại 6 lần, tuy nhiên học sinh còn lung túng trong quá trình tìm cách tính số lần lặp
- Giáo viên gợi ý cho học sinh cách tính số vòng lặp bằng:
giá trị cuối – giá trị đầu + 1;
Tóm lại: Đối với dạng lặp với số lần biết trước, câu lệnh lặp sẽ thực hiện câu
lệnh nhiều lần và mỗi lần là một vòng lặp
- Khi thực hiện ban đầu biến đếm sẽ nhận giá trị là giá trị đầu, sau mỗi vòng lặp biến đếm tự động tăng thêm một đơn vị cho đến khi bằng giá trị cuối
Sử dụng bản đồ tư duy để học sinh thêm khắc sâu kiến thức:
I.1.2 Lặp với số lần chưa biết trước:
- Giáo viên cho học sinh nêu một vài ví dụ về các hoạt đông lặp lại nhiều lần nhưng chưa xác định được số lần lặp trong cuộc sống hằng ngày mà các em biết
- Giáo viên giới thiệu thêm ví dụ sau:
Giáo viên: Đặng Thị Cẩm Tú
Trang 5
Bình chứa tối đa 30 lít nước
?111
nh 2
Ca
?lít
Trang 6- Giáo viên đặt câu hỏi cho học sinh:
- Quan sát và cho biết phải thực hiện đổ bao nhiêu lần để hoàn thành công việc trên? Khi nào thì dừng công việc?
- Học sinh dễ dàng trả lời được công việc trên phải thực hiện nhiều lần Và khi nào đổ đầy bình sẽ dừng lại?
Ví dụ 1: Giáo viên mở rộng cho bài toán tính tổng bao nhiêu số tự nhiên đầu
tiên để được tổng đầu tiên lớn hơn 50
- Giáo viên đặt câu hỏi: Bài toán này thực hiện tính tổng bao nhiêu số để được tổng lớn hơn 50? Và cách thực hiện như thế nào?
- Đa số học sinh sẽ lung túng khi gặp câu hỏi này
- Giáo viên giới thiệu cho học sinh biết khi gặp bài toán dạng này, máy tính sẽ vừa thực hiện tính tổng, vừa so sánh kết quả vừa tính với 50, T = 0 + 1 =1 > 50 (S) T
= 1 + 2 = 3 > 50 (S) T = 3+3=6 > 50 (S) T = 6 + 4= 10 > 50 (S) … T = 45 + 10 = 55 > 50 (Đ) Khi nhận được tổng đầu tiên lớn hơn 50 máy tính sẽ dừng việc cộng dồn lại
- Từ đó giáo viên giới thiệu cho học sinh biết đây là dạng khác của câu lệnh lặp
Cú pháp: while <điều kiện> do <câu lệnh>;
Đối với câu lệnh lặp dạng này thực hiện như sau:
B1: Kiểm tra điều kiện
B2: Nếu điều kiện sai, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp
sẽ kết thúc Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1
- Giáo viên nhấn mạnh để sử dụng câu lệnh lặp dạng này học sinh cần xác định được điều kiện để câu lệnh thực hiện
- Giáo viên yêu cầu học sinh áp dụng cú pháp để viết lại ví dụ trên:
Ta viết: T := 0; I := 1;
While T <= 50 do begin T := T + I; I := I + 1 end;
- Trong trường hợp này ta thấy rằng ứng với điều kiện T <= 50 có hai câu lệnh cần thực hiện nên ta phải sử dụng câu lệnh ghép (begin ….end);
Ví dụ 2: Tính tổng của 100 số tự nhiên đầu tiên.
Ta viết: S:= 0; i:= 1;
While I < = 100 do begin S := S + I; I := I +1 end;
Ví dụ 3 : Xét đoạn chương trình sau:
Begin
A:=5;
While a < 6 do writeln(‘A’);
Trang 7- Giáo viên yêu cầu học sinh nhận xét về đoạn chương trình sau
- HS nhận biết được đoạn chương trình trên là đúng về cấu trúc và cú pháp
- Giáo viên yêu cầu chạy tay đoạn chương trình trên và cho biết kết quả
- Học sinh tiến hành yêu cầu của giáo viên và đưa ra kết quả
Lưu ý: Khi viết chương trình sử dụng cấu trúc lặp ta cần chú ý: điều kiện trong câu
lệnh phải được thay đổi để sớm hay muộn giá trị của điều kiện được chuyển từ đúng sang sai Chỉ như vậy chương trình mới không rơi vào những vòng lặp vô tân
Sử dụng bản đồ tư duy để học sinh thêm khắc sâu kiến thức:
1.2 Giải pháp hai: Đối với bài tập
2.2.1 Sử dụng ngôn ngữ lập trình để biểu diễn lại các thuật toán sau:
Thuật toán 1:
B1: S 0; I 1;
B2: I I + 1;
B3: Nếu I > n, chuyển đến B5
B4: Nếu ai > 0, S := S +ai Quay lại bước 2
B5: Kết thúc thuật toán
- Giáo viên yêu cầu học sinh nhận biết dạng của câu lệnh lặp trong thuật toán trên
- Từ thuật toán học sinh có thể nhận biết được I có giá trị tăng dần từ 1 đến n, nên thuật toán này thuộc cấu trúc lặp với số lần biết trước, và số lần lặp là n lần
- Học sinh sẽ sử dụng câu lệnh lặp dạng for do để viết.
Giáo viên: Đặng Thị Cẩm Tú
Trang 7
Trang 8- Tuy nhiên, từ thuật toán giáo viên yêu cầu học sinh xác định điều kiện để
chương trình tiếp tục so sánh và tính s?
- Học sinh có thể xác định được điều kiện là i <= n
- Từ đó yêu cầu học sinh sử dụng câu lệnh while do để biểu diễn lại thuật toán
Thuật toán 2:
B1: S 10, x 0,5;
B2: Nếu S < 4.5, chuyển đến B4;
B3: S S – x và quay lại B2;
B4: Thông báo kết quả và kết thúc
- Giáo viên yêu cầu học sinh nhận biết dạng của câu lệnh lặp trong thuật toán trên
- Từ thuật toán học sinh có thể nhận biết được đây là dạng câu lệnh lặp vói số lần chưa biết trước, nên ta dùng câu lệnh while do để viết
- Giáo viên đặt vấn đề: Đối với thuật toán này ta có thể sử dụng câu lệnh lặp dạng
for do để viết hay không? Vì sao?
Trang 9- Học sinh có thể nhận biết được trong thuật toán trên không xác định được lần
lặp nên không thể sử dụng câu lệnh for do để viết.
- Lưu ý: Trong mọi trường hợp của hoạt động lặp ta điều có thể sử dụng câu lệnh lặp dang While … Do để viết chương trình, còn đối với câu lênh lặp dạng for…
do chỉ sử dụng khi đã biết trước số lần lặp.
I.1.3 Sử dụng dạng cấu trúc lặp thích hợp để viết các chương trình sau:
Ví dụ 1 : Tính tổng A = 1 + 1/ 1 * 3 + 1/ 2 * 4 + 1/ 3*5+ ….+ 1/n*(n + 2);
- Từ yêu cầu của bài toán GV yêu cầu học sinh cho biết bài toán này thuộc dạng lặp nào?
- Yêu cầu cho biết cách tính tổng trên
- Học sinh dựa cách tính tổng n số tự nhiên đầu tiên đưa ra cách giải
- Yêu cầu học sinh sử dụng câu lệnh lặp để viết:
Ta viết: S := 1;
for I := 1 to n do S := S + 1/ I * (I + 2);
- Tuy nhiên ta cũng có thể sử dụng câu lệnh While … do để viết:
Ta viết: A := 0; i:= 1;
While i <= n do begin s := s + 1/ i * (i+2) ; i := i + 1 end;
Ví dụ 2: Ta cần nhập giá trị cho mảng A gồm 100 phần tử.
- Học sinh cần nhận biết được với một lệnh read( ) chỉ nhập được giá trị cho một
phần tử, trong trường hợp này ta cần nhập giá trị cho 100 phần tử, nên phải sử dụng câu lênh lặp để viết:
Ta viết:
for I := 1 to 100 do read (A[i]);
hoặc: Ta viết: i:= 1;
while i <= 100 do begin read (A[i]); i := i+1 end;
Ví dụ 3: Ta cần tính tổng của dãy n số bất kì được nhập từ bàn phím:
Tương tự như tính tổng 100 số tự nhiên đầu tiên, học sinh dễ dàng thực hiện được yêu cầu này
Ta viết: S := 0;
for I := 1 to n do S:= S + A[i];
hoặc: Ta viết: S := 0; i:= 1;
While I <= n do begin S:= S + A[i]; i:= i+1 end;
I.1.4 Tìm hiểu câu lệnh qua đoạn chương trình cho trước:
- Giáo viên chuẩn bị sẵn một số chương trình có sử dụng cấu trúc lặp cho học sinh quan sát và yêu cầu học sinh tìm hiểu cho biết kết quả thực hiện của chương trình
Chương trình 1:
Giáo viên: Đặng Thị Cẩm Tú
Trang 9
Trang 10- HS sẽ thảo luận nhóm cùng nhau hoàn thành bài tập.
- Học sinh cho biết kết quả của chương trình là tính tổng các số chẵn từ 1 đến n
Chương trình 2:
-Đ
ây là chương trình khó, giáo viên hướng dẫn học sinh thực hiện từng bước
- Sau khi thực hiện từng bước học sinh đưa ra kết quả của chương trình này là tìm UCLN và BCNN của hai số x và y
III- HIỆU QUẢ CỦA ĐỀ TÀI
- Chương trình học này khá mới mẻ và phức tạp đối với các em, bởi vì nó áp dụng rất nhiều kiến thức toán học, có kiến thức học sinh lớp 8 học chưa tới Nên giáo viên cần phải lựa chọn phương pháp giảng dạy sao cho phù hợp với trình độ nhận thức của các em Nên kết hợp lí thuyết và thực hành, cho nhiều bài tập tương tự để các em làm để từ đó các em nắm chắc lí thuyết hơn
- Sau khi áp dụng chuyên đề tôi nhận thấy rằng: tỉ lệ học sinh khá, giỏi tăng; học sinh trung bình yếu giảm và không còn học sinh kém
Bảng thống kê số liệu
Giỏi Khá TBình Yếu Kém