SKKN Một số kỹ thuật lập trình nâng cao giúp đạt hiệu quả cao trong bồi dưỡng học sinh giỏi các cấp
- Mã tài liệu: MP1158 Copy
Môn: | Tin học |
Lớp: | 12 |
Bộ sách: | |
Lượt xem: | 487 |
Lượt tải: | 6 |
Số trang: | 109 |
Tác giả: | Phạm Thị Bảo Ngọc |
Trình độ chuyên môn: | Cử nhân đại học |
Đơn vị công tác: | THPT Nguyễn Xuân Ôn |
Năm viết: | 2020-2021 |
Số trang: | 109 |
Tác giả: | Phạm Thị Bảo Ngọc |
Trình độ chuyên môn: | Cử nhân đại học |
Đơn vị công tác: | THPT Nguyễn Xuân Ôn |
Năm viết: | 2020-2021 |
Sáng kiến kinh nghiệm “Một số kỹ thuật lập trình nâng cao giúp đạt hiệu quả cao trong bồi dưỡng học sinh giỏi các cấp”triển khai gồm các biện pháp nổi bật sau:
2.3. Các kỹ thuật lập trình nâng cao
2.3.1. Kỹ thuật mảng đánh dấu
2.3.2. Kỹ thuật mảng đếm
2.3.3. Kỹ thuật quay lui
2.3.4. Kỹ thuật quy hoạch động
2.4. Đánh giá các kỹ thuật
Mô tả sản phẩm
- MỞ ĐẦU
1.1. Lý do chọn đề tài
Chúng ta biết rằng để có kết quả cao trong kì thi tuyển chọn học sinh giỏi môn Tin học nói chung thì phải có vốn kiến thức tốt về thuật toán để giải được các bài toán từ mức độ cơ bản đến nâng cao, sau đó học sinh lựa chọn NNLT để lập trình dựa vào thuật toán đã tìm được và giải bài toán theo yêu cầu.
Điều này lại chỉ được hình thành sau khi người học được tiếp xúc với một hệ thống các bài toán đi từ cơ bản đến nâng cao được tổ chức cẩn thận, chặt chẽ. Hệ thống này giúp xây dựng được các thói quen tư duy cơ bản và nâng cao cũng như các kỹ thuật cơ bản và kỹ thuật nâng cao trong lập trình.
Với các kỹ thuật cơ bản như cờ hiệu, lính canh, ghi nhớ, duy trì mảng sắp xếp, đệ quy, chia đệ trị mà tôi đã trình bày trong SKKN năm trước đã giúp các quý thầy cô và các em học sinh có được kiến thức và tư duy cơ bản cũng như có cái nhìn tổng quan về ưu điểm và hạn chế của các kĩ thuật. Tuy nhiên, khi tham gia kì thi HSG các cấp có nhiều bài toán nâng cao đòi hỏi phải sử dụng đến các kỹ thuật nâng cao hơn mà các kỹ thuật cơ bản không cho được thuật toán tối ưu.
Với mong muốn giúp các em giải các bài toán nâng cao trong Tin học theo hướng tối ưu nhất, qua quá trình bồi dưỡng học sinh giỏi, tôi đã phát hiện, đúc rút ra được một số kỹ thuật lập trình nâng cao, rất quan trọng giúp đạt hiệu quả cao trong kì thi HSG các cấp như cấp trường, cấp huyện, cấp tỉnh, cấp Quốc gia.
Mặt khác, theo tôi thấy hiện tại chưa có tài liệu nào viết về các kỹ thuật lập trình nâng cao và ứng dụng của chúng một cách đầy đủ để làm tài liệu tham khảo mới cho giáo viên và học sinh.
Ngoài ra, theo công văn mới của Sở về thi HSG cấp tỉnh sẽ không dùng NNLT Pascal nữa nên tôi viết chương trình bằng NNLT C++ để làm tài liệu tham khảo mới cho giáo viên và học sinh.
Từ những lý do trên, tôi quyết định trình bày sáng kiến kinh nghiệm:
“Một số kỹ thuật lập trình nâng cao giúp đạt hiệu quả cao trong bồi dưỡng học sinh giỏi các cấp”.
1.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ố kỹ thuật lập trình nâng cao dành cho đối tượng HSG các cấp khối THPT.
- 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++ là ngôn ngữ có ưu thế mạnh trong thực hiện chương trình nhanh, phù hợp với thi HSG các cấp.
1.3. Đối tượng nghiên cứu
- Giáo viên và học sinh tham gia bồi dưỡng HSG Tin học.
- Tổng hợp lại một số kỹ thuật nâng cao giúp học sinh phát triển tư duy lập trình thông qua hệ thống các bài tập được phân loại kỹ lưỡng. 1.4. 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.
1.5. Phạm vi nghiên cứu
Phạm vi nghiên cứu: Một số kỹ thuật nâng cao để tăng tốc chương trình giúp đạt hiệu quả cao trong bồi dưỡng HSG các cấp môn Tin học.
- NỘI DUNG NGHIÊN CỨU
2.1. Cơ sở lý luận
2.1.1. Khái niệm về kỹ thuật lập trình
Kỹ thuật lập trình là kỹ thuật thực thi một giải pháp phần mềm (cấu trúc dữ liệu + giải thuật) dựa trên nền tảng một phương pháp luận (methodology) và một hoặc nhiều ngôn ngữ lập trình phù hợp với yêu cầu đặc thù của ứng dụng.
2.1.2. Vai trò của kỹ thuật lập trình
Trẻ em là thế hệ của tương lai, trẻ em cũng cần học các kỹ năng giúp cho trẻ có thể làm được những điều mới chứ không hoàn toàn đi theo những gì đã được dạy trong quá khứ. Theo nhiều chuyên gia, lập trình là một trong những kỹ năng quan trọng trẻ nên được trang bị từ sớm để giúp trẻ phát triển tư duy tính toán và các kỹ năng tư duy phản biện, kỹ năng trình bày, kỹ năng quản lý thời gian, làm việc nhóm…. và quan trọng hơn hết là được thỏa sức sáng tạo “thế giới trong mơ” của mình một cách sinh động trên máy tính. Tư duy tính toán (Computational Thinking) là cách tư duy sao cho không những giải quyết được vấn đề mà còn có thể đưa vào máy tính cách giải quyết vấn đề. Nhờ đó, vấn đề sẽ được máy tính xử lý một cách chính xác, nhanh chóng và có thể tự động hoàn toàn. Tư duy tính toán là nền tảng của Trí tuệ nhân tạo, Học máy và nhiều công nghệ khác của tương lai. Khi được phát triển kỹ năng này từ sớm, trẻ sẽ biết cách tiếp cận giải quyết vấn đề từng bước một cách logic và dần biết được cách giải quyết các vấn đề lớn, phức tạp.
2.2. Thực trạng
Trên thực tế đã có một số tài liệu đề cập đến những kỹ thuật để tăng tốc chương trình, tuy nhiên chưa đi sâu vào phân tích cách tư duy, cách lựa chọn và cài đặt chương trình tối ưu, đặc biệt việc tổng hợp lại các kỹ thuật từ cơ bản đến nâng cao giúp học sinh có thể so sánh các cách giải, các kết quả, độ phức tạp còn rất ít, hệ thống bài tập cũng không nhiều.
Trong quá trình ôn luyện đội tuyển, học sinh được dạy một số kỹ thuật cơ bản như kĩ thuật cờ hiệu, lính canh, ghi nhớ, duy trì mảng sắp xếp, đệ quy,… để giải các bài toán ở mức độ cơ bản và mức độ khá. Nhưng nếu chỉ dừng lại ở đó hay không biết kết hợp với những kỹ thuật nâng cao khác sẽ không đạt được sự tối ưu cao nhất và kết quả tốt nhất.
Các kỹ thuật được giới thiệu trong sáng kiến đều là những kỹ thuật nâng cao đem lại một hiệu quả rất đáng kể trong việc giảm độ phức tạp thuật toán, tiến tới một thuật toán tối ưu nhất.
Học sinh dần được làm quen với NNLT C++.
2.3. Các kỹ thuật lập trình nâng cao
2.3.1. Kỹ thuật mảng đánh dấu
- Là kỹ thuật sử dụng một mảng để đánh dấu trạng thái (true/fasle hoặc 0/1) cho tập số tự nhiên {0, 1, 2, … , n − 1}.
- Mục đích chính: đánh dấu trạng thái của các số trong một tập số tự nhiên.
Sau đó, dựa vào trạng thái của phần tử có chỉ mục tương ứng để kiểm tra một tính chất nào đó.
- Xét một số bài toán cụ thể như sau:
2.3.1.1. Bài toán 1 – Số nhỏ nhất
Cho N số nguyên dương A = (a1 , a2, … , aN) (1 ≤ N ≤ 108 và 1 ≤ ai ≤ 106). Hãy tìm số nguyên dương nhỏ nhất không xuất hiện trong A.
Input
- Dòng đầu tiên chứa số nguyên N
- Dòng thứ hai chứa N số tự nhiên
Output
- Số tự nhiên nhỏ nhất không xuất hiện trong A
Ví dụ
TÀI LIỆU LIÊN QUAN
100.000 ₫
- 0
- 457
- 2
- [product_views]
100.000 ₫
- 5
- 502
- 3
- [product_views]
100.000 ₫
- 4
- 448
- 4
- [product_views]
100.000 ₫
- 3
- 533
- 5
- [product_views]
100.000 ₫
- 9
- 416
- 6
- [product_views]
100.000 ₫
- 4
- 488
- 7
- [product_views]
100.000 ₫
- 4
- 590
- 8
- [product_views]
100.000 ₫
- 2
- 521
- 9
- [product_views]
100.000 ₫
- 7
- 492
- 10
- [product_views]