Sử dụng ngôn ngữ lập trình Scratch để giải các bài toán bậc THCS
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 dy đi tuyn Tin hc ca 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Ở
19File đính kèm:
su_dung_ngon_ngu_lap_trinh_scratch_de_giai_cac_bai_toan_bac.doc



