Đang tải... (xem toàn văn)
Đề tài “Rèn luyện kĩ năng sử dụng cấu trúc lặp trong lập trình Pascal cho học sinh lớp 11” nhằm cung cấp cho học sinh những kiến thức khái quát hơn về cấu trúc lặp và rèn luyện kỹ năng lập trình cho học sinh thông qua một số bài toán cụ thể.
Trang 1 DANH MỤC CÁC CHỮ VIẾT TẮT 1. THPT: Trung học phổ thông 2. HSG: Học sinh giỏi 3. HS: Học sinh 4. SKKN: Sáng kiến kinh nghiệm 5. NXB: Nhà xuất bản 6. SGK: Sách giáo khoa Trang 2 MỤC LỤC Trang 3 BÁO CÁO KẾT QUẢ NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN LỜI GIỚI THIỆU Một trong những yếu tố quan trọng và khơng thể thiếu của một trương trình là “việc điều khiển”, cụ thể là các cấu trúc điều khiển, cũng là thành tố kết hợp đồng thời giữa dữ liệu và tác vụ. Cấu trúc điều khiển là một trong các đặc trưng cơ bản của phương pháp lập trình cấu trúc. Trong đó người ta sử dụng ba cấu trúc điều khiển để tạo nên logic của chương trình. Mọi vấn đề về logic đều được giải quyết bằng cách sử dụng linh hoạt ba cấu trúc điều khiển là: Cấu trúc tuần tự Cấu trúc rẽ nhánh Cấu trúc lặp Trong chương trình tin học lớp 11, các em học sinh đã được làm quen với lập trình có cấu trúc trong đó có cấu trúc lặp nhưng trong q trình học tập và rèn luyện học sinh vẫn gặp phải một số khó khăn trong lập trình, chưa biết cách tối ưu hóa thuật tốn, thậm chí cịn mắc sai lầm khi lập trình giải các bài tốn có sử dụng cấu trúc lặp. Vì những lý do trên tơi chọn đề tài “Rèn luyện kĩ năng sử dụng cấu trúc lặp trong lập trình Pascal cho học sinh lớp 11” nhằm cung cấp cho học sinh những kiến thức khái qt hơn về cấu trúc lặp và rèn luyện kỹ năng lập trình cho học sinh thơng qua một số bài tốn cụ thể. TÊN SÁNG KIẾN “Rèn luyện kĩ năng sử dụng cấu trúc lặp trong lập trình Pascal cho học sinh lớp 11” TÁC GIẢ SÁNG KIẾN Họ tên: Nguyễn Thị Nụ Địa chỉ: Trường THPT Yên Lạc 2 – Huyện Yên Lạc – Tỉnh Vĩnh Phúc Số điện thoại: 0965170380 E_mail: nunguyen1101@gmail.com CHỦ ĐẦU TƯ SÁNG TẠO RA SÁNG KIẾN Họ tên: Nguyễn Thị Nụ Trình độ chun mơn: Cử nhân Tin Học Đơn vị cơng tác: Trường THPT n Lạc 2 – Huyện n Lạc – Tỉnh Vĩnh Phúc Trang 4 LĨNH VỰC ÁP DỤNG SÁNG KIẾN Rèn luyện kĩ năng sử dụng cấu trúc lặp trong lập trình Pascal giảng dạy mơn Tin học lớp 11 và bồi dưỡng học sinh tham gia kì thi chọn học sinh giỏi các cấp mơn Tin học. NGÀY SÁNG KIẾN ĐƯỢC ÁP DỤNG Từ ngày 01/08/2019 MƠ TẢ BẢN CHẤT CỦA SÁNG KIẾN 7.1 Tổng quan các vấn đề nghiên cứu 7.1.1 Mục đích nghiên cứu Góp phần đổi mới phương pháp dạy học sinh giỏi mơn Tin học theo hướng phát huy tính tích cực, chủ động và sáng tạo của học sinh giúp học sinh tiếp thu tri thức một cách có hiệu quả. Góp phần gây hứng thú học tập mơn Tin học cho học sinh tham gia thi chọn học sinh giỏi, tránh việc học thụ động, học vẹt. Giúp học sinh lĩnh hội tri thức một cách khoa học, củng cố và khắc sâu kiến thức. Qua đề tài này tơi mong muốn cung cấp cho học sinh một những vấn đề mà các em đang gặp phải về kĩ năng sử dụng cấu trúc lặp trong khi lập trình giúp các em chủ động hơn trong học tập, tích luỹ kiến thức, kỹ năng lập trình. 7.1.2 Bản chất đối tượng nghiên cứu Đưa ra hệ thống lý thuyết về cấu trúc lặp và ứng dụng cấu trúc lặp giải các bài tập trong ngơn ngữ lập trình Pascal giúp học sinh lĩnh hội tri thức, giúp các em tích cực, chủ động tích lũy kiến thức. Qua đó, học sinh phát triển được tư duy logic thơng qua hệ thống bài tập giúp các em rèn luyện được tính tự giác, tính kỉ luật, thói quen tự học đó là những đức tính rèn luyện tốt của học sinh. 7.1.3 Đối tượng, phạm vi nghiên cứu Đối tượng: Cấu trúc lặp trong lập trình Phạm vi: Các vấn đề về cấu trúc lặp trong chương trình tin học lập trình trên ngơn ngữ Pascal. 7.1.4 Phương pháp nghiên cứu Phương pháp Nghiên cứu lí luận chung. Khảo sát điều tra thực tế dạy học. Tổng hợp đúc rút kinh nghiệm. Trang 5 Cách thực hiện Trao đổi với đồng nghiệp, tham khảo ý kiến giáo viên cùng bộ mơn. Liên hệ thực tế trong nhà trường, áp dụng và đúc rút kinh nghiệm qua q trình giảng dạy. Thơng qua việc giảng dạy trực tiếp học sinh lớp 11 và học sinh tham gia thi chọn học sinh giỏi mơn Tin học khối 10 tại trường THPT n Lạc 2 năm học 2019 2020 7.1.5 Giới hạn về khơng gian của phương pháp nghiên cứu Đề tài được đề cập với đồng nghiệp và thực nghiệm sư phạm qua các em học sinh lớp 11A2 và các em học sinh tham gia dự kì thi chọn học sinh giỏi mơn Tin học lớp 10 năm học 20192020 7.1.6 Phạm vi nghiên cứu Tơi đã nghiên cứu đề tài này trong suốt q trình giảng dạy và thực nghiệm đề tài này trong năm học 20192020 7.2 Phần nội dung 7.2.1 Cơ sở lý luận Cấu trúc lặp là là một trong ba cấu trúc cơ bản trong lập trình có cấu trúc. Tuy nhiên trước một bài tốn lập trình tin học có các thao tác lặp đi lặp lại nhiều học sinh thường lúng túng, khơng biết nên lựa chọn và sử dụng câu lệnh lặp nào cho phù hợp với u cầu bài tốn và tối ưu hóa thuật tốn? Một số học sinh khá, giỏi có thể sử dụng cấu trúc lặp để mơ tả nhưng đa số chưa biết tối ưu hóa thuật tốn để giảm số lần lặp và điều đó gây tâm lý chán nản cho các em. Với tình hình ấy để giúp học sinh có kĩ năng tốt hơn trong việc sử dụng cấu trúc lặp để mơ tả thuật tốn, thì người giáo viên cần tăng cường rèn luyện cho học sinh kĩ năng sử dụng cấu trúc lặp từ các các bài tốn cơ bản quen thuộc mà các em đã biết, khai thác các yếu tố đặc trưng của một số bài tốn cơ bản để tìm thuật tốn cho các bài tốn mới, dựa vào đặc điểm cụ thể của từng bài tốn để tối ưu hóa thuật tốn. Việc rèn luyện kĩ năng lập trình cho học sinh từ những bài tốn cơ bản để xây dựng thuật tốn cho các bài tốn tương tự hoặc các bài tốn mở rộng từ các bài tốn cơ bản đó là một q trình giúp học sinh rèn luyện kỹ năng lập trình. 7.2.2 Cơ sở thực tiễn Trường THPT n lạc 2 là ngơi trường vùng nơng thơn nằm dưới chân đê dải sơng Hồng nên đa số học sinh chưa có cơ hội, điều kiện tiếp xúc với cơng nghệ và máy tính. Vì vậy, tin học là một mơn học tương đối lạ lẫm và khó đối với học sinh trường tơi. Đặc biệt là chương trình tin học 11, với các em học lập trình cịn khó hơn học tốn, lí, hóa, vì điều kiện cơ sở vật chất của trường cịn nhiều khó khăn, học sinh chỉ học chính khóa trên lớp về nhà lại khơng có máy tính để thực Trang 6 hành. Điều này dẫn đến ý thức tự giác của học sinh chưa cao, đặc biệt là các em học để thi học sinh giỏi lại càng khó. Với đội tuyển học sinh giỏi 10, hầu hết các em đều chưa có bất kì kiến thức cơ bản nào liên quan đến lập trình, gia đình chưa có máy tính để các em thực hành. Vì vậy giáo viên dạy đội tuyển phải bắt đầu rèn luyện cho các em từ những câu lệnh cơ bản nhất. Cơ sở trên đã giúp tơi áp dụng đề tài rèn luyện kĩ năng sử dụng cấu trúc lặp trong lập trình Pascal giảng dạy cho học sinh khối 11 và áp dụng cho học sinh tham dự kì thi chọn học sinh giỏi Tin học 10 tại trường THPT n Lạc 2. 7.2.3 Nội dung cụ thể Tất cả các nội dung, các ví dụ, bài tập trong đề tài này được xây dựng trên ngơn ngữ lập trình Pascal Lặp Xét 2 bài tốn sau đây: Bài tốn 1: Tính và đưa kết quả ra màn hình tổng S = 1+2+3+…+100 Bài tốn 2: Tính và đưa kết quả ra màn hình tổng S = 1+2+3+ +n+… cho đến khi S > 105 Với cả 2 bài tốn trên, dễ thấy cách để tính tổng S có nhiều điểm tương tự: Xuất phát, S được gán giá trị 0; Tiếp theo cơng vào tổng S một giá trị i với i = 1,2,3,4,5,… Việc cộng này được lặp lại một số lần Đối với bài tốn 1, số lần lặp là 100 và việc cộng vào tổng S sẽ kết thúc khi thực hiện cồn việc 100 lần Đối với bài tốn 2, số lần lặp chưa biết trước nhưng việc cộng vào tổng S sẽ kết thúc khi điều kiện S > 105 được thỏa mãn Nói chung, ta thấy trong một số thuật tốn có những thao tác phải lặp đi lặp lại nhiều lần. Cấu trúc lặp mơ tả thao tác lặp được phân biệt 2 loại là 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 Các ngơn ngữ lập trình đều có các câu lệnh để mơ tả cấu trúc lặp Lặp với số lần biết trước và câu lệnh FOR – DO 10 Cú pháp và hoạt động của câu lệnh For – do Có 2 thuật tốn tong1a và tong1b để giải bài tốn 1 như sau: Thuật tốn tong1a Bước 1: S ← 0; i ← 0; Trang 7 Bước 2: i ← i+1; Bước 3: Nếu i 100 thì chuyển đến bước 5; Bước 4: S ← S+i rồi quay lại bước 2; Bước 5: Đưa S ra màn hình rồi kết thúc Trong thuật tốn tong1a, giá trị i khi bắt đầu tham gia vịng lặp là 1 và sau mỗi lần lặp i tăng lên 1 đơn vị cho đến khi i > 100 thì kết thúc lặp (thực hiện 100 lần). Trong thuật tốn tong1b giá trị i khi bắt đầu tham gia vịng lặp là 100 và sau mỗi lần lặp giảm đi 1 cho đến khi i trong câu lệnh for –todo để kết thúc vịng lặp mà kiểm tra = để thực hiện lần lặp cuối cùng. Vì lẽ đó việc can thiệp vào biến đếm có thể gây ra sự cố “vịng lặp vơ tận”. Ngay cả khi biến đã duyệt hết phạm vi của kiể dữ liệu thì biến lại quay lại giá trị 0 và mọi thứ lại tiếp tục… trừ khi gõ CTRL+ Break; + Trong câu lệnh for , được tính từ khi bắt đầu vịng lặp để tính số lần lặp, nên trong vịng lặp dù có câu lệnh thay đổi , thì số lần lặp vẫn khơng thay đổi Sử dụng cấu trúc lặp dạng tiến và dạng lùi như trên để mơ tả q trình lặp trong thuật tốn tong1a và tong1b chương trình có thể được cài đặt như sau: Program tong1a; Var S, i: longint; Begin S:=0; For i:= 1 to 100 do S:= S+i; Write (‘Tong S la: ‘, S); Readln; End Program tong1b; Var S, i: longint; Begin S:=0; For i:= 100 downto 1 do S:= S+i; Write (‘Tong S la: ‘, S); Readln; Trang 9 End 11 Một số ví dụ Ví dụ 1: Viết chương trình in ra các số lẻ nhỏ hơn hoặc bằng n (0105 thì chuyển đến b5 B3: i ← i+1 B4: s = s+i, rồi quay lại b2 B5: Đưa ra S rồi kết thúc b. Code tham khảo Var i, s: longint; Begin S:=0; i:=1; While s= n Do yêu cầu chỉ in các số bé hơn n nên khi in cần thêm một lệnh kiểm tra b. Code tham khảo Program Fi_Bo_na_xi; Trang 25 Var n, F_2,F_1, F: Longint; Begin Write('Nhap n: ');Readln(n); F_1:=1; F_2:=1; Write(F_2,';',F_1,';'); Repeat F:=F_2+F_1; if Fn; R eadln; End Ví dụ 15: Viết chương trình sử dụng vịng lặp while – do tính tổng: S=1 + 2 +…+100 a Ý tưởng Khởi tạo i=1 Sử dụng vịng lặp while – do với điều kiện i100; Write(‘S= ‘,s); Readln End c Nhận xét Cả for do, while do, repeat – until đều là lệnh lặp, nhưng for do chỉ dùng được cho trường hợp lặp với số lần biết trước, while – do, repeat until, tổng qt hơn, có thể dùng cho mọi vịng lặp, nhưng thường sử dụng cho các trường hợp lặp với số lần chưa biết trước Trang 27 Ví dụ 17: Viết chương trình in số lẻ nhỏ hơn bằng số nguyên dương n (0