1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(SKKN MỚI NHẤT) MỘT SỐ KỸ THUẬT LẬP TRÌNH CƠ BẢN GIÚP ĐẠT HIỆU QUẢ CAO TRONG BỒI DƯỠNG HỌC SINH GIỎI

59 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Một Số Kỹ Thuật Lập Trình Cơ Bản Giúp Đạt Hiệu Quả Cao Trong Bồi Dưỡng Học Sinh Giỏi
Tác giả Nguyễn Thị Luận, Trần Thị Thủy
Trường học Trường THPT Diễn Châu 5
Chuyên ngành Tin học
Thể loại sáng kiến kinh nghiệm
Năm xuất bản 2022
Thành phố Nghệ An
Định dạng
Số trang 59
Dung lượng 1,11 MB

Cấu trúc

  • 1. MỞ ĐẦU (2)
    • 1.1. Ly ́ do cho ̣n đề tài (2)
    • 1.2. Mu ̣c đích nghiên cứu (2)
    • 1.3. Đối tươ ̣ng nghiên cứu (2)
    • 1.4. Phương pháp nghiên cứu (2)
    • 1.5. Phạm vi nghiên cứu (2)
  • 2. NỘI DUNG NGHIÊN CỨU (3)
    • 2.1. Cơ sở lý luâ ̣n (3)
    • 2.2. Thực trạng (3)
    • 2.3. Các kĩ thuật lập trình cơ bản (3)
      • 2.3.1. Kỹ thuật lính canh (Sentinel) (3)
        • 2.3.1.1. Bài toán 1 – Tìm max / min (3)
        • 2.3.1.2. Bài toán 2- Tìm kiếm tuần tự (5)
      • 2.3.2. Kỹ thuật đặt cờ hiệu (Flag) (8)
        • 2.3.2.1. Bài toán 1 - Kiểm tra tính chất một số (8)
        • 2.3.2.2. Bài toán 2 - Kiểm tra tính chất mảng (10)
      • 2.3.3. Kỹ thuật nhớ (11)
        • 2.3.3.1. Bài toán 1 - Tìm dãy Fibonaci (12)
        • 2.3.3.2. Bài toán 2 - Tính tổng (13)
      • 2.3.4. Kỹ thuật đệ quy (15)
        • 2.3.4.1. Bài toán 1 - Giai thừa (15)
        • 2.3.4.2. Bài toán 2 - Fibonaci (16)
        • 2.3.4.3. Bài toán 3 – Tìm UCLN và BCNN (17)
      • 2.3.5. Kỹ thuật chia để trị (18)
        • 2.3.5.1. Bài toán 1 - Tìm kiếm nhị phân (18)
        • 2.3.5.2. Bài toán 2 - Sắp xếp nhanh (quick sort) mảng một chiều (20)
      • 2.3.6. Kỹ thuật duy trì mảng sắp xếp (23)
        • 2.3.6.1. Bài toán 1 - Dãy con cấp số cộng (23)
        • 2.3.6.2. Bài toán 2 - Dãy con không giảm (26)
    • 2.4. Đánh giá các kĩ thuật (28)
      • 2.4.1. Đánh giá các kĩ thuật (28)
        • 2.4.1.1. Bài toán 1 (28)
        • 2.4.1.2. Bài toán 2 (29)
        • 2.4.1.3. Bài toán 3 (30)
        • 2.4.1.4. Bài toán 4 (32)
      • 2.4.2. Đánh giá ngôn ngữ (34)
    • 2.5. Bài toán áp dụng (34)
      • 2.5.1. Bài toán 1 – SOCAP (34)
      • 2.5.2. Bài toán 2 – SEQ (35)
      • 2.5.3. Bài toán 3 – OE (37)
      • 2.5.4. Bài toán 4 – THÁP HÀ NỘI (39)
      • 2.5.5. Bài toán 5 – LẬP TRÌNH (40)
      • 2.5.6. Bài toán 6 – CHIA KẸO (42)
      • 2.5.7. Bài toán 7 – SỐ NGUYÊN TỐ TƯƠNG ĐƯƠNG (45)
      • 2.5.8. Bài toán 8 – DÃY CON TỔNG LỚN NHẤT (46)
      • 2.5.9. Bài toán 9 – SỐ SIÊU NGUYÊN TỐ (46)
    • 2.6. Kết quả thực nghiệm (47)
    • 2.7. Kết quả đạt được (49)
  • 3. KẾT LUẬN VÀ KIẾN NGHỊ (49)
    • 3.1. Kết luận (49)
    • 3.2. Kiến nghị (50)
  • TÀI LIỆU THAM KHẢO (51)
  • PHỤ LỤC (52)
    • 1. Bài toán 7: SỐ NGUYÊN TỐ TƯƠNG ĐƯƠNG (52)
    • 2. Bài Toán 8: DÃY CON TỔNG LỚN NHẤT (54)
    • 3. Bài toán 9: SỐ SIÊU NGUYÊN TỐ (55)

Nội dung

MỞ ĐẦU

Ly ́ do cho ̣n đề tài

Để đạt kết quả cao trong kỳ thi tuyển chọn học sinh giỏi môn Tin học, học sinh cần có kiến thức vững về thuật toán để giải quyết các bài toán khó Sau khi tìm ra thuật toán, học sinh sẽ lựa chọn ngôn ngữ lập trình (NNLT) phù hợp để thực hiện giải bài toán theo yêu cầu Việc này chỉ có thể được thực hiện khi người học tiếp xúc với một hệ thống bài toán được tổ chức chặt chẽ, giúp hình thành thói quen tư duy và kỹ thuật lập trình cơ bản.

Để hỗ trợ học sinh giải quyết bài toán Tin học một cách tối ưu, chúng tôi đã phát triển một số kỹ thuật cơ bản trong quá trình bồi dưỡng học sinh giỏi Những kỹ thuật này rất quan trọng và giúp nâng cao hiệu quả trong việc truyền đạt kiến thức và kỹ năng lập trình cho học sinh.

Theo chương trình mới của Bộ Giáo dục, giáo viên được khuyến khích dạy ngôn ngữ lập trình mới thay thế Pascal Vì vậy, chúng tôi đã phát triển tài liệu tham khảo bằng ngôn ngữ lập trình C++ và Python dành cho giáo viên và học sinh.

Từ những lý do trên chúng tôi đã mạnh dạn trình bày sáng kiến kinh nghiê ̣m:

“Một số kỹ thuật lập trình cơ bản giúp đạt hiệu quả cao trong bồi dưỡng học sinh giỏi”.

Mu ̣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 cơ bản dành cho đối tượng HSG 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++ và Python trong chương trình giáo dục phổ thông

Đố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 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.

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

Phạm vi nghiên cứu: Một số kỹ thuật cơ bản để tăng tốc chương trình giúp đạt hiệu quả cao trong bồi dưỡng HSG môn Tin học.

NỘI DUNG NGHIÊN CỨU

Cơ sở lý luâ ̣n

Trong quá trình ôn luyện đội tuyển, học sinh được trang bị nhiều phương pháp tối ưu thuật toán như tham lam, chia để trị, quay lui, quy hoạch động, Z Algorithm và KMP Tuy nhiên, để đạt được hiệu quả tối ưu nhất, việc kết hợp các phương pháp này với kỹ thuật khác và tổ chức dữ liệu hợp lý là rất quan trọng Nếu chỉ xem xét từng phương pháp một cách độc lập, chúng sẽ không mang lại giá trị tối ưu cao nhất.

Các kỹ thuật trong sáng kiến này là những phương pháp cơ bản, dễ tiếp cận và mang lại hiệu quả cao trong việc giảm độ phức tạp của thuật toán, hướng tới việc tối ưu hóa thuật toán một cách tốt nhất.

Học sinh dần được làm quen với NNLT C++ hoặc Python.

Thực trạng

Mặc dù đã có một số tài liệu đề cập đến kỹ thuật tăng tốc chương trình, nhưng vẫn thiếu phân tích sâu về tư duy và lựa chọn cài đặt chương trình tối ưu Việc tổng hợp các kỹ thuật để học sinh có thể so sánh các cách giải, kết quả và độ phức tạp còn rất hạn chế, và hệ thống bài tập hiện có cũng không phong phú.

Các kĩ thuật lập trình cơ bản

2.3.1 Kỹ thuật lính canh (Sentinel)

- Là kĩ thuật sử dụng 1 biến (mang giá trị đặc biệt) làm “chốt chặn”

- Mục đích chính: tạo điều kiện dừng cho các vòng lặp không xác định số lần lặp

- Xét một số bài toán cụ thể sau:

2.3.1.1 Bài toán 1 – Tìm max / min

Cho dãy gồm N số nguyên a1, a2,…,aN Hãy tìm giá trị lớn nhất của dãy số a Ý tưởng của thuật toán

Để tìm giá trị lớn nhất trong một mảng số, ta khởi tạo biến kết quả max bằng giá trị đầu tiên của mảng, gọi là biến lính canh Sau đó, ta lần lượt kiểm tra các phần tử từ thứ 2 đến n; nếu phát hiện phần tử nào lớn hơn giá trị của "lính canh" ban đầu, ta sẽ cập nhật "lính canh" bằng giá trị mới.

+ Lần lượt với i=2 đến n, so sánh số ai với max, nếu ai > max thì gán max=ai b Nội dung và cài đặt chương trình

Các bước thực hiện giải thuật:

Bước 1: Nhập N và dãy a1,a2, , aN

Bước 3: Nếu i > N thì đưa ra giá trị Max và csmax rồi kết thúc;

Bước 4: Nếu ai > Max thì Max ←ai, csmax ←i;

Bước 5: i ← i + 1 rồi quay lại Bước 3;

#include using namespace std; long long n,max,csmax; long long a[10000]; void doctep()

{ifstream fi ("max.inp"); fi>>n; for (int i=0;i>a[i]; fi.close();

{ long long max=a[0];//dat linh canh csmax=0; for(int i=1;i

Ngày đăng: 03/07/2022, 17:03

HÌNH ẢNH LIÊN QUAN

+ Đặc điểm chính của địa hình Đồng Nai? Nhóm 2:  Đất trồng tỉnh  Đồng Nai - (SKKN MỚI NHẤT) MỘT SỐ KỸ THUẬT LẬP TRÌNH CƠ BẢN GIÚP ĐẠT HIỆU QUẢ CAO TRONG BỒI DƯỠNG HỌC SINH GIỎI
c điểm chính của địa hình Đồng Nai? Nhóm 2: Đất trồng tỉnh Đồng Nai (Trang 9)
- Trong khoa học máy tính, chia để trị là một mô hình thiết kế thuật toán quan trọng, hoạt động dựa trên ý tưởng chia vấn đề cần giải quyết thành các vấn đề  con cùng dạng với vấn đề đã cho, chỉ khác là cỡ của chúng nhỏ hơn, cứ như vậy  lặp lại nhiều lần, - (SKKN MỚI NHẤT) MỘT SỐ KỸ THUẬT LẬP TRÌNH CƠ BẢN GIÚP ĐẠT HIỆU QUẢ CAO TRONG BỒI DƯỠNG HỌC SINH GIỎI
rong khoa học máy tính, chia để trị là một mô hình thiết kế thuật toán quan trọng, hoạt động dựa trên ý tưởng chia vấn đề cần giải quyết thành các vấn đề con cùng dạng với vấn đề đã cho, chỉ khác là cỡ của chúng nhỏ hơn, cứ như vậy lặp lại nhiều lần, (Trang 18)
Bảng 1. Sự khỏc nhau giữa Kiến thức bản địa và Kiến thức khoa học - (SKKN MỚI NHẤT) MỘT SỐ KỸ THUẬT LẬP TRÌNH CƠ BẢN GIÚP ĐẠT HIỆU QUẢ CAO TRONG BỒI DƯỠNG HỌC SINH GIỎI
Bảng 1. Sự khỏc nhau giữa Kiến thức bản địa và Kiến thức khoa học (Trang 27)
Lập bảng so sánh thời gian thực hiện 2 chương trình trên với bộ test lớn bằng phần mềm Themis ta có kết quả sau: - (SKKN MỚI NHẤT) MỘT SỐ KỸ THUẬT LẬP TRÌNH CƠ BẢN GIÚP ĐẠT HIỆU QUẢ CAO TRONG BỒI DƯỠNG HỌC SINH GIỎI
p bảng so sánh thời gian thực hiện 2 chương trình trên với bộ test lớn bằng phần mềm Themis ta có kết quả sau: (Trang 29)
Lập bảng so sánh thời gian thực hiện 2 chương trình trên với bộ test lớn bằng phần mềm Themis ta có kết quả sau: - (SKKN MỚI NHẤT) MỘT SỐ KỸ THUẬT LẬP TRÌNH CƠ BẢN GIÚP ĐẠT HIỆU QUẢ CAO TRONG BỒI DƯỠNG HỌC SINH GIỎI
p bảng so sánh thời gian thực hiện 2 chương trình trên với bộ test lớn bằng phần mềm Themis ta có kết quả sau: (Trang 30)
Sau đây là bảng so sánh thời gian đo được khi chấm hai chương trình giải bài toán trên tương ứng sử dụng hai kĩ thuật duy trì sắp xếp và cờ hiệu bằng phần  mềm Themis với bộ test lớn: - (SKKN MỚI NHẤT) MỘT SỐ KỸ THUẬT LẬP TRÌNH CƠ BẢN GIÚP ĐẠT HIỆU QUẢ CAO TRONG BỒI DƯỠNG HỌC SINH GIỎI
au đây là bảng so sánh thời gian đo được khi chấm hai chương trình giải bài toán trên tương ứng sử dụng hai kĩ thuật duy trì sắp xếp và cờ hiệu bằng phần mềm Themis với bộ test lớn: (Trang 33)
Trong cả ba bảng số liệu thực nghiệm trên, lần 1 là các em thi trước khi được học các kĩ thuật, lần 2 các em đã được học qua các kĩ thuật, và lần 3 sau khi - (SKKN MỚI NHẤT) MỘT SỐ KỸ THUẬT LẬP TRÌNH CƠ BẢN GIÚP ĐẠT HIỆU QUẢ CAO TRONG BỒI DƯỠNG HỌC SINH GIỎI
rong cả ba bảng số liệu thực nghiệm trên, lần 1 là các em thi trước khi được học các kĩ thuật, lần 2 các em đã được học qua các kĩ thuật, và lần 3 sau khi (Trang 48)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w