Sáng kiến kinh nghiệm Sử dụng câu lệnh lặp để viết chương trình trong ngôn ngữ lập trình Pascal ở môn Tin Học 8
I. Cơ sở lý luận :
- Muốn học tập đạt kết quả tốt, ngoài việc bản thân học sinh tích cực học tập, không thể thiếu vai trò hướng dẫn dìu dắt của người thầy.
- Để giúp học sinh dễ dàng hơn trong việc lập trình giải quyết các bài toán mang tính lặp ở bộ môn Tin học vừa đúng với nguyên tắc dạy học ở trường Phổ Thông, vừa đúng theo tinh thần đổi mới phương pháp dạy học hiện nay, nhằm hình thành cho học sinh tính tích cực, độc lập, sáng tạo, nâng cao năng lực phát triển và giải quyết vấn đề, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm tin và thích thú học tập cho học sinh. Hiện nay, không ít học sinh lười, học tập thụ động và có không ít phụ huynh thiếu sự quan tâm đến việc học của con em mình. Vì vậy, việc hệ thống các kiến thức về câu lệnh lặp để giải một số bài tập phải được chú ý đúng mức.
II. Cơ sở thực tiễn:
Trong quá trình giảng dạy, chúng tôi nhận thấy Pascal là môn học khó đối với các em học sinh Khối 8, vì có một số thuật toán các em chưa được học ở bộ môn Toán, thêm vào đó là các em chỉ sử dụng các câu lệnh bằng Tiếng Anh để thể hiện khi lập trình. Do đó việc học tập của học sinh vẫn còn mang tính mơ hồ, như bị ép buộc, có nhiều học sinh rất sợ môn Tin học 8 vì tính chất khô khan, khó hiểu trong môn học.
Từ thực tế đó chúng tôi không ngừng học hỏi để tìm ra biện pháp khắc phục. Bằng kinh nghiệm trong những năm qua, chúng tôi đã đưa ra những tóm lược cơ bản nhất của các câu lệnh lặp và một số ví dụ mẫu vận dụng cấu trúc lặp để giải quyết có hiệu quả là nhằm giúp học sinh tiếp thu bài nhanh, nhớ kiến thức lâu hơn và cảm thấy hứng thú trong học tập.
SỬ DỤNG CÂU LỆNH LẶP ĐỂ VIẾT CHƯƠNG TRÌNH TRONG NGÔN NGỮ LẬP TRÌNH PASCAL Ở MÔN TIN HỌC 8 A. MỞ ĐẦU: I. Cơ sở lý luận : - Muốn học tập đạt kết quả tốt, ngoài việc bản thân học sinh tích cực học tập, không thể thiếu vai trò hướng dẫn dìu dắt của người thầy. - Để giúp học sinh dễ dàng hơn trong việc lập trình giải quyết các bài toán mang tính lặp ở bộ môn Tin học vừa đúng với nguyên tắc dạy học ở trường Phổ Thông, vừa đúng theo tinh thần đổi mới phương pháp dạy học hiện nay, nhằm hình thành cho học sinh tính tích cực, độc lập, sáng tạo, nâng cao năng lực phát triển và giải quyết vấn đề, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm tin và thích thú học tập cho học sinh. Hiện nay, không ít học sinh lười, học tập thụ động và có không ít phụ huynh thiếu sự quan tâm đến việc học của con em mình. Vì vậy, việc hệ thống các kiến thức về câu lệnh lặp để giải một số bài tập phải được chú ý đúng mức. II. Cơ sở thực tiễn: Trong quá trình giảng dạy, chúng tôi nhận thấy Pascal là môn học khó đối với các em học sinh Khối 8, vì có một số thuật toán các em chưa được học ở bộ môn Toán, thêm vào đó là các em chỉ sử dụng các câu lệnh bằng Tiếng Anh để thể hiện khi lập trình. Do đó việc học tập của học sinh vẫn còn mang tính mơ hồ, như bị ép buộc, có nhiều học sinh rất sợ môn Tin học 8 vì tính chất khô khan, khó hiểu trong môn học. Từ thực tế đó chúng tôi không ngừng học hỏi để tìm ra biện pháp khắc phục. Bằng kinh nghiệm trong những năm qua, chúng tôi đã đưa ra những tóm lược cơ bản nhất của các câu lệnh lặp và một số ví dụ mẫu vận dụng cấu trúc lặp để giải quyết có hiệu quả là nhằm giúp học sinh tiếp thu bài nhanh, nhớ kiến thức lâu hơn và cảm thấy hứng thú trong học tập. III. Đối tượng và phạm vi của chuyên đề Đối tượng: Giáo viên Tin học và học sinh lớp 8 trường THCS Võ Trường Toản Phạm vi: Các tiết dạy có sử dụng câu lệnh lặp trong lập trình ở chương trình Tin học lớp 8. Tổ chức thực hiện: Được áp dụng ngay sau khi tổ chức chuyên đề. B. NỘI DUNG: I. Thực trạng: 1. Thuận lợi: * Nhà trường: - Được sự quan tâm của ban lãnh đạo nhà trường, tạo mọi điều kiện cho giáo viên trong quá trình giảng dạy. - Nhà trường có các trang thiết bị cần thiết phục vụ cho dạy và học như: phòng máy vi tính, máy chiếu... * Giáo viên: - Được phân công dạy đúng chuyên môn được đào tạo. - Đội ngũ giáo viên trẻ, nhiệt tình, yêu nghề, luôn luôn học hỏi những giáo viên có nhiều kinh nghiệm hơn và tìm cách đổi mới phương pháp dạy học để có kết quả giảng dạy cao nhất. * Học sinh: - Đa số có ý thức học tập, hứng thú trong các tiết học thực hành của môn Tin học. - Một số học sinh có tư duy tốt, có kiến thức Toán vững vàng, ham học hỏi, tìm tòi, sáng tạo trong học tập. * Phụ huynh: - Phần lớn phụ huynh quan tâm đến việc học tập của con em mình. 2. Khó khăn: * Nhà trường: - Cơ sở vật chất chưa đầy đủ nên khó khăn cho quá trình dạy và học - Nhà trường có hai phòng máy vi tính nhưng số lượng và chất lượng còn hạn chế nên học sinh không có điều kiện thực hành tốt. * Học sinh: - Ngôn ngữ lập trình là nội dung còn mới và tương đối khó với học sinh THCS nên các em thường không có hứng thú với môn học này. - Một số học sinh có kiến thức về môn Toán chưa tốt nên gặp nhiều khó khăn khi viết thuật toán. - Một số thuật toán các em chưa được học ở môn Toán. * Phụ huynh: - Đa số phụ huynh có điều kiện còn khó khăn nên không có máy tính cá nhân để cho con em mình thực hành thêm ở nhà. - Một số phụ huynh chưa thực sự quan tâm đến việc học tập của con em mình. II . CÁC BIỆN PHÁP CHUNG: 1/ Xây dựng kế hoạch giảng dạy: - Ngay từ đầu năm học, giáo viên phải hướng dẫn phương pháp học tập và nề nếp học ở phòng máy cho học sinh. - Giáo viên chia nhóm học tập cho học sinh, phân nhóm trưởng, hướng dẫn cách hoạt động nhóm và trang bị sổ tay ghi chép cá nhân của học sinh. - Giáo viên cần đầu tư nghiên cứu, mỗi năm cập nhật những phương pháp mới của đồng nghiệp để tích luỹ kinh nghiệm cho việc giảng dạy. - Giáo viên cần dành một thời lượng thích hợp cho việc tổng hợp kiến thức và hướng dẫn học sinh cách nhớ kiến thức cơ bản vừa học ở các tiết học lý thuyết. Cũng như cách tìm hiểu ý nghĩa của mỗi lệnh trong các bài thực hành. - Học sinh phải chuẩn bị đồ dùng học tập, học và làm bài đầy đủ trước khi đến lớp. - Kết hợp với giáo viên Toán để giúp học sinh hiểu hơn một số thuật toán mới và có thể thay thế những thuật toán đơn giản, dễ hiểu hơn. 2/ Một số giải pháp thực hiện: a. Cấu trúc lặp với lệnh FOR...DO: - Tác dụng: Dùng để xây dựng chu trình với số lần lặp xác định. - Cú pháp: For := to do ; Trong đó: + For, to, do là các từ khóa. + Biến đếm có kiểu nguyên. + Giá trị đầu và giá trị cuối là các giá trị nguyên và giá trị cuối phải lớn hơn hoặc bằng giá trị đầu. + Câu lệnh có thể là câu lệnh đơn giản hay câu lệnh ghép. * Nguyên lý hoạt động cấu trúc For: Bước 1. Biến đếm nhận giá trị đầu. Bước 2. Kiểm tra xem giá trị của biến đếm còn nhỏ hơn giá trị cuối hay không Bước 3. Nếu việc kiểm tra: - Cho giá trị sai câu lệnh sẽ bị bỏ qua. - Cho giá trị đúng: + Thực hiện câu lệnh sau từ khóa do. + Tăng giá trị của biến đếm lên 1 (biến đếm:=biến đếm + 1) + Quay trở lại bước 2 b. Cấu trúc lặp với lệnh WHILE...DO: - Tác dụng: Dùng để xây dựng chu trình với số lần lặp chưa xác định trước. - Cú pháp: While do ; Trong đó: + while, do là các từ khóa. + Điều kiện trả về 1 trong 2 giá trị đúng hoặc sai. + Câu lệnh : có thể là câu lệnh đơn hoặc câu lệnh ghép. Nguyên lý hoạt động: Bước 1: Kiểm tra điều kiện. Bước 2: 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 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. Nhận xét: - Câu lệnh được thực hiện lặp đi lặp lại cho đến khi nhận giá trị sai. Câu lệnh sẽ không được thực hiện lần nào nếu nhận giá trị sai ngay từ khi bắt đầu vào chương trình. - Trong thân chương trình phải có câu lệnh làm thay đổi giá trị của để tránh xảy ra vòng lặp vô hạn. c. Một số ví dụ: * Ví dụ 1: So sánh câu lệnh lặp với số lần chưa biết trước và câu lệnh lặp với số lần biết trước. Mục đích: Giúp cho học sinh phân biệt được hai câu lệnh này từ đó biết cách sử dụng câu lệnh cho phù hợp với từng bài toán cụ thể. Sự khác biệt giữa câu lệnh lặp với số lần lặp biết trước và câu lệnh lặp với số lần lặp chưa biết trước là ở các điểm sau đây: a) Câu lệnh lặp với số lần lặp biết trước chỉ thị cho máy tính thực hiện một lệnh hoặc một nhóm lệnh với số lần đã được xác định từ trước, còn với câu lệnh lặp với số lần lặp chưa biết trước thì số lần lặp chưa được xác định trước. b) Trong câu lệnh lặp với số lần cho trước, điều kiện là giá trị của một biến đếm có giá trị nguyên đã đạt được giá trị lớn nhất hay chưa. c) Trong câu lệnh lặp với số lần biết trước, câu lệnh được thực hiện ít nhất một lần, sau đó kiểm tra điều kiện. Trong câu lệnh lặp với số lần chưa xác định trước, trước hết điều kiện được kiểm tra. Nếu điều kiện được thoả mãn, câu lệnh mới được thực hiện. Do đó có thể có trường hợp câu lệnh hoàn toàn không được thực hiện. * Ví dụ 2: Tính tổng S = 1 +2 + 3 + .... + n Thuật toán: Bước 1: S ß 0, i ß 0. Bước 2: i ß i+1. Bước 3: Nếu i≤ n, thì S ß S +i và quay lại bước 2 Bước 4: Thông báo kết quả và kết thúc thuật toán. Nhận xét: Đối với bài toán này thì có thể sử dụng câu lệnh lặp For .. do và While..do Chương trình: Sử dụng vòng lặp For .. do Var i, n,S: Integer; Begin Write('Hay nhap vao so nguyen n='); Readln(n); S:=0; For i:=1 to n do S:= S + i; Writeln( ' Tong S =', S ); Readln; End. Chương trình: Sử dụng vòng lặp While .. do Var i, n,S: Integer; Begin Write('Hay nhap vao so nguyen n='); Readln(n); S:=0; i:= 0; While i< n do Begin i:=i+1; S:= S + i; End; Writeln( ' Tong S =', S ); Readln; End. * Ví dụ 3: Đọc vào n số thực, tìm Max của chúng Thuật toán tìm Max trong một dãy số: - Giả sử Max=1 - Duyệt toàn bộ dãy số, nếu thấy số nào lớn hơn Max thì lấy số đó làm Max. Sau khi duyệt xong dãy số, ta sẽ có Max là số lớn nhất. Nhận xét: Dãy số có một số lượng hữu hạn các số. Ta có thể biết được số lượng từ khi bắt đầu thực hiện thuật toán. Đối với bài toán này thì chúng ta có thể sử dụng cả hai câu lệnh For..do và While..do Chương trình program tim_max; uses crt; var n,i:integer; max,x:real; Begin clrscr; write('N=');readln(n); max:=1; for i:=1 to n do begin write('Nhap so thu',i,':');readln(x); if Max<x then max:=x; end; writeln('Max=',max:8:2); readln; End. program tim_max; uses crt; var n,i:integer; max,x:real; Begin clrscr; write('N=');readln(n); max:=1;i:=1; while i<n do begin write('Nhap so thu',i,':');readln(x); if Max<x then max:=x; i:=i+1; end; writeln('Max=',max:8:2); readln; End - Tuy nhiên, với For..do thì câu lệnh ngắn gọn và dễ hiểu hơn vì không phải gán giá trị đầu cho biến đếm và lệnh tăng giá trị của biến đếm. - Thích hợp cho việc sử dụng cấu trúc FOR..TO..DO để thực hiện. * Ví dụ 4: Tìm bội số chung nhỏ nhất của hai số nguyên dương Thuật toán: Lấy một trong hai số lần lượt nhân với 1, 2, 3,... cho đến khi nào tích số chia hết cho số thứ hai thì tích số chính là BSCNN Nhận xét: - Thuật toán cho thấy là trong quá trình tính toán, không thể biết trước được quá trình nhân phải thực hiện lặp lại bao nhiêu lần. Trường hợp này phải sử dụng cấu trúc lặp với số lần lặp chưa biết trước. - Điều kiện để dừng là tích số chia hết cho số thứ hai Chương trình Program Boisochungnhonhat; Var Bscnn, n, m, k: Integer; Begin Write(‘m= ‘); Readln(m); Write(‘n= ‘); Readln(n); bscnn := m; k := 2; While (BSCNN mod n 0) do Begin BSCNN := k*m; k:= k + 1; End; Writeln(‘BSCNN = ‘, BSCNN); Readln; End. C. KẾT LUẬN – KIẾN NGHỊ: Kết quả đạt được: - Giáo viên có thể lựa chọn được thuật toán cũng như cấu trúc lặp phù hợp để giới thiệu cho học sinh, giúp học sinh tiếp thu bài tốt hơn. - Khi các em chưa hiểu nguyên lý hoạt động của các dạng câu lệnh lặp, các em thường viết chương trình theo kiểu “soạn thảo” từ sách giáo khoa. Do đó, khả năng vận dụng của các em chưa được phát huy. Sau khi được hướng dẫn kỹ về cấu trúc lặp, các em đã mạnh dạn vận dụng và giải quyết được nhiều bài tập khó, nâng cao khả năng tư duy, làm toán và lập trình một cách hiệu quả. 2.Bài học kinh nghiệm: a. Ưu điểm: - Kích thích động cơ học tập của học sinh. - Nâng cao chất lượng dạy và học. b. Nhược điểm: - Một số học sinh yếu kém mất kiến thức căn bản ở môn Toán, thêm vào đó có một số thuật toán các em chưa được học trong chương trình, nên giáo viên phải kiên trì, nhẫn nại, thậm chí mất nhiều thời gian trong việc hướng dẫn các thuật toán cho học sinh. 3. Ý kiến đề xuất: Trên đây là tóm lược nội dung cú pháp, cách thực hiện các câu lệnh thuộc cấu trúc lặp và phân tích trên ngôn ngữ lập trình Pascal, một số ví dụ của các bài toán điển hình cho từng dạng lặp cụ thể mà bản chúng tôi đã đúc kết được trong quá trình giảng dạy môn Tin học ở trường. Qua đó giúp học sinh và đồng nghiệp có thể làm tài liệu tham khảo trong quá trình học tập và giảng dạy của mình có hiệu quả. Trong phạm vi là một chuyên đề có thể việc phân tích về nội dung câu lệnh và ví dụ về các dạng lệnh có thể chưa thật chi tiết và phong phú rất mong nhận được sự góp ý chân thành từ quý đồng nghiệp, học sinh để chuyên đề được hoàn thiện hơn. Vũng Tàu, ngày 25 tháng 2 năm 2019 Nhóm Tin học MỤC LỤC Trang MỞ ĐẦU Cơ sở lí luận 1 II. Cơ sở thực tiễn 1 III. Đối tượng và phạm vi của chuyên đề 1. Đối tượng 2 2. Phạm vi 2 3. Tổ chức thực hiện 2 B. NỘI DUNG 3 Thực trạng Thuận lợi 3 Khó khăn 3 Các biện pháp chung 3 1. Xây dựng kế hoạch giảng dạy 3 2. Một số giải pháp thực hiện a. Cấu trúc lặp với lệnh FOR...DO: 3 b. Cấu trúc lặp với lệnh WHILE...DO: c. Một số ví dụ 4 C. KẾT LUẬN – KIẾN NGHỊ: Kết quả đạt được: 7 Bài học kinh nghiệm: 8 Ý kiến đề xuất: 8
Tài liệu đính kèm:
- sang_kien_kinh_nghiem_su_dung_cau_lenh_lap_de_viet_chuong_tr.doc