Rèn luyện kỹ năng lập trình và tư duy qua phân tích bài toán đơn giản

Chuyên khảo toán học phân tích Skkn rèn luyện kĩ năng vân dụng và cải thiện năng lực tư duy lập trình bằng cách phân tích và mở, đánh giá các khía cạnh quan trọng, đề xuất hướng

Trường đại học

Trường THPT Nghi Lộc 4

Chuyên ngành

Tin Học

Người đăng

Ẩn danh

Thể loại

sáng kiến kinh nghiệm

2022

61
3
0

Phí lưu trữ

30 Point

Mục lục chi tiết

MỤC LỤC

1. PHẦN 1

1.1. Lý do chọn đề tài

1.2. Mục đích nghiên cứu

1.3. Phương pháp nghiên cứu

1.4. Phạm vi nghiên cứu

1.5. Những đóng góp mới của đề tài

2. NỘI DUNG NGHIÊN CỨU

2.1. Các biện pháp sử dụng để giải quyết vấn đề

2.1.1. Chủ đề về số nguyên tố

2.1.1.1. Khái niệm
2.1.1.2. Bài toán cơ bản
2.1.1.3. Bài toán nâng cao cấp độ 1
2.1.1.4. Bài toán nâng cao cấp độ 2
2.1.1.5. Đánh giá thuật toán
2.1.1.6. Các bài toán giao về nhà
2.1.1.6.1. Thừa số nguyên tố
2.1.1.6.2. Số nguyên tố tương đương
2.1.1.6.3. Số siêu nguyên tố

2.1.2. Chủ đề về dãy số

2.1.2.1. Khái niệm dãy Fibonaci
2.1.2.2. Bài toán cơ bản
2.1.2.3. Bài toán nâng cao (Fibonaci_QHD)

2.1.3. Mảng một chiều

2.1.3.1. Bài toán cơ bản
2.1.3.2. Bài toán 1: TÌM MAX
2.1.3.3. Bài toán 2: SẮP XẾP NỔI BỌT
2.1.3.4. Bài toán 3: TÌM KIẾM TUẦN TỰ

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Phát triển tư duy lập trình qua phân tích bài toán đơn giản

Bài viết tập trung vào phát triển tư duy lập trình thông qua phân tích bài toán đơn giản. Nội dung nhấn mạnh việc rèn luyện kỹ năng giải quyết vấn đề bằng lập trình, từ đó nâng cao năng lực tư duy logic và hệ thống. Phương pháp được đề xuất là phân tích bài toán thành các bước nhỏ, dễ hiểu, từ cơ bản đến nâng cao. Việc sử dụng các ví dụ cụ thể, minh họa bằng mã nguồn C++ và Python giúp người đọc dễ dàng nắm bắt và áp dụng.

1.1. Phân tích bài toán và thuật toán

Phần này tập trung vào phân tích bài toán. Người đọc sẽ được hướng dẫn cách mô hình hóa bài toán, xác định các thuật toán phù hợp. Các khái niệm như cấu trúc dữ liệu, phương pháp giải bài toán, suy luận logic được trình bày chi tiết. Ví dụ, bài toán tìm số nguyên tố được phân tích thành các bước: nhập số, kiểm tra số nguyên tố, xuất kết quả. Thuật toán kiểm tra số nguyên tố được minh họa bằng mã nguồn C++ và Python. Các bài toán nâng cao, ví dụ tìm số nguyên tố nhỏ hơn N, được giải quyết bằng nhiều thuật toán, sau đó so sánh hiệu quả của chúng. Phân tích thuật toán giúp người đọc hiểu sâu hơn về sự tối ưu của thuật toán. Khả năng giải quyết vấn đề được rèn luyện thông qua việc phân tích, thiết kế và triển khai thuật toán. Lập trình cơ bản là nền tảng để giải quyết các bài toán này. Debug code là một kỹ năng quan trọng cần được rèn luyện.

1.2. Rèn luyện tư duy lập trình qua bài tập

Phần này tập trung vào rèn luyện tư duy lập trình thông qua các bài tập lập trình đơn giản. Bài tập lập trình đơn giản được lựa chọn cẩn thận, tăng dần độ khó, giúp người đọc làm quen với các khái niệm lập trình cơ bản. Các chủ đề như số nguyên tố, dãy số Fibonacci, mảng một chiều được sử dụng làm ví dụ. Mỗi chủ đề bao gồm các bài tập cơ bản, nâng cao cấp độ 1 và nâng cao cấp độ 2. Luyện tập lập trình là chìa khóa để nâng cao tư duy lập trình. Hướng dẫn lập trình được cung cấp thông qua các ví dụ minh họa. Bài tập lập trình cơ bản giúp người đọc làm quen với cú pháp và cấu trúc lập trình. Giải bài toán lập trình đòi hỏi người đọc phải vận dụng tư duy phản biệntư duy hệ thống. Giải quyết vấn đề bằng lập trình là mục tiêu chính của phần này. Cách học lập trình hiệu quả được đề cập thông qua việc phân tích các ví dụ và bài tập. Việc sử dụng C++Python giúp người đọc tiếp cận với nhiều ngôn ngữ lập trình khác nhau. Khắc phục lỗi lập trình là kỹ năng cần thiết trong quá trình luyện tập.

1.3. Đánh giá và ứng dụng thực tiễn

Phần này đánh giá hiệu quả của phương pháp phát triển kỹ năng lập trình thông qua phân tích bài toán đơn giản. Kết quả thực nghiệm được trình bày, chứng minh tính hiệu quả của phương pháp. Đề bài lập trình được thiết kế để phù hợp với năng lực của học sinh. Phân tích thuật toán giúp tối ưu hóa thời gian chạy chương trình. Các bài toán ứng dụng thực tiễn được đưa ra để minh họa giá trị của phương pháp. Học lập trình hiệu quả không chỉ dừng lại ở việc học lý thuyết mà còn đòi hỏi sự luyện tập thường xuyên. Thực nghiệm cho thấy phương pháp này giúp học sinh hứng thú học tập hơn, chất lượng học tập được nâng cao đáng kể. Phát triển kỹ năng lập trình là một quá trình lâu dài, đòi hỏi sự kiên trì và nỗ lực. Thiết kế thuật toán cần được thực hiện cẩn thận để đảm bảo tính chính xác và hiệu quả. Bài viết đóng góp vào việc làm phong phú các phương pháp dạy học môn tin học, giúp giáo viên có thêm tài liệu tham khảo hữu ích. Rèn luyện kỹ năngvận dụng kiến thức là yếu tố quan trọng trong việc thành công.

31/01/2025

Trích đoạn nội dung tài liệu

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 skkn 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 skkn MỤC LỤC PHẦN 1. Lý do chọn đề tài. Mục đích nghiên cứu. Phương pháp nghiên cứu.

Phạm vi nghiên cứu. Những đóng góp mới của đề tài. NỘI DUNG NGHIÊN CỨU. Các biện pháp sử dụng để giải quyết vấn đề.

Chủ đề về số nguyên tố. Bài toán cơ bản. Bài toán nâng cao cấp độ 1. Bài toán nâng cao cấp độ 2.

Đánh giá thuật toán. Các bài toán giao về nhà. Chủ đề về dãy số. Mảng một chiều.

Đánh giá các thuật toán. Bài tập về nhà. Chủ đề về xâu. Bài toán cơ bản.

Bài toán nâng cao cấp độ 1. Bài toán nâng cao cấp độ 2. Bài tập giao về nhà. Bài toán áp dụng.

ƯỚC NGUYÊN TỐ. TỔ TÌNH NGUYỆN. XÂU TƯƠNG ĐƯƠNG. Kết quả đạt được.

KẾT LUẬN VÀ KIẾN NGHỊ. 48 TÀI LIỆU THAM KHẢO. 50 skkn 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 skkn PHẦN 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”. 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.

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 skkn 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. Đố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ủ đề.

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.

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. 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. 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. 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. Các biện pháp sử dụng để giải quyết vấn đề 3. Chủ đề về số nguyên tố 3. 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ố. 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<iostream> import math #include<math.h> def check_prime_number(n): using namespace std; flag = 1; bool check(int n) { if (n<2): if (n <= 1) return false; flag = 0 for (int i = 2; i <= round(sqrt(n)); return flag i++) for p in if (n % i == 0) range(2,round(math.sqrt(n))): return false; if n % p == 0: return true; flag = 0 } break int main() { return flag int n; n = int(input(">>nhap n: ")) cout<<"nhap n="; if check_prime_number(n) == 1: cin>>n; print(n," la so nt") if (check (n)) cout<<n<<" la so else: nguyen to"; print(n,"khong la so nt") else cout<<n<<" khong la so nguyen to"; return 0; } 3. Bài toán nâng cao cấp độ 1 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.

4 skkn 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 <iostream> import math #include <math.h> def ktnt(n): #include <fstream> if (n<2): using namespace std; return False; bool KT(int n) x=int(math.sqrt(n)) { for i in range(2,x+1): bool kt=true; if n % i == 0: for (int i=2;i<=round(sqrt(n));i++) return False if (n%i==0) return True kt=false; n = int(input(">>nhap n: ")) return (kt); dem=0; } 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<=n;i++) if (KT(i)) dem++; fo<<dem; fi.

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ó”.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Bài viết "Phát triển tư duy lập trình qua phân tích bài toán đơn giản" tập trung vào việc nâng cao khả năng tư duy lập trình thông qua việc phân tích và giải quyết các bài toán đơn giản. Tác giả nhấn mạnh rằng việc tiếp cận các bài toán cơ bản không chỉ giúp người học hiểu rõ hơn về logic lập trình mà còn phát triển kỹ năng giải quyết vấn đề một cách hiệu quả. Bài viết cung cấp những phương pháp cụ thể để người đọc có thể áp dụng vào thực tế, từ đó cải thiện khả năng tư duy phản biện và sáng tạo trong lập trình.

Nếu bạn muốn mở rộng thêm kiến thức về các phương pháp rèn luyện tư duy và kỹ năng giải toán, hãy tham khảo bài viết "Skkn rèn luyện kỹ năng giải toán bằng phương pháp lượng giác cho học sinh thpt", nơi bạn sẽ tìm thấy những kỹ thuật hữu ích trong việc giải toán. Ngoài ra, bài viết "Skkn rèn luyện tư duy cho học sinh thông qua dạng toán tổng của một dãy số viết theo quy luật001" cũng sẽ giúp bạn hiểu rõ hơn về cách phát triển tư duy toán học qua các bài toán cụ thể. Cuối cùng, bài viết "Skkn nâng cao kĩ năng giải bài tập phần quang hình cho học sinh lớp 9 bằng cách hướng dẫn cho học sinh cách thức điều tra phân tích" sẽ cung cấp thêm những phương pháp hữu ích trong việc giải quyết các bài toán hình học, từ đó mở rộng khả năng tư duy cho người học.