Sử dụng ngôn ngữ lập trình Scratch để giải các bài toán bậc THCS

doc19 trang | Chia sẻ: Đào Đào | Ngày: 11/02/2026 | Lượt xem: 8 | Lượt tải: 0download
Bạn đang xem nội dung Sử dụng ngôn ngữ lập trình Scratch để giải các bài toán bậc THCS, để tải tài liệu về máy bạn hãy click vào nút TẢI VỀ
 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
 Độc lập – Tự do – Hạnh phúc
 THUYẾT MINH MÔ TẢ GIẢI PHÁP
 VÀ KẾT QUẢ THỰC HIỆN SÁNG KIẾN
 1. Tên sáng kiến: "Sử dụng ngôn ngữ lập trình Scratch để giải các bài toán 
 bậc THCS".
 2. Ngày sáng kiến được áp dụng lần đầu: tháng 09/2024.
 3. Các thông tin cần bảo mật (nếu có): Không có
 4. Mô tả các giải pháp cũ thường làm:
 4.1. Thực trạng.
 - Trong các năm học vừa qua việc để nâng cao chất lượng bồi dưỡng đội 
tuyển HSG môn Tin học cực kỳ khó khăn, để giảng dạy cho học sinh đặc biệt là 
việc giảng dạy đội tuyển HSG thì việc mô tả, hướng đẫn cho học sinh học và 
giải các bài toán cơ bản của THCS để cho học sinh hiểu và chuyển đổi sang 
ngôn ngữ lập trình là điều cực kì khó khăn, đặc biệt là việc hướng dẫn cách giải, 
mô tả cách giải các bài tập đặc biệt là lập trình thì việc mô tả thuật toán của các 
bài tập đó để học sinh dễ hiểu, nắm được nguyên tắc để giải bài toán và rèn kỹ 
năng làm bài cho học sinh là vô cùng quan trọng. Đây là vấn đề không mới 
nhưng góp phần rất lớn vào kết quả của việc giải bài toán bằng một ngôn ngữ 
lập trình nào đó mà học sinh biết. Chất lượng bài làm của học sinh sẽ không đạt 
kết quả như mong đợi khi chưa đưa ra được việc mô tả thuật toán và cách rèn kĩ 
năng sử dụng các câu lệnh cho học sinh. Đa số giáo viên trong quá trình giảng 
dạy chỉ hướng dẫn các em học sinh tập trung giải bài tập để đi đến kết quả của 
bài toán mà chưa chú ý nhiều đến kĩ năng làm bài và việc sử dụng các câu lệnh 
cho học sinh dẫn tới việc chủ quan trong quá trình làm bài, nên khi làm bài học 
sinh chạy chương trình thì gặp rất nhiều lỗi, điểm số đạt được điểm chưa cao.
 1 4.2. Hạn chế 
 * Về phía giáo viên:
 - Sự quan tâm đổi mới phương pháp của giáo viên giảng dạy bộ môn Tin 
học chưa đồng đều, chưa có nhiều giáo viên dạy chuyên bộ môn Tin học mà vẫn 
là giáo viên dạy các môn Toán - Tin, Lý - Tin, Công nghệ - Tin ... nên thực sự 
giảng dạy đi vào chiều sâu, chưa hướng dẫn giải thích cho học sinh hiểu được 
cặn kẽ, cụ thể, đôi khi trong giảng dạy còn qua loa, hình thức. Việc thực hiện tiết 
dạy của giáo viên vẫn chưa thật sự hấp dẫn lôi cuốn học sinh; còn nhiều học sinh 
thụ động trong việc tiếp thu kiến thức dẫn đến giờ học kém hiệu quả.
 + Giáo viên còn hạn chế trong phương pháp dạy học, ngại đổi mới và việc 
sử dụng đồ dùng, phương tiện dạy học chưa thường xuyên.
 + Giáo viên giảng dạy chưa thực sự quan tâm sâu sát, chưa nghiên cứu tài 
liệu để nâng cao trình độ chuyên môn, chưa gần gũi nắm bắt tâm tư tình cảm và 
kịp thời chia sẻ với học sinh những khó khăn vướng mắc của học sinh.
 - Đa số tâm lý phụ huynh học sinh và các em học sinh vẫn coi bộ môn Tin 
học là môn tự chọn hoặc sau này học lên Đại học rồi mới học cũng chưa muộn 
nên chưa chú ý, tập trung nhiều cho bộ môn trong quá trình học tập và học đội 
tuyển tin học ở cấp THCS nên giáo viên rất gặp khó khăn khi chọn học sinh vào 
đội tuyển.
 * Học sinh:
 - Trường THCS Hoàng Hoa Thám được nằm ở trung tâm thị trấn, đa số 
gia đình các em học sinh đều là những hộ kinh doanh hoặc bố mẹ đi làm công 
ty, công nhân ở các huyện khác nên sáng đi tối đêm mới về nên không quan tâm 
được nhiều đến việc học tập của các con, các em còn mải chơi nên dẫn đến còn 
nhiều hạn chế trong học tập.
 - Học sinh sống trong thời đại CNTT, công nghệ số nên có quá nhiều cám 
dỗ dẫn đến học sinh lơ là trong học tập, không đặt mục tiêu học tập lên hàng 
đầu. Chỉ nghĩ ngồi vào máy tính là chơi Game, là lướt mạng xã hội ...
 2 - Một số học sinh còn lười học, ham chơi, vô cảm với kết quả học tập, một 
 bộ phận học sinh không có động lực phấn đấu học tập bộ môn nào và cũng 
 không có động lực học để mong muốn trở thành học sinh khá, giỏi.
 - Một số học sinh chưa thực sự đam mê học tập, thiếu tập trung.
 - Học sinh bị phân tán bởi một số câu lạc bộ văn hóa và thể thao khác.
 - Học sinh sợ theo học đội tuyển bộ môn Tin học ở lớp 8,9 tốn mất nhiều 
 thời gian nên các em không có nhiều thời gian để ôn thi vào cấp 3 THPT. 
5. Sự cần thiết phải áp dụng giải pháp sáng kiến:
 Trong thời đại hiện nay CNTT không còn là điều mới mẻ hay xa lạ với 
 các em học sinh, đặc biệt máy tính điện tử đã chở thành những công cụ hỗ trợ 
 giúp con người trong mọi lĩnh vực như: trong dạy học, hội thảo, sản xuất, kinh 
 doanh và đặc biệt là trong đời sống xã hội. Chính vì vậy việc dạy tin học ở các 
 cấp nhà trường như: Tiểu học, THCS, THPT có vai trò hết sức quan trọng vì 
 việc giáo dục đó là nhằm trang bị, chuẩn bị cho thế hệ trẻ Việt Nam về mặt tri 
 thức, kỹ năng, về mặt năng lực, trí tuệ và các phẩm chất cần thiết giúp học sinh 
 thích ứng với thời đại 4.0 chuẩn bị bước sang thời đại 5.0. Giúp cho học sinh 
 sau khi tốt nghiệp nắm được một số kiến thức cơ bản của tin học. Xét về mặt 
 năng lực, trí tuệ: Giúp phát triển nhiều phương thức, tư duy liên hệ mật thiết 
 với việc sử dụng kỹ thuật xử lý thông tin như: tư duy thuật toán, tư duy điều 
 khiển, tư duy ngôn ngữ,... Ðồng thời hình thành và phát triển năng lực hoạt 
 động trí tuệ nói chung như phân tích, tổng hợp, khái quát hóa, trừu tượng 
 hóa,... Để xử lí thông tin tốt và để nâng cao năng lực học tập cho học sinh thì 
 việc chọn và học một ngôn ngữ lập trình là một nhiệm vụ hết sức quan trọng. 
 Từ những suy nghĩ đó tôi chọn đề tài sáng kiến kinh kiệm với nội dung “Sử 
 dụng ngôn ngữ lập trình Scratch để giải các bài toán bậc THCS”.
 Dạy lập trình cho học sinh THCS là giúp các em có cơ hội phát triển khả 
 năng tư duy, óc sáng tạo theo sở thích riêng. Các em sẽ vô cùng hứng thú và tự 
 tin trước những sản phẩm do chính mình thiết kế ra. Khi học lập trình, các em 
 phải vận dụng đa dạng kiến thức ở nhiều bộ môn khác nhau như Toán, Lý, Hóa, 
 Sinh, Ngoại ngữ, khoa học kĩ thuật, Mỹ thuật Qua đó sẽ giúp các em gia tăng 
 sự am hiểu, phân tích sự vật sự việc, kích thích tư duy logic, sáng tạo và phát 
 triển kĩ năng giải quyết vấn đề.
 3 Tuy nhiên, việc lựa chọn ngôn ngữ lập trình phù hợp với học sinh THCS 
 cũng là một vấn đề khó khăn, bởi đa số các phần mềm lập trình đều khá phức 
 tạp, khó hiểu với những hàng code dài và phức tạp, giao diện lập trình không 
 thân thiện, dễ gây nhàm chán cho các em học sinh khối THCS. Cú pháp câu lệnh 
 hoàn toàn là tiếng Anh cũng là một rào cản lớn với các em. Thêm vào đó chưa 
 có tính thực tiễn nên không gây được hứng thú cho học sinh THCS.
 Thao tác lập trình trong Scratch đơn giản hơn ngôn ngữ lập trình Pascal 
 và một số ngôn ngữ lập trình khác. Thay vì phải nắm rõ các nguyên tắc viết 
 code thì các em chỉ cần kéo thả câu lệnh có sẵn. Scratch có rất nhiều các khối 
 lệnh và sử dụng rất linh hoạt nên có thể giúp các em tạo ra các chương trình 
 theo chủ đề như: câu chuyện, trò chơi, âm nhạc, đồ họa, giải các bài toán 
 THCS các em có thể tạo ra các sản phẩm để phục vụ mục đích học tập bộ 
 môn khác. Từ đó việc học tập các môn học sẽ trở lên hứng thú, đơn giản và dễ 
 dàng hơn.
 Để tiếp tục hoàn chỉnh chuyên đề cho học sinh làm quen với một ngôn 
 ngữ lập trình và bồi dưỡng HSG Tin học “Sử dụng ngôn ngữ lập trình Scratch 
 để giải các bài toán bậc THCS”; qua quá trình nghiên cứu, giảng dạy, tham 
 khảo ý kiến đồng nghiệp, tôi thấy rằng đa số các đề thi HSG của cấp Huyện, cấp 
 Tỉnh thì đề thi có các dạng như: Số học, Xâu ký tự, Mảng 1 chiều, Mảng 2 
 chiều, Đệ quy. Các bài toán lập trình trong tin học về số học, thường đề cập 
 nhiều đến số nguyên tố, xử lí trên các số nguyên tố. Chính vì để các em giải 
 được các bài toán đó tôi chọn viết sáng kiến “Sử dụng ngôn ngữ lập trình 
 Scratch để giải các bài toán bậc THCS”.
 Học sinh biết cách xác định Input, Output, mô tả thuật toán, làm mịn dần 
 bài toán lập trình từ đó được giảm bớt những khó khăn, lo ngại khi học lập trình, 
 đặc biệt là các bài toán khó. Thấy được vai trò của ứng dụng CNTT trong học 
 tập và quản lý.
6. Mục đích của giải pháp sáng kiến:
 - Phân loại được các dạng bài tập, đưa ra phương pháp giả rõ ràng, dễ hiểu.
 - Xác định được mục tiêu, nội dung dạy học, phù hợp với đổi mới phương 
 pháp dạy, theo định hướng phát triển năng lực, phẩm chất của học sinh.
 - Rèn cho học sinh kỹ năng giải các bài toán bằng ngôn ngữ lập trình.
 4 7. Nội dung:
 7.1. Thuyết minh giải pháp mới hoặc cải tiến
 - Tên giải pháp: "Sử dụng ngôn ngữ lập trình Scratch để giải các bài 
toán bậc THCS".
 Thông qua quá trình d￿y đ￿i tuy￿n Tin h￿c c￿a trư￿ng THCS Hoàng Hoa 
Thám tôi đã nghiên cứu, giảng dạy và tham khảo ý kiến đồng nghiệp, tôi thấy 
rằng đa số các đề thi HSG của cấp Huyện, cấp Tỉnh thì đề thi có các dạng như: 
Số học, Xâu ký tự, Mảng 1 chiều, Mảng 2 chiều, Đệ quy. Các bài toán lập trình 
trong tin học về số học, thường đề cập nhiều đến số nguyên tố, xử lí trên các 
số nguyên tố. Chính vì để các em giải được các bài toán đó tôi chọn viết sáng 
kiến “Sử dụng ngôn ngữ lập trình Scratch để giải các bài toán bậc THCS”.
 Để nâng cao chất lượng ôn thi HSG môn Tin học, qua các nguyên nhân 
hạn chế ở trên tôi đã thực hiện một số biện pháp sau:
 1. Số nguyên tố
 a. Kiến thức cơ bản trong toán học
 * Định nghĩa số nguyên tố
 Một số nguyên p (p>1) là số nguyên tố nếu p có đúng hai ước số là 1 và 
p. Một số nguyên lớn hơn 1 mà không là số nguyên tố được gọi là hợp số.
 Ví dụ: các số nguyên tố là: 2, 3, 5, 7, 11, 13, 17, 
 * Các định lí cơ bản về số nguyên tố
 - Bổ đề 1: Mọi số nguyên lớn hơn 1 đều chia hết cho ít nhất một số 
nguyên tố
 Chứng minh bổ đề 1: Ta dễ dàng chứng minh bằng phương pháp quy nạp.
 - Bổ đề 2: Mọi hợp số có ước thực sự nhỏ hơn hoặc bằng căn bậc hai của nó 
(ước thực sự là ước khác 1 và khác chính nó).
 Chứng minh bổ đề 2: Vì n là hợp số nên ta có: n = a.b với 1 < a, b < n
 Nếu đồng thời a, b > thì n= . <a.b =n (mâu thuẫn)
 Vậy có ít nhất một trong hai số a, b phải nhỏ hơn hoặc bằng 
 Nhận xét: từ bổ đề trên ta có nhận xét sau:
 5 Mỗi hợp số phải có ước nguyên tố nhỏ hơn hoặc bằng căn bậc hai 
của nó.
 - Định lý (Định lý Fecma nhỏ): Nếu p là số nguyên tố và a là số tự nhiên 
thì ap mod p = a.
 * Từ những lý thuyết toán cơ sở trên, ta có thể ứng dụng chúng vào các 
 giải thuật kiểm tra số nguyên tố trong tin học.
 b. Giải pháp kiểm tra số nguyên tố trong tin học
 - Bài toán: Kiểm tra số nguyên dương n có phải là số nguyên tố không?
 - Ý tưởng: Nếu n>1 không chia hết cho số nguyên nào trong tất cả các 
số k chạy từ 2 đến thì n là số nguyên tố.
 - Câu hỏi đầu tiên học sinh sẽ hỏi các thầy cô là: “Tại sao chỉ xét mọi k 
chạy từ 2 đến ”?
 - Thật vậy, theo bổ đề 2, nếu n (n > 1) không phải là số nguyên tố, ta có:
 n=k1k2 mà 2 k1 k2 n-1
 Vì =k1k1 k1k2=n nên k1
 * Giải pháp 1: (Scratch)
 6 Nhận xét: Hàm KTNT(n) tiến hành lần lượt kiểm tra số k trên đoạn 
[2, ].
 Để cải tiến, ta giảm số lần kiểm tra, ta kiểm tra xem có tồn tại một số nguyên 
tố k (2 ) mà k là ước của n thì n không phải là số nguyên tố, ngược lại n là 
số nguyên tố. Thay vì kiểm tra k là số nguyên tố trên đoạn [2, ] ta kiểm tra số k 
có tính chất giống với tính chất của số nguyên tố trong đoạn [2, ]:
 - Tc1. Trừ số 2 và các số nguyên tố là số lẻ
 7 - Tc2. Trừ số 2 và số 3, các số nguyên tố có dạng 6k 1 (vì các số 
dạng 6k 2; 6k 3 chia hết cho 2;3)
 * Giải pháp 2: (Scratch)
 N
hận xét: Với hai giải pháp trên, ta có thể chạy chương trình với n = 10 6, khi n 
lớn (khoảng 107 trở đi) chương trình chạy chậm. Muốn kiểm tra những số 
nguyên lớn có nguyên tố, người ta chuyển sang hướng kiểm tra xác suất. Có 
nhiều thuật toán xây dựng theo hướng này: dựa vào định lý Fermat nhỏ có kiểm 
tra Fermat và kiểm tra Miller-Rabin là tiêu biểu.
 * Giải pháp 3: Kiểm tra nguyên tố dùng định lý Fecmat nhỏ
 - Ý tưởng:
 Lặp k lần { 
 + Chọn giá trị ngẫu nhiên a, 2 ≤ a ≤ p-1
 8 + Nếu ap-1 1 (mod p) thì tăng biến đếm c (số lần thừa nhận p có thể là 
nguyên tố), ngược lại thì p là hợp số và thoát.
 }
 Nếu tỉ số c/k > xacsuat thì có thể chấp nhận p là nguyên tố (với xác suất 
sai nhỏ)
 Giải thuật:
 9 Trong giải thuật Hàm KTNT 3 trên, ta có sử dụng Hàm tính lũy 
thừa(x,y,n). Hàm lũy thừa (x,y,n) được viết như sau:
 * Giải pháp 4: Kiểm tra nguyên tố Miller-Rabin
 - Ý tưởng:
 { Phân tích số lẻ n: n-1=d.2s (d lẻ)
 Lặp: ntest lần {
 Chọn a thuộc{2,...,n-1}; 
 Tính x = ad (mod n);
 Nếu (x=1) or (x=n-1) về đầu lặp;
 k=1;
 Lặp: Trong khi k<s {
 x = x2 (mod n);
 Nếu x =1 then n là hợp số, kết thúc;
 Nếu x =n-1: Thoát lặp trong;
 k = k+1;
 }
 Nếu x <> n-1: n là hợp số, kết thúc;
 10 }
 n là nguyên tố
 }
Giải thuật:
 11 2. Sàn số nguyên tố
 - Bài toán: In ra các số nguyên tố trong [1; n].
 - Ý tưởng: Với bài toán này, ta có thể thử lần lượt các số m trong đoạn 
[1; n], rồi kiểm tra tính nguyên tố của m dựa vào các giải thuật trên.
 - Thuật toán:
 - Nhận xét: Cách này đơn giản nhưng chạy chậm; để cải tiến, ta sử dụng 
tính chất của số nguyên tố để loại bỏ trước những số không phải là nguyên tố và 
không cần kiểm tra các số này; ta sử dụng sàn nguyên tố như sàn Eratosthene.
 - Ý tưởng: (sàn nguyên tố Eratosthene)
 Trước tiên xóa bỏ số 1 ra khỏi tập các số nguyên tố; Số tiếp theo số 1 là số 
2, là số nguyên tố, xóa tất cả các bội của 2 ra khỏi bảng. Số đầu tiên không bị 
xóa sau số 2 (số 3) là số nguyên tố, xóa bội của 3, . Thuật toán tiếp tục cho 
đến khi gặp số nguyên tố lớn hơn thì dừng lại. Tất cả các số chưa bị xoá là 
số nguyên tố.
 12 - Thuật toán
 3. Một số bài tập áp dụng
 Bài 1: Nhập một mảng 1 chiều n phần tử. Hãy tổng những số là số nguyên 
tố của mảng và in kết quả ra màn hình.
 Chương trình:
 13 14 Bài 2: (Số nguyên tố vòng) số 993319 là nguyên tố vòng vì các số 
993319, 933199, 331999, 319993, 199933, 999331, đều là số nguyên tố.
 Cho trước hai số nguyên dương a và b. Tìm xem trong đoạn [a;b] có bao 
nhiêu số nguyên tố vòng. Hạn chế: a<b≤106
 15 16 4. Hiệu quả của sáng kiến
 4.1. Minh chứng:
 Qua nhiều năm dạy và bồi dưỡng câu lạc bộ HSG Tin học 8,9 với sự đầu 
tư nghiên cứu của bản thân, tôi đã rút ra được một số kinh nghiệm như sau:
 - Trong quá trình ôn luyện HSG giáo viên cần phân các dạng bài toán cho 
học sinh, hướng dẫn học sinh cách phân tích, xác định bài toán đâu là dữ liệu đã 
cho (Input), đâu là dữ liệu cần tìm (Output); tìm thuật toán cho bài toán; viết 
chương trình và cuối cùng là chạy thử với các kiểu dữ liệu kiểm tra.
 Bằng việc đưa ra một hệ thống các bước thực hiện giải một bài toán kết 
hợp với các bài tập minh họa, cùng với những chú ý khi thực hiện phân tích, tôi 
nhận thấy rằng:
 + Học sinh dễ hiểu, có hứng thú học tập hơn, đặc biệt những học sinh mới 
tham gia CLB có những tiến bộ rõ dệt.
 + Sau khi tiếp cận các biện pháp trên thì các em học tập luôn hăng say tìm 
tòi và vận dụng giải những bài tập khó rất hiệu quả.
 17 4.2. Hiệu quả của giải pháp:
 - Trong năm học 2023-2024, 2024-2025 sau khi áp dụng vào giảng dạy 
 đội tuyển Tin học ở trường THCS Hoàng Hoa Thám với phương pháp theo sáng 
 kiến “Sử dụng ngôn ngữ lập trình Scratch để giải các bài toán bậc THCS” tôi 
 đã kết quả thu được kết quả rất khả quan. Cụ thể:
 + Tỉ lệ học sinh yêu thích môn Tin học được tăng lên nhiều hơn so với 
 những năm học trước.
 + Năm học 2023-2024: 
 (+) Giải Tin học 8 cấp Huyện đạt: 01 giải/01 học sinh dự thi.
 (+) Giải Tin học trẻ cấp Huyện đạt: 01 giải/ 01 học sinh dự thi.
 + Năm học 2024-2025:
 (+) Giải Tin học 8 cấp Huyện đạt: 02 giải.
 (+) Giải Tin học trẻ 8,9 cấp Huyện đạt: 02 giải.
 (+) Giải Tin học trẻ cấp Tỉnh đạt: 01 giải.
7.2. Thuyết minh về phạm vi áp dụng sáng kiến
 - Sáng kiến đã được áp dụng thử tháng 10 năm học 2024 - -2025 tại 
 trường THCS Hoàng Hoa Thám - huyện Yên Thế - tỉnh Bắc Giang.
 - Lĩnh vực áp dụng của sáng kiến: Bồi dưỡng HSG bộ môn Tin học.
 - Phạm vi áp dụng: tại trường THCS Hoàng Hoa Thám - huyện Yên Thế - 
 tỉnh Bắc Giang. Có thể triển khai rộng cho các trường trong huyện cùng nghiên 
 cứu để giảng dạy đội tuyển HSG môn Tin học.
7.3. Thuyết minh về lợi ích kinh tế, xã hội của sáng kiến
 - Nếu thực hiện tốt sẽ giúp cho học sinh có hứng thú, tích cực học bộ môn 
 hơn để từ đó giáo viên có thể hướng dẫn học sinh áp dụng với các chuyên đề 
 khác góp phần nâng cao chất lượng mũi nhọn của bộ môn.
 - Các biện pháp, giải pháp của sáng kiến có tính hiệu quả cao, dễ áp dụng, 
 do đó góp phần quan trọng vào thúc đẩy và không ngừng nâng cao chất lượng 
 bồi dưỡng học sinh giỏi môn Tin học.
 Tôi xin cam đoan mọi thông tin nêu trong bản thuyết trình là trung thực, 
 đúng sự thật và hoàn toàn chịu trách nhiệm trước pháp luật.
 * Cam kết: Chúng tôi cam đoan những điều khai ở trên đây là hoàn toàn 
 đúng sự thật và không sao chép hoặc vi phạm bản quyền.
 18 Xác nhận của cơ quan, đơn vị Tác giả sáng kiến
 (Chữ ký, dấu) (Chữ ký và họ tên)
 Ninh Xuân Dũng
 HỘI ĐỒNG KHOA HỌC CẤP CƠ SỞ
 19

File đính kèm:

  • docsu_dung_ngon_ngu_lap_trinh_scratch_de_giai_cac_bai_toan_bac.doc