Để học sinh có được kiến thức cơ bản nhất về cấu trúc lặp trong ngôn ngữ lập trình pascal, thì các em phải hiểu tác dụng, ý nghĩa của các lệnh cơ bản. Các lệnh cơ bản cần thiết ở đây bao gồm một số lệnh như: Lệnh Nhập dữ liệu, lệnh Gán dữ liệu, lệnh Rẽ nhánh, lệnh Lặp.
Trang 1PHÒNG GIÁO DỤC VÀ ĐÀO TẠO TAM ĐƯỜNG
TRƯỜNG THCS THỊ TRẤN
THUYẾT MINH SÁNG KIẾN
MỘT SỐ PHƯƠNG PHÁP GIÚP HỌC SINH LỚP 8
HỌC TỐT DẠNG BÀI CẤU TRÚC LẶP Ở TRƯỜNG THCS THỊ
TRẤN TAM ĐƯỜNG.
Tác giả/đồng tác giả: Nguyễn Văn Khoa/Trì Lệ Dung Trình độ chuyên môn: Cao đẳng
Chức vụ: Giáo viên
Nơi công tác: Trường THCS Thị Trấn
Thị Trấn, ngày tháng 3 năm 2017
Trang 2THUYẾT MINH SÁNG KIẾN MỘT SỐ PHƯƠNG PHÁP GIÚP HỌC SINH LỚP 8 HỌC TỐT DẠNG BÀI CẤU TRÚC LẶP Ở TRƯỜNG THCS THỊ
TRẤN TAM ĐƯỜNG.
I THÔNG TIN CHUNG
1 Tên sáng kiến: “Một số phương pháp giúp học sinh lớp 8 học tốt dạng
bài cấu trúc lặp ở trường THCS Thị Trấn Tam Đường”
2 Tác giả:
2.1 Họ và tên: Nguyễn Văn Khoa
Năm sinh: 10/10/1987
Nơi thường trú: Thị Trấn Tam Đường - Tam Đường - Lai Châu
Trình độ chuyên môn: Cao đẳng
Chức vụ công tác: Giáo viên
Nơi làm việc: Trường THCS Thị Trấn
Điện thoại: 01683.223.123
Tỷ lệ đóng góp tạo ra sáng kiến: 50%
2.2 Họ và tên: Trì Lệ Dung
Năm sinh: 01/01/1980
Nơi thường trú: Thị Trấn Tam Đường - Tam Đường - Lai Châu
Trình độ chuyên môn: Đại học
Chức vụ công tác: Giáo viên
Nơi làm việc: Trường THCS Thị Trấn
Điện thoại: 091.608.4987
Tỷ lệ đóng góp tạo ra sáng kiến: 50%
3 Lĩnh vực áp dụng sáng kiến: Môn tin học lớp 8.
4 Thời gian áp dụng sáng kiến: Từ ngày 6 tháng 10 năm 2015 đến ngày
25 tháng 3 năm 2017
5 Đơn vị áp dụng sáng kiến
Trang 3Tên đơn vị: Trường THCS Thị Trấn Tam Đường.
Địa chỉ: Thị Trấn Tam Đường - Tam Đường - Lai Châu
Điện thoại: 02313.879.106
II NỘI DUNG SÁNG KIẾN
1 Sự cần thiết, mục đích của việc thực hiện sáng kiến:
1.1 Sự cần thiết của việc thực hiện sáng kiến:
Hiện tại môn Tin học là môn học tự chọn cho các cấp Tiểu học và Trung học Cơ sở Trong khung chương trình môn tin của cấp THCS trong đó khối 8 nói riêng thì ngôn ngữ lập trình pascal đã được lựa chọn để giảng dạy
Để học sinh có được kiến thức cơ bản nhất về cấu trúc lặp trong ngôn ngữ lập trình pascal, thì các em phải hiểu tác dụng, ý nghĩa của các lệnh cơ bản Các lệnh cơ bản cần thiết ở đây bao gồm một số lệnh như: Lệnh Nhập dữ liệu, lệnh Gán dữ liệu, lệnh Rẽ nhánh, lệnh Lặp Trong các lệnh cơ bản trên thì lệnh Lặp là lệnh thường xuyên được sử dụng để viết chương trình cho các bài tập quan trọng của môn tin học lớp 8, nhưng qua thực tế nhiều năm giảng dạy thì tôi thấy đây là lệnh khó hiểu và khó vận dụng nhất đối với các em học sinh Vì lệnh Lặp đòi hỏi
ở học sinh tính tư duy logic cao và muốn áp dụng được câu lệnh Lặp vào giải các bài toán thì không phải là chuyện dễ
Vì vậy để giúp học sinh lớp 8 trường THCS Thị Trấn Tam Đường hiểu được câu lệnh Lặp và vận dụng câu lệnh đó viết chương trình cho các bài toán, tôi
mạnh dạn nghiên cứu và đưa ra sáng kiến kinh nghiệm “Một số phương pháp giúp học sinh lớp 8 học tốt dạng bài cấu trúc lặp ở trường THCS Thị Trấn Tam Đường”.
1.2 Mục đích của việc thực hiện sáng kiến:
Giúp học sinh giảm áp lực, dễ hiểu và tăng hiệu quả nắm bắt kiến thức một cách logic và có hệ thống khi học dạng bài cấu trúc lặp trong lập trình pascal Đặc biệt là tăng chất lượng đại trà, tăng tỷ lệ học sinh khá, giỏi và giảm
tỷ lệ học sinh yếu môn tin học lớp 8 ở trường THCS Thị Trấn Tam Đường
Trang 42 Phạm vi triển khai thực hiện:
Học sinh khối lớp 8 trường THCS Thị Trấn Tam Đường - huyện Tam Đường - tỉnh Lai Châu
3 Mô tả sáng kiến
3.1 Mô tả giải pháp trước khi tạo ra sáng kiến:
3.1.1 Thực trạng:
Trong những sáng kiến có những phương pháp dạy môn tin thì chưa có sáng kiến nào nghiên cứu hoặc nghiên cứu nhưng không phù hợp với đối tượng học sinh vùng miền tại đơn vị trường cũng như tại huyện
Khi chưa áp dụng sáng kiến, để đánh giá học sinh qua các giải pháp cũ trước đây tôi đưa ra một số bài tập khảo sát như sau:
+ Bài 1: Hãy viết chương trình in ra màn hình tổng các số tự nhiên từ 1
tới 2016, lưu bài với tên “tinhtong16.pas”
+ Bài 2: Hãy viết chương trình in ra màn hình tổng các số tự nhiên từ 1
tới N, với N được nhập từ bàn phím? Lưu bài với tên “baitap1.pas”
Qua thực tế các lớp dạy ở năm học trước 2015-2016, mức độ kiến thức về Câu lệnh lặp của các em được giáo viên khảo sát có kết quả như sau:
Tổng HS
Biết (có câu lệnh lặp)
Hiểu (hoạt động của lệnh
lặp)
Vận dụng mức đơn giản
Qua kết qua khảo sát cho thấy rằng đa số học sinh chỉ đạt ở mức biết có câu lệnh lặp (đạt 87,3%), còn để hiểu được câu lệnh lặp hoạt động như thế nào thì còn rất nhiều học sinh chưa nắm được (chiếm 20,6%), số học sinh vận dụng được câu lệnh lặp ở mức độ dễ thì càng ít hơn (đạt 71,4%) Trong khi chuẩn kiến thức kĩ năng yêu cầu:
+ Hiểu cấu trúc lặp gồm hai dạng câu lệnh lặp;
+ Viết chương trình có câu lệnh lặp For do và While do
Trang 5+ Hiểu ý nghĩa của các câu lệnh trong chương trình.
Vì vậy để học sinh hiểu và vận dụng được tốt hơn câu lệnh lặp, tôi đã nghiên cứu, thực hiện có hiệu quả và xin đưa ra sáng kiến kinh nghiệm “Một số phương pháp giúp học sinh lớp 8 học tốt dạng bài cấu trúc lặp ở trường THCS Thị Trấn Tam Đường” nhằm giúp các em nắm được kiến thức bài học theo chuẩn kiến thức, kỹ năng yêu cầu
3.1.2 Ưu điểm của giải pháp cũ:
Nhà trường có cơ sở vật chất khang trang, phòng máy và trang thiết bị phục vụ cho công tác dạy và học tương đối đầy đủ
Giáo viên bộ môn tin học còn khá trẻ, có năng lực, nhiệt tình trong công tác giảng dạy
Một số học sinh có tố chất thông minh có khả năng tiếp thu tốt, có điều kiện thực hành tại nhà, say mê môn học
3.1.3 Nhược điểm của giải pháp cũ:
Khi làm quen với câu lệnh lặp đòi hỏi học sinh phải có kiến thức tốt về toán học Đối với đa số học sinh lớp 8 nói chung thì đây là lệnh tương đối khó, còn đối với các học sinh trung bình và yếu nói riêng thì đây giống như là mê cung đối với các em, cụ thể như: Học sinh chưa 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; Chưa hiểu 2 dạng cấu trúc lặp; Chưa biết vận dụng từng loại cấu trúc lặp vào từng tình huống cụ thể; Khi viết chương trình có sử dụng câu lệnh lặp thì còn lúng túng và phải viết đi viết lại nhiều lần
Vì vậy sẽ rất khó để các em nắm được các kiến thức cần thiết theo chuẩn kiến thức kỹ năng đề ra
3.2 Mô tả giải pháp sau khi có sáng kiến:
3.2.1 Tính mới:
Qua quá trình nghiên cứu và thực hiện sáng kiến kinh nghiệm giúp giáo viên tự trau dồi kiến thức, kinh nghiệm, đổi mới phương pháp dạy lập trình như:
“Chọn ví dụ mở đầu phải phù hợp với đối tượng sinh; Minh họa các vòng lặp bằng bảng giá trị trực quan; Một số điểm khác nhau giữa lệnh Lặp For do và
Trang 6While do”, đã tạo cho học sinh sự tự tin khi học lập trình giúp cho học sinh có
thể nắm bắt kiến thức một cách logic và có hệ thống Từ đó giúp cho học sinh phát triển trí tuệ, rèn luyện khả năng lao động sáng tạo, tham gia giờ học tích cực và đặc biệt là yêu thích, hứng thú trong việc tiếp cận với lập trình Pascal, một trong các môn học thường được cho là “khô khan” Sự khác biệt của giải pháp mới so với giải pháp cũ là tăng chất lượng đại trà, tăng tỷ lệ học sinh khá giỏi và giảm tỷ lệ học sinh yếu của môn tin học lớp 8 ở trường THCS Thị Trấn
3.2.2 Các giải pháp mới áp dụng:
Qua kinh nghiệm của bản thân tôi nhận thấy để giúp học sinh lớp 8 học tốt lập trình pascal cần thực hiện tốt các biện pháp sau:
Chọn ví dụ mở đầu phải phù hợp với đối tượng học sinh:
Đây là một trong những vấn đề quan trọng nhất khi dạy bài mới, bởi vì ví
dụ mở đầu rất quan trọng: Ví dụ mở đầu đó có thể vừa khơi gợi lại kiến thức bài
cũ vừa đặt vấn đề dẫn dắt cho nội dung bài mới cần tìm hiểu Nếu ví dụ mở đầu
mà khó sẽ gây áp lực ban đầu cho học sinh, các em thấy khó sẽ không hứng thú tìm hiểu bài Ngược lại bài toán mở đầu quá dễ sẽ khiến học sinh chủ quan và cảm thấy nhàm chán mà không kích thích được tính tò mò, ham học hỏi của học sinh Do đó, ở đầu tiết học của bài mới giáo viên cần phải chọn ví dụ mở đầu phù hợp với trình độ tiếp thu của đối tượng học sinh nhằm thu hút được sự chú
ý, kích thích tính khám phá tìm hiểu kiến thức của học sinh
Đối với câu lệnh lặp trong sách giáo khoa Tin học 8 có đưa ra bài toán làm
ví dụ mở đầu giới thiệu hai dạng cấu trúc lặp như sau:
Ví dụ 1: Giả sử ta cần vẽ ba hình vuông có cạnh 1 đơn vị, mỗi hình vuông
là ảnh dịch chuyển của hình vuông bên trái nó một khoảng cách 2 đơn vị
Ví dụ 2: Chúng ta biết rằng, nếu n (n > 0) càng lớn hơn thì 1/n càng nhỏ,
nhưng luôn luôn lớn hơn 0 Với giá trị nào của n thì 1/n < 0.005 hoặc 1/n
<0.003?
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 bài toán và khó khăn khi viết
Trang 7thuật toán cũng như chương trình cho ví dụ này 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
Vì vậy tôi xin đưa ra một số ví dụ khác có thể chọn để làm ví dụ mở đầu thay thế cho ví dụ trên ở sách giáo khoa như sau:
+) Đối với dạng Cấu trúc lặp – Câu lệnh lặp với số lần biết trước:
Ví dụ 1: Viết chương trình in ra màn hình 10 dòng chữ "Chao cac ban, toi
la Pascal"
Chương trình như sau:
Program Vi_du1;
Uses Crt;
Begin
Clrscr;
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Writeln(‘Chao cac ban, toi la Pascal’);
Readln;
End
Đánh giá: Khi viết chương trình này học sinh phải viết đầy đủ và lặp lại
mười lần dòng lệnh “Writeln(‘Chao cac ban, toi la Pascal’);” nên sau đó học
sinh dễ dàng rút ra được nhận xét là: Chương trình trên phải viết lặp lại một lệnh nhiều lần nên rất mất thời gian và gây nhàm chán cho người lập trình
Thông qua ví dụ này đã làm nổi bật nội dung trọng tâm của bài học: 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,
Trang 8nếu sử dụng cách viết như trên thì mất nhiều thời gian và gây nhàm chán cho người lập trình Đồng thời từ ví dụ trên đã tạo cho học sinh hứng thú muốn tìm
ra phương pháp để giải quyết vấn đề nêu trên, từ đó giáo viên giới thiệu cấu trúc lặp để giải quyết vấn đề này
Ví dụ 2: Cần đổ đầy một bể chứa có thể chứa tối đa 100 lít nước bằng một cái ca có thể tích là 2 lít
Giáo viên cho học sinh quan sát hình sau (hình 1) kết hợp đặt vấn đề bằng một số câu hỏi như sau:
? Các em hãy cho biết muốn đổ đầy bể chứa trên ta phải đổ vào đó bao nhiêu ca nước
? Hoạt động nào được thực hiện lặp đi lặp lại nhiều lần
? Hoạt động đổ nước được lặp với số lần biết trước hay chưa biết trước
+)Đối với dạng Cấu trúc lặp - Câu lệnh lặp với số lần chưa biết trước:
Ví dụ 1: Cần đổ đầy một bể chứa có thể chứa tối đa 100 lít nước bằng một
cái ca chưa biết thể tích
Trang 9Giáo viên cho học sinh quan sát hình sau (hình 2) kết hợp đặt vấn đề bằng một số câu hỏi như sau:
? Các em hãy cho biết muốn đổ đầy bể chứa trên ta phải đổ vào đó bao nhiêu ca nước
? Hoạt động nào được thực hiện lặp đi lặp lại nhiều lần
? Hoạt động đổ nước được lặp với số lần biết trước hay chưa biết trước
Đánh giá: Với cách lấy ví dụ gần gũi với đời sống giúp học sinh hứng
thú, dễ hiểu và dễ dàng xác định được là ở hình 1 sẽ là vòng lặp với số lần biết trước và ở hình 2 sẽ là vòng lặp với số lần chưa biết trước
Ví dụ 2: Viết thuật toán nhập lần lượt từng số nguyên từ bàn phím và tính
tổng của các số đã nhập và lưu vào biến T Khi nào nhập vào số 0 thì dừng chương trình và in tổng của các số đã nhập ra màn hình
Giáo viên lấy ví dụ minh họa thực hiện bài toán với bộ dữ liệu(1; 9; 5; 0): Ban đầu nhập vào số 1(tổng ban đầu sẽ bằng 1), máy sẽ thông báo nhập số tiếp theo, tiếp tục nhập vào số 9(tổng mới sẽ bằng 10), máy thông báo nhập số tiếp theo, tiếp tục nhập số 5(tổng mới sẽ bằng 15), tiếp tục nhập số tiếp theo là 0 thì chương trình sẽ dừng lại và thông báo tổng các số đã nhập vào là 15 ra màn hình
Giáo viên cho học sinh thảo luận cách làm và cùng học sinh đưa ra thuật toán như sau:
Trang 10Bước 1: Tổng Tß0;
Nhập 1 số đưa vào X;
Bước 2: Nếu X <> 0 thì T ß T + X, ngược lại chuyển đến bước 4;
Bước 3: Nhập giá trị mới đưa vào X và Quay lại Bước 2;
Bước 4: Dừng chương trình và in giá trị Tổng T ra màn hình.
Đánh giá: Từ thuật toán trên, học sinh dễ dàng rút ra được nhận xét: Bài
toán trên lặp lại việc nhập một số X và cộng X vào Tổng T nhiều lần, với số lần
là chưa xác định trước, cho đến khi nhập vào số 0 thì dừng lại, suy ra bài toán này có dạng lặp với số lần chưa biết trước Từ các ví dụ trên đã tạo cho học sinh hứng thú muốn tìm ra phương pháp để giải quyết vấn đề nêu trên từ đó giáo viên giới thiệu cấu trúc lặp với số lần chưa biết trước
Minh họa các vòng lặp bằng bảng giá trị trực quan:
Để vận dụng được câu lệnh lặp vào viết chương trình cho bài toán thì yêu cầu trọng tâm là học sinh phải hiểu được nguyên tắc hoạt động của từng dạng câu lệnh lặp khác nhau Điều cần thiết là phải có phương pháp để học sinh nhớ được nguyên tắc hoạt động của từng dạng câu lệnh lặp mà không phải học thuộc lòng rồi sau đó ít lâu sẽ quên Để giúp học sinh dễ dàng tiếp thu và nắm chắc nguyên tắc hoạt động của từng dạng câu lệnh lặp khác nhau, giáo viên minh họa cách thực hiện vòng lặp qua bảng giá trị trực quan như sau:
+)Về câu lệnh lặp For do (minh họa dạng For tiến)
Ví dụ 1: For i:= 1 To 4 Do writeln('Chao cac ban');
Mô phỏng thực hiện lệnh For do qua bảng như sau:
Vòng lặp
thứ
Giá trị biến đếm i = Câu lệnh được thực hiện
Kết quả (Hiển thị ra màn hình)
Chao cac ban Chao cac ban Chao cac ban
Trang 11Ví dụ 2: Sau khi thực hiện đoạn chương trình sau giá trị của X bằng bao
nhiêu?
X := 0;
For i := 0 to 3 do X := X + 2;
Kết quả: Sau 4 bước lặp giá trị của biến X = 8
+)Về câu lệnh lặp While do
Ví dụ 1: Cần tìm tích N (N1=1*2; N2=2*3;… cho đến khi (N>100) thì
dừng
Ta có thuật toán như sau:
Bước 1 : Nß1; iß2;
Bước 2 : Trong khi N ≤ 100 thì NßN*i; ißi+1; Ngược lại, chuyển
tới bước 4
Bước 4 : In kết quả, kết thúc thuật tuán.
Ta mô phỏng thực hiện lệnh While do qua bảng sau:
Điều kiện N≤100 Câu lệnh được thực hiện Kết quả
N=1≤100: Đúng N:=N*i;i:=i+1; N=1*2i=2+1=3
N=2≤100: Đúng N:=N*i;i:=i+1; N=2*3=6i=3+1=4
N=6≤100: Đúng N:=N*i;i:=i+1; N=6*4=24i=4+1=5
N=24≤100: Đúng N:=N*i;i:=i+1; N=24*5=120i=5+1=6
N=120≤100: Sai Dừng vòng lặp While N = 120
Kết quả cuối cùng: N=120
Như vậy việc thực hiện phép nhân ở thuật toán trên được lặp lại với số lần
Trang 12chưa biết trước, phụ thuộc vào một điều kiện (N≤100) và chỉ dừng lại khi điều kiện đó sai
Qua các ví dụ trên, giáo viên kết luận lệnh While do thực hiện theo Sơ đồ khối như sau:
Đánh giá: Qua các ví dụ minh họa nguyên tắc hoạt động của câu lệnh lặp
được thể hiện thông qua bảng giá trị như trên, đa số học sinh hiểu và nắm được nguyên tắc hoạt động của hai dạng câu lệnh lặp For do và While do từ đó học sinh dễ dàng vận dụng được câu lệnh lặp phù hợp để viết chương trình cho yêu cầu của các bài toán
Sự khác nhau giữa lệnh Lặp For do và While do
Giáo viên cần củng cố thêm cho học sinh các điểm chính của hai lệnh lặp For do và While do, để học sinh khắc sâu hơn nữa, cũng như để phân biệt sự khác nhau giữa hai dạng câu lệnh lặp và vận dụng từng dạng vào giải các bài toán cụ thể
Một số điểm khác nhau của For do và While do:
- Cú pháp:
For (biến đếm):= (giá trị đầu) To (giá trị
cuối) Do (câu lệnh);
- Cú pháp:
While (điều kiện) Do (Câu lệnh);
- Biết trước số lần lặp - Không biết trước số lần lặp
- Thực hiện lặp lại câu lệnh sau "Do" với số
vòng lặp bằng: (giá trị cuối – giá trị đầu +1)
- Thực hiện lặp lại câu lệnh sau
"Do" cho đến khi điều kiện sai thì
Điều kiện
sai
Đúng Câu lệnh