Sáng kiến kinh nghiệm THPT: Rèn luyện kĩ năng, vận dụng và phát triển tư duy lập trình bằng cách phân tích, mở rộng các bài toán đơn giản
lượt xem 7
download
Mục đích chính của sáng kiến "Rèn luyện kĩ năng, vận dụng và phát triển tư duy lập trình bằng cách phân tích, mở rộng các bài toán đơn giản" là giới thiệu đến giáo viên và học sinh một số bài toán cơ bản, phân tích và mở rộng các bài toán đó để học sinh dần hình thành các kiến thức nâng cao: Phát triển tư duy lập trình, giúp các em học giỏi môn Tin Học đạt kết quả cao.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Sáng kiến kinh nghiệm THPT: Rèn luyện kĩ năng, vận dụng và phát triển tư duy lập trình bằng cách phân tích, mở rộng các bài toán đơn giản
- SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN TRƯỜNG THPT NGHI LỘC 4 SÁNG KIẾN KINH NGHIỆM ĐỀ TÀI “RÈN LUYỆN KĨ NĂNG, VÂN DỤNG VÀ PHÁT TRIỂN TƯ DUY LẬP TRÌNH BẰNG CÁCH PHÂN TÍCH VÀ MỞ RỘNG CÁC BÀI TOÁN ĐƠN GIẢN” Lĩnh vực: Tin Học Thực hiện:Trần Thị Thủy Chức vụ: Giáo viên Số điện thoại: 0848919111 Emai: tttpdl@gmail.com Nghệ An năm 2022
- SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN SÁNG KIẾN KINH NGHIỆM ĐỀ TÀI “RÈN LUYỆN KĨ NĂNG, VÂN DỤNG VÀ PHÁT TRIỂN TƯ DUY LẬP TRÌNH BẰNG CÁCH PHÂN TÍCH VÀ MỞ RỘNG CÁC BÀI TOÁN ĐƠN GIẢN” Lĩnh vực: Tin Học Năm học: 2021 - 2022 2
- MỤC LỤC PHẦN 1. MỞ ĐẦU ............................................................................................... 1 1. Lý do chọn đề tài ........................................................................................... 1 2. Mục đích nghiên cứu ..................................................................................... 1 3. Nhiệm vụ ....................................................................................................... 1 4. Đối tượng nghiên cứu .................................................................................... 2 5. Phương pháp nghiên cứu ............................................................................... 2 6. Phạm vi nghiên cứu ....................................................................................... 2 7. Những đóng góp mới của đề tài .................................................................... 2 PHẦN 2. NỘI DUNG NGHIÊN CỨU ................................................................ 3 1. Cơ sở lý luận .................................................................................................. 3 2. Cơ sở thực tiễn ............................................................................................... 3 3. Các biện pháp sử dụng để giải quyết vấn đề ................................................. 3 3.1. Chủ đề về số nguyên tố ........................................................................... 3 3.1.1. Khái niệm ......................................................................................... 3 3.1.2. Bài toán cơ bản................................................................................. 4 3.1.3. Bài toán nâng cao cấp độ 1 .............................................................. 4 3.1.4. Bài toán nâng cao cấp độ 2 .............................................................. 6 3.1.5. Đánh giá thuật toán .......................................................................... 7 3.1.6. Các bài toán giao về nhà .................................................................. 8 3.2. Chủ đề về dãy số ................................................................................... 12 3.2.1. Dãy Fibonaci .................................................................................. 12 3.2.2. Mảng một chiều ............................................................................. 14 3.2.3. Đánh giá các thuật toán .................................................................. 24 3.2.4. Bài tập về nhà ................................................................................. 26 3.3. Chủ đề về xâu ....................................................................................... 28 3.3.1. Bài toán cơ bản............................................................................... 28 3.3.2. Bài toán nâng cao cấp độ 1 ............................................................ 30 3.3.3. Bài toán nâng cao cấp độ 2 ............................................................ 35 3.3.4. Bài tập giao về nhà ......................................................................... 39 3.4. Đánh giá ................................................................................................ 41
- 4. Bài toán áp dụng .......................................................................................... 42 4.1. ƯỚC NGUYÊN TỐ ............................................................................. 42 4.2. SUBARR .............................................................................................. 42 4.3. QUÀ TẶNG .......................................................................................... 43 4.4. TỔ TÌNH NGUYỆN ............................................................................. 44 4.5. XÂU TƯƠNG ĐƯƠNG ....................................................................... 45 5. Kết quả đạt được .......................................................................................... 45 PHẦN 3. KẾT LUẬN VÀ KIẾN NGHỊ .......................................................... 48 1. Kết luận........................................................................................................ 48 2. Kiến nghị ..................................................................................................... 48 TÀI LIỆU THAM KHẢO ................................................................................. 50
- DANH MỤC TỪ VIẾT TẮT VIẾT TẮT VIẾT ĐẦY ĐỦ THPT Trung học phổ thông HSG Học sinh giỏi SGK Sách giáo khoa NNLT Ngôn ngữ lập trình SKKN Sáng kiến kinh nghiệm
- PHẦN 1. MỞ ĐẦU 1. Lý do chọn đề tài Theo chương trình giáo dục phổ thông 2018 được Bộ Giáo dục và Đào tạo ban hành kèm Thông tư số 32/2018/TT-BGDĐT ngày 26/12/2018, môn tin học có triết lí cốt lõi tạo ra một thế hệ mới có tư duy áp dụng công nghệ trong giải quyết các vấn đề thực tế. Vì vậy, những kiến thức về phần giải thuật và lập trình đóng vai trò quan trọng trong chương trình tin học ở bậc Trung học phổ thông. Để rèn luyện kỹ năng lập trình cho học sinh khá, giỏi trước khi chọn đội tuyển đi thi HSG môn Tin học có rất nhiều cách mà giáo viên có thể áp dụng đối với các đối tượng học sinh khác nhau. Tuy nhiên trong cùng một trường với các đối tượng học sinh khác nhau giáo viên có thể áp dụng nhiều biện pháp khác nhau để rèn luyện kỹ năng lập trình cho học sinh với hiệu quả khác nhau. Trong quá trình dạy để chọn đội tuyển, bồi dưỡng học sinh giỏi Tỉnh nhiều năm liền tôi đã chọn lựa ra một số dạng bài toán từ SGK cơ bản và phát triển thêm thành các bài toán nâng cao để mở rộng phạm vi kiến thức giúp học sinh dần dần hình thành các kiến thức nâng cao. Trên cơ sở đó tôi đã mạnh dạn nghiên cứu và lựa chọn đề tài “Rèn luyện kĩ năng, vận dụng và phát triển tư duy lập trình bằng cách phân tích, mở rộng các bài toán đơn giản”. 2. Mục đích nghiên cứu Mục đích chính của sáng kiến là giới thiệu đến giáo viên và học sinh một số bài toán cơ bản, phân tích và mở rộng các bài toán đó để học sinh dần hình thành các kiến thức nâng cao: - Phát triển tư duy lập trình, giúp các em học giỏi môn Tin Học đạt kết quả cao. - Tạo ra nguồn tài liệu tham khảo về thuật toán hỗ trợ cho học sinh, giáo viên dạy Tin học bậc THPT. - Sử dụng NNLT C++ và Python trong chương trình giáo dục phổ thông mới. 3. Nhiệm vụ Đề tài có nhiệm vụ giải đáp các câu hỏi khoa học sau đây: - Học sinh có giải quyết được các bài toán đơn giản. - Giáo viên mở rộng các bài toán đó như thế nào cho phù hợp với năng lực học sinh. - Những tình huống nào thường gặp trong quá trình dạy học theo phương pháp này. - Học sinh gặp những khó khăn nào trong quá trình dạy học theo phương 1
- pháp này. - Các kỹ năng học sinh đạt được nhờ phương pháp dạy học này. - Kết quả thực nghiệm như thế nào. 4. Đối tượng nghiên cứu - Học sinh tham gia bồi dưỡng học sinh giỏi Tin học. - Hệ thống các bài tập từ cơ bản đến nâng cao theo từng chủ đề. 5. Phương pháp nghiên cứu - Phương pháp điều tra, nghiên cứu tài liệu. - Phương pháp phân tích, tổng hợp. - Phương pháp khảo sát thực tiễn. - Phương pháp tổng kết kinh nghiệm. 6. Phạm vi nghiên cứu Hệ thống lại các bài tập từ đơn giản đến mức độ tăng dần bằng việc mở rộng các bài toán đó giúp đạt hiệu quả cao trong quá trình chọn đội tuyển và bồi dưỡng học sinh giỏi môn Tin học. 7. Những đóng góp mới của đề tài - Qua một số năm làm công tác dạy học và bồi dưỡng học sinh giỏi môn tin học tôi thấy dạy học theo phương pháp này học sinh hứng thú học hơn, chất lượng học sinh được tăng lên đáng kể, nhiều học sinh sau khi học theo phương pháp này đã tự giải quyết được các bài toán khó trong các đề thi cấp tỉnh, tin học không chuyên... - Đề tài sẽ làm phong phú hơn các phương pháp day học môn tin học tại các trường trung học phổ thông hiện nay. 2
- PHẦN 2. NỘI DUNG NGHIÊN CỨU 1. Cơ sở lý luận Xây dựng hệ thống các bài tập theo các chủ để chính, mỗi chủ đề có thể chia thành một hoặc nhiều buổi dạy tuỳ vào từng đối tượng học sinh của mình. Hệ thống các bài tập của mỗi chủ đề theo các mức độ từ cơ bản đến mức độ khó tăng dần tuy nhiên hệ thống bài tập phải liên quan và phải vận dụng được các bài tập cơ bản để giải quyết các bài toán khó hơn. Cụ thể mỗi chủ đề được thực hiện theo các bước: Bước 1: Giới thiệu lí thuyết cơ bản của chủ đề Bước 2: Chọn bài toán cơ bản hoặc bài toán quen thuộc với học sinh để học sinh lập trình (thường là các bài toán trong sách giáo khoa). Bước 3: Mở rộng bài toán nâng cao ở cấp độ 1 (chỉ cần học sinh lập trình được mà chưa cần quan tâm đến các yếu tố như: quan tâm đến các yếu tố đặc biệt của dữ liệu vào, thời gian, phạm vi giá trị của biến…) Bước 4: Mở rộng bài toán nâng cao ở cấp độ 2 (quan tâm đến các yếu tố như: các trường hợp đặc biệt của dữ liệu vào, phạm vi giá trị của các biến, thời gian…) Bước 5: Thực hiện chấm các chương trình bằng phần mềm Themis với cùng một bộ test để so sánh thời gian thực hiện của các thuật toán với cùng một bài toán. Bước 6: Phân tích và nhận xét sự tối ưu của thuật toán Bước 7: Mở rộng bài toán để học sinh rèn luyện kỹ năng lập trình và vận dụng các bài tập ở nhà. Thường là những bài toán tương đương đề học sinh giỏi cấp Tỉnh. 2. Cơ sở thực tiễn Nhiều học sinh có suy nghĩ môn lập trình rất khó và không phải là môn thi tốt nghiệp, đại học nên các em ít lựa chọn tham gia đội tuyển chọn HSG Tỉnh Qua công tác dạy học nhiều năm tại trường tôi thấy đa số học sinh đều gặp không ít khó khăn trong việc xác định thuật toán để giải một bài toán. Việc giải các bài toán cơ bản trong sách giáo khoa các em có thể giải quyết được tuy nhiên vận dụng để giải các bài toán khó hơn lại gặp rất nhiều khó khăn. Nhiều giáo viên đang lúng túng trong việc chọn học sinh có kĩ năng và tư duy lập trình để bồi dưỡng thêm. 3. Các biện pháp sử dụng để giải quyết vấn đề 3.1. Chủ đề về số nguyên tố 3.1.1. Khái niệm Số nguyên tố là số tự nhiên lớn hơn 1 không phải là tích của hai số tự nhiên nhỏ hơn. Nói cách khác, số nguyên tố là những số chỉ có đúng hai ước số là 1 và chính nó. Các số tự nhiên lớn hơn 1 không phải là số nguyên tố được gọi là hợp số. 3
- 3.1.2. Bài toán cơ bản Bài toán: Viết chương trình nhập vào từ bàn phím số nguyên N, Kiểm tra và thông báo ra màn hình N là số nguyên tố hoặc N không là số nguyên tố. Nhận xét: Đây là bái toán cơ bản mà học sinh đã được làm quen ở bài 4: Bài toán và thuật toán lớp 10. Học sinh có thể vận dụng khái niệm của số nguyên tố để đưa ra các thuật toán. Tuy nhiên cách được giới thiệu trong SGK Tin học 10 là tối ưu nhất. Chương trình cụ thể như sau: C++ Python #include import math #include def check_prime_number(n): using namespace std; flag = 1; bool check(int n) { if (n
- Nhận xét: Khi học sinh đã hiểu và thực hiện được thuật toán kiểm tra số nguyên tố thì học sinh hoàn toàn có thể thực hiện được thuật toán này khi học đến nội dung mảng một chiều. Thuật toán mà nhiều học sinh lựa chọn nhất là duyệt từ đẩu đến cuối mảng, với mỗi phần tử kiểm tra xem có phải số nguyên tố không. Nếu đúng thì đếm tăng lên 1. Chương trình cụ thể như sau: C++ Python #include import math #include def ktnt(n): #include if (n=2): int main() dem=1; { for i in range(3,n+1): ifstream fi("demnt.inp"); if (ktnt(i)): int n;int dem=0; dem=dem+1; fi>>n; i=i+2; ofstream fo("demnt.out"); print(dem) for (int i=2;i
- 3.1.4. Bài toán nâng cao cấp độ 2 Bài toán: Viết chương trình nhập vào từ bàn phím số nguyên N, đếm số nguyên tố nhỏ hơn N. Nhận xét: Dựa theo lý thuyết về số nguyên tố: “Một số nguyên tố là số chỉ có 2 ước là 1 và chính nó”. Do vậy, nếu ta xác định được số x là số nguyên tố thì ta có thể kết luận mọi số chia hết cho x đều không phải là số nguyên tố. Do đó ta đã loại bỏ được rất nhiều số mà không cần kiểm tra. Nguyên lí hoạt động của sàng là vào mỗi lần duyệt, ta chọn một số nguyên tố và loại ra khỏi sàng tất cả các bội của số nguyên tố đó mà lớn hơn số đó. Sau khi duyệt xong, các số còn lại trong sàng đều là số nguyên tố. Mã giả (Pseudo Code): B1: Đánh dấu tất cả các số đều là số nguyên tố. B2: Với mỗi số nguyên tố nhỏ hơn N B3: Đánh dấu các bội lớn hơn nó là số nguyên tố. Chương trình cụ thể như sau: C++ Python #include def sieve(n): #include prime = [True for i in range(n+1)] #include p=2 using namespace std; while (p*p>n; prime[1] = False bool check[n+1] = {}; for p in range(n+1): for(int i=2;i
- check[j] = 1; } } } int dem=0; for(int i=2;i
- 3.1.6. Các bài toán giao về nhà 3.1.6.1. Thừa số nguyên tố Bài toán: Cho số tự nhiên 2
- 3.1.6.2. Số nguyên tố tương đương Bài toán: Hai số gọi là nguyên tố tương đương nếu chúng có cùng các ước số nguyên tố. Ví dụ 15 và 75 là các số nguyên tố tương đương. Bởi vì 15=3*5 trong khi 75=3*5^2, có cùng ước số nguyên tố là 3 và 5. Tương tự 12=2^2*3 và 18=2*3^2 là hai số nguyên tố tương dương vì có cùng hai ước số nguyên tố là 2 và 3. Tuy nhiên 12 và 60 ko nguyên tố tương đương vì 12=2^2*3 và 60=2^2*3*5, 60 có ước số nguyên tố 5 trong khi 12 không có. Cho trước hai số tự nhiên M và N. Hãy viết chương trình kiểm tra các số này có là nguyên tố tương đương với nhau không? Cài đặt thuật toán: C++ Python #include import sys #include def SNT(n): using namespace std; kt=True typedef int Mang[1001]; if n
- for (int j=2;j
- 3.1.6.3. Số siêu nguyên tố Bài toán: Số siêu nguyên tố là số: Bản thân nó là số nguyên tố. Khi xóa đi lần lượt các chữ số sau cùng của nó, thì số mới vẫn là số nguyên tố. Ví dụ 2393 là số siêu nguyên tố vì 2393, 239, 23, 2 là số nguyên tố. Cho một số n, hãy đưa dãy số siêu nguyên tố nhỏ hơn hoặc bằng n, các số đã được sắp xếp tăng dần. Cài đặt thuật toán: C++ Python #include def isPrime(n): #include if n
- int k = q.front()*10 + i; if ( k
- if ((n==1 || n==2)) print(Fibo(n)) return 1; return (fibo(n-1)+fibo(n-2)); } int main() { int n; coutn; cout
- } memo=[None]*(n+1) int main() return Fibo(n,memo) { n=int(input("
- long long max=a[0]; csmax=i csmax=0; print("GTLN=",max," tai vi tri for(int i=1;i
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Sáng kiến kinh nghiệm THPT: Phương pháp rèn luyện kĩ năng sử dụng Atlat và thực hành biểu đồ Địa lí lớp 12
26 p | 157 | 15
-
Sáng kiến kinh nghiệm THPT: Rèn kỹ năng cảm thụ văn xuôi Việt Nam hiện đại trong chương trình Ngữ văn 12
27 p | 39 | 9
-
Sáng kiến kinh nghiệm THPT: Một số hình thức tổ chức rèn luyện kỹ năng vận dụng kiến thức phần Sinh học tế bào – Sinh học 10, chương trình Giáo dục Phổ thông 2018 vào thực tiễn cho học sinh lớp 10 trường THPT Vĩnh Linh
23 p | 17 | 7
-
Sáng kiến kinh nghiệm THPT: Rèn luyện kỹ năng phát âm thông qua hoạt động lồng tiếng phim tiếng Anh cho học sinh lớp 10A4 trường THPT Yên Mô B
32 p | 19 | 6
-
Sáng kiến kinh nghiệm THPT: Hệ thống bài tập Hóa học rèn kĩ năng vận dụng kiến thức vào thực tiễn trong chương trình Hóa học THPT
47 p | 15 | 6
-
Sáng kiến kinh nghiệm THPT: Một số phương pháp giáo dục kỹ năng sống hiệu quả khi dạy phần đạo đức môn Giáo dục công dân lớp 10
11 p | 117 | 6
-
Sáng kiến kinh nghiệm THPT: Rèn luyện kỹ năng vận dụng kiến thức thực tiễn cho học sinh qua nội dung Hàng hóa - Giáo dục công dân 11
31 p | 43 | 6
-
Sáng kiến kinh nghiệm THPT: Một số kinh nghiệm rèn kĩ năng viết đoạn văn nghị luận xã hội cho học sinh lớp 12 ở trường THPT Vĩnh Linh
20 p | 16 | 5
-
Sáng kiến kinh nghiệm THPT: Dạy học theo nhóm góp phần giáo dục và rèn luyện kĩ năng sống cho học sinh
10 p | 14 | 5
-
Sáng kiến kinh nghiệm THPT: Rèn kĩ năng làm bài đọc hiểu văn bản trong đề thi trung học phổ thông Quốc gia
61 p | 16 | 4
-
Sáng kiến kinh nghiệm THPT: Rèn luyện kỹ năng giải toán bằng phương pháp lượng giác hóa
39 p | 19 | 4
-
Sáng kiến kinh nghiệm THPT: Rèn luyện kỹ năng sử dụng thao tác lập luận bác bỏ trong văn nghị luận cho học sinh THPT
60 p | 43 | 4
-
Sáng kiến kinh nghiệm THPT: Rèn luyện kỹ năng làm bài một số loại câu giao tiếp trong đề thi THPT Quốc gia được lồng vào tiết dạy phụ đạo cho học sinh lớp 12 trường THPT Lý Tự Trọng
24 p | 56 | 4
-
Sáng kiến kinh nghiệm THPT: Tổ chức hoạt động trải nghiệm sáng tạo với chủ đề dạy học: Giáo dục địa phương để rèn luyện kỹ năng thuyết trình, đọc hiểu văn bản Bài ca ngất ngưởng của Nguyễn Công Trứ cho học sinh lớp 11 THPT
81 p | 63 | 4
-
Sáng kiến kinh nghiệm THPT: Phương pháp giải bài tập Nhị thức Newtơn
40 p | 41 | 3
-
Sáng kiến kinh nghiệm THPT: Rèn kỹ năng làm văn thuyết minh qua hoạt động tìm hiểu làng nghề truyền thống và di tích lịch sử tại địa phương
12 p | 65 | 3
-
Sáng kiến kinh nghiệm THPT: Rèn luyện kĩ năng giải các bài toán cực trị hàm số cho học sinh lớp 12 THPT
49 p | 34 | 2
-
Sáng kiến kinh nghiệm THPT: Rèn luyện năng lực độc lập của học sinh qua việc sử dụng sơ đồ tư duy trong dạy học chương nhóm Halogen lớp 10 trung học phổ thông
39 p | 30 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn