Skkn giúp học sinh cài đặt chương trình tối ưu khi giải một số bài tập có sử dụng thuật toán sắp xếp bằng ngôn ngữ lập trình pascal và c++ nhằm nâng cao chất lượng học sinh giỏi môn tin học ở trường thpt

24 4 0
Skkn giúp học sinh cài đặt chương trình tối ưu khi giải một số bài tập có sử dụng thuật toán sắp xếp bằng ngôn ngữ lập trình pascal và c++ nhằm nâng cao chất lượng học sinh giỏi môn tin học ở trường thpt

Đ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

Lý do chọn đề tài SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THPT ĐẶNG THAI MAI SÁNG KIẾN KINH NGHIỆM GIÚP HỌC SINH CÀI ĐẶT CHƯƠNG TRÌNH TỐI ƯU KHI GIẢI MỘT SỐ BÀI TẬP CÓ SỬ DỤNG THUẬT TOÁN SẮP XẾP BẰNG[.]

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THPT ĐẶNG THAI MAI SÁNG KIẾN KINH NGHIỆM GIÚP HỌC SINH CÀI ĐẶT CHƯƠNG TRÌNH TỐI ƯU KHI GIẢI MỘT SỐ BÀI TẬP CĨ SỬ DỤNG THUẬT TỐN SẮP XẾP BẰNG NGƠN NGỮ LẬP TRÌNH PASCAL VÀ C++ NHẰM NÂNG CAO CHẤT LƯỢNG HỌC SINH GIỎI MÔN TIN HỌC Ở TRƯỜNG THPT Người thực hiện: Hoàng Thị Mai Chức vụ: Giáo viên SKKN thuộc lĩnh vực: Tin học THANH HÓA NĂM 2020 skkn MỤC LỤC Mở đầu 1.1 Lý chọn đề tài 1.2 Mục đích nghiên cứu 1.3 Đối tượng nghiên cứu 1.4 Phương pháp nghiên cứu 2 Nội dung sáng kiến kinh nghiệm 2.1 Cơ sở lí luận 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm .3 2.2.1 Đặc điểm tình hình nhà trường 2.2.2 Thực trạng trước nghiên cứu .3 2.3 Giải pháp sử dụng để giải vấn đề 2.3.1 Cơ sở lý thuyết 2.3.1.1 Bài toán xếp 2.3.1.2 Thuật toán xếp lựa chọn 2.3.1.3 Thuật toán xếp nhanh .5 2.3.1.4 Thuật toán xếp phương pháp đếm phân phối 2.3.2 Biện pháp cài đặt chương trình tối ưu giải số tập có sử dụng thuật toán xếp 2.3.2.1 Bài tập ví dụ có sử dụng thuật tốn xếp 2.3.2.2 Bài tập áp dụng .11 2.3.2.2.1 Một số tập sử dụng thuật toán xếp nhanh 11 2.3.2.2.2 Một số tập sử dụng thuật toán đếm phân phối .16 2.4 Hiệu sáng kiến kinh nghiệm 19 Kết luận kiến nghị 19 3.1 Kết luận .19 3.1 Kiến nghị .20 skkn Mở đầu 1.1 Lý chọn đề tài Trong trình giảng dạy bồi dưỡng học sinh giỏi, tơi gặp nhiều tập có sử dụng thuật tốn xếp Có thể thấy xếp đóng vai trị quan trọng sống nói chung tin học nói riêng Theo D.Knuth 40% thời gian tính tốn máy tính dành cho việc xếp Do đặc điểm liệu số thực hay số nguyên, kí tự hay xâu, kích thước nhỏ hay lớn, lưu trữ nhớ hay nhớ ngồi, mà người ta có nhiều thuật tốn xếp khác Trong số đó, xếp lựa chọn, xếp nhanh, xếp phương pháp đếm phân phối thuật toán hay, dễ cài đặt, ứng dụng nhiều giải tốn Tin học Mỗi thuật tốn xếp có ưu điểm nhược điểm riêng Khi học sinh gặp dạng tập này, việc đoán nhận lớp giải thuật xếp khơng phải q khó học sinh lại nóng vội bắt tay vào việc viết chương trình chủ quan khơng để ý đến đặc điểm, giới hạn liệu đề ra, dẫn đến việc sử dụng số giải thuật xếp không phù hợp chưa tối ưu yêu cầu liệu vào đề Do vậy, kì thi học sinh giỏi em đạt số điểm định, kết không cao, không tương xứng với khả công sức bỏ Với mong muốn giúp học sinh giải tốt tập có sử dụng thuật tốn xếp hiểu biết sâu sắc cách giải tập dạng Tơi nghiên cứu tìm ưu điểm nhược điểm bật thuật toán xếp, đánh giá độ phức tạp, đo thời gian thực chương trình để so sánh đưa cách giải phù hợp, có hiệu thuật toán xếp kiểu liệu khác Qua đó, phát triển tư lập trình cho học sinh dần nâng cao chất lượng học sinh giỏi môn Tin học Hơn nữa, ngày ứng dụng công nghệ thông tin ngày phát triển Các ngơn ngữ lập trình phát triển nhanh đáp ứng nhu cầu dạy học đại Hiện tại, ngơn ngữ lập trình pascal sử dụng dạy học lập trình lớp 11 trở nên lạc hậu, tính ứng dụng thực tế khơng cao với tâm lí xem mơn Tin mơn học phụ nên khơng thu hút u thích tìm tòi khám phá học sinh, dẫn đến việc học trở nên đối phó Do vậy, việc lựa chọn ngơn ngữ lập trình phù hợp, đáp ứng nhu cầu phát triển ngày cao giáo dục đại cần thiết Nên trăn trở nghiên cứu tìm hiểu thêm ngơn ngữ lập trình C++ (đây ngôn ngữ thú vị, dễ học, tương đồng với Pascal, chương trình thực nhanh) để chuyển thể số tập có sử dụng thuật tốn xếp từ ngơn ngữ lập trình pascal sang ngơn ngữ C++ Đồng thời kiểm tra so sánh thời gian thực chương trình hai ngơn ngữ Từ những lý đã mạnh dạn trình bày sáng kiến kinh nghiệm: “Giúp học sinh cài đặt chương trình tới ưu giải số bài tập có sử dụng thuật tốn xếp ngơn ngữ lập trình Pascal C++ nhằm nâng cao chất lượng học sinh giỏi môn Tin học trường THPT” 1.2 Mục đích nghiên cứu Đề tài nghiên cứu nhằm giúp học sinh giải qút tớt các bài tập có sử skkn dụng thuật toán xếp, để đứng trước một bài toán cần giải quyết ngoài việc tìm giải thuật để cài đặt chương trình thì học sinh biết cách so sánh, đánh giá hiệu thời gian thực chương trình (hay cịn gọi độ phức tạp thuật toán) lựa chọn được thuật toán phù hợp Đồng thời giúp học sinh lựa chọn ngơn ngữ lập trình phù hợp với lực thân, xu thời đại nhằm nâng cao chất lượng học sinh giỏi Từ giúp học sinh dần làm quen với ngơn ngữ lập trình C++ 1.3 Đối tượng nghiên cứu Sáng kiến kinh nghiệm có đối tượng nghiên cứu là thuật toán xếp gồm: xếp lựa chọn, xếp nhanh, xếp phương pháp đếm phân phối Các bài toán có sử dụng thuật toán xếp, nghiên cứu so sánh nhiều cách làm cách tương ứng dùng giải thuật sắp, xét phương diện như: độ phức tạp, kết output, thời gian thực chương trình Cách làm tối ưu cài đặt chương trình ngơn ngữ lập trình Pascal C++ 1.4 Phương pháp nghiên cứu Để trình bày sáng kiến kinh nghiệm này, đã sử dụng phối kết hợp nhiều phương pháp như: nghiên cứu tài liệu, thuyết trình, quan sát, điều tra bản, thực nghiệm so sánh, phân tích kết quả thực nghiệm, … phù hợp với môn học thuộc lĩnh vực Tin học Nội dung sáng kiến kinh nghiệm 2.1 Cơ sở lý luận Nghị quyết hội nghị Trung ương VIII khóa XI đề mục tiêu: “Đối với giáo dục phổ thông tập trung phát triển trí tuệ, thể chất, hình thành phẩm chất, lực công dân, phát hiện và bồi dưỡng khiếu, định hướng nghề nghiệp cho học sinh Nâng cao chất lượng giáo dục toàn diện, chú trọng giáo dục lý tưởng truyền thống đạo đức, lối sống, ngoại ngữ, tin học, lực và kỹ thực hành, vận dụng kiến thức vào thực tiễn, phát triển khả sáng tạo và tự học, khuyến khích học tập suốt đời".[1] Yêu cầu cấp bách toàn ngành giáo dục, xây dựng phương pháp dạy học đại, đáp ứng yêu cầu phát triển ngày cao giáo dục đại Toàn ngành sức phấn đấu xây dựng chương trình sách giáo khoa mới, đổi phương pháp dạy học theo định hướng hình thành phát triển lực Mục tiêu mơn Tin học chương trình giáo dục phổ thơng giúp học sinh hình thành phát triển lực Tin học Đối với môn Tin học, vào mục tiêu để xác định nhiệm vụ cụ thể môn học, đổi phương pháp dạy học nhằm góp phần thực tốt mục tiêu ngành giáo dục giai đoạn Nếu học sinh có thói quen kỹ tốt thiết kế cài đặt chương trình tối ưu để giải lớp bài tập xếp nói riêng tập lập trình nói chung thì chất lượng học sinh giỏi khả quan đạt kết cao kì thi HSG skkn 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm 2.2.1 Đặc điểm tình hình nhà trường Trường THPT Đặng Thai Mai thành lập ngày: 20/08/2001, theo định số: 2109/QĐ-UB Chủ tịch UBND Tỉnh Thanh Hoá Trường nằm đường quốc lộ 1A, thuộc km 12 từ thành phố Thanh Hóa xuống phía Nam, thuộc địa bàn xã Quảng Bình, huyện Quảng Xương, tỉnh Thanh Hóa, nơi đa số phụ huynh học sinh làm nông nghiệp khai thác, đánh bắt hải sản Điều kiện kinh tế cịn gặp nhiều khó khăn Các em học sinh có điều kiện tiếp xúc với máy tính nhà Chất lượng đầu vào của học sinh thấp, chủ yếu là học sinh trung bình, yếu Năm học 2017 - 2018 trường có 27 lớp phịng học thực hành Tin học có mạng Internet, có lắp đặt máy chiếu Hiện nay, năm học 2019 - 2020 nhà trường tăng lên 31 lớp, có phòng thực hành Tin học lắp đặt máy chiếu, không kết nối Internet Cơ sở vật chất chưa đảm bảo cho việc học môn Tin học nhà trường Môn Tin học môn học đặc thù có nhiều kiến thức khó Đặc biệt lập trình pascal lớp 11 (đây kiến thức thi học sinh giỏi tỉnh môn Tin học) đánh giá khó lạc hậu Hơn nữa, mơn học học sinh, phụ huynh, nhà trường mặc định môn phụ, phụ huynh khơng khuyến khích ủng hộ u thích đam mê mơn học, chí nhiều phụ huynh cịn cấm tham gia đội tuyển học sinh giỏi môn Tin học, tạo áp lực cho giáo viên nhà trường để khỏi đội tuyển tập trung vào học môn ôn thi đại học nên việc lựa chọn bồi dưỡng học sinh giỏi vô khó khăn Thực trạng dẫn tới tâm lý học sinh chán học nên chất lượng học sinh giỏi không cao 2.2.2 Thực trạng trước nghiên cứu Năm 2014 – 2015 phân công giáo viên bồi dưỡng học sinh giỏi tỉnh mơn Tin học Rút kinh nghiệm từ năm trước bồi dưỡng học sinh giỏi, trọng nhiều đến cải tiến chương trình tới ưu nhiên hiệu mang lại chưa cao Đối với lớp tập có sử dụng giải thuật xếp, dạng tập khơng q khó, phần học sinh ghi điểm Tuy nhiên, phần giáo viên chưa có phương pháp giảng dạy phù hợp lớp tập này, phần học sinh chủ quan khơng ý đến đặc điểm liệu, giới hạn liệu, không nắm đặc trưng bật thuật toán xếp nên học sinh gặp dạng tập thường dừng lại bước đoán nhận có sử dụng thuật tốn xếp nóng vội viết chương trình Vì vậy, chương trình thường không hiệu dẫn tới kết thi học sinh giỏi không cao, không tương xứng với lực Bảng điểm lần thi khảo sát chất lượng học sinh giỏi về chuyên đề dãy (do tự tổ chức) năm học 2014 – 2015 chưa thực đề tài: Họ tên Lê Đình Miền Trần Ngọc Nhật Lần 3/10 5/10 Lần 5/10 4/10 Lần 6/10 5/10 Lần 6/10 6/10 skkn Do kết học sinh giỏi năm 2014 - 2015 có đạt số kết định, không cao (1 giải ba, giải khuyến khích) Bởi vậy, để học sinh đạt kết cao kỳ thi học sinh giỏi Tỉnh cần phải rèn luyện cho em tuân thủ tốt bước thiết kế cài đặt chương trình tối ưu, điều khơng dễ chút nào, địi hỏi giáo viên phải kiên nhẫn, trì uốn nắn từ em bắt đầu với tốn đơn giản suốt q trình học em thi Trong phạm vi sáng kiến kinh nghiệm mình, tơi tập trung nghiên cứu thuật toán: xếp lựa chọn, xếp nhanh xếp phương pháp đếm phân phối Mặt khác, nghiên cứu cài đặt song song hai ngơn ngữ lập trình Pascal C++ để giúp học sinh tiếp cận với ngôn ngữ lập trình Đồng thời, tơi có sử dụng phần mềm Themis để đo so sánh thời gian thực chương trình hai ngơn ngữ nhằm giúp học sinh thấy việc lựa chọn ngơn ngữ lập trình phù hợp yếu tố quan trọng lập trình 2.3 Giải pháp sử dụng để giải vấn đề 2.3.1 Cơ sở lý thuyết 2.3.1.1 Bài tốn xếp Để khơng tính tổng qt, ta trình bày thuật tốn xếp cho toán sau: Cho dãy gồm n số nguyên a1, a2, , an Hãy xếp thành dãy tăng không ngặt (dãy không giảm) Tùy thuộc vào đặc điểm liệu để ta lựa chọn thuật toán xếp hợp lý 2.3.1.2 Thuật toán xếp lựa chọn  Ý tưởng: - So sánh cặp số a1 với a2, số sau nhỏ số trước đổi chỗ hai số cho Làm tương tự với cặp số a với a3, , a1 với an Khi phần tử nhỏ đưa lên đầu dãy (tức a1) - Thực lặp lại với cặp số: a2 với a3; a2 với a4; ; a2 với an; ; an-1 với an  Mơ thuật tốn Pascal C++: Pascal C++ For i:= to n-1 for j:= i+1 to n if a[i]>a[j] then begin tg:=a[i]; a[i]:=a[j]; a[j]:=tg; end; for (i = 1; i < n - 1; i++) for (j = i + 1; j < n; j++) if (a[i] > a[j]) { tg = a[i]; a[i] = a[j]; a[j] = tg; }  Độ phức tạp thuật toán là: O(n2)  Đánh giá ưu điểm, nhược điểm:  Ưu điểm: - Code đơn giản, dễ hiểu - Sắp xếp với giá trị phần tử kiểu số nguyên, kiểu số thực, kiểu kí skkn tự, kiểu xâu - Sắp xếp với phần tử có miền giá trị lớn |a i| ≤ 1018 (nếu kiểu xâu, xếp xâu có độ dài lớn phụ thuộc vào dung lượng nhớ trong)  Nhược điểm: - Độ phức tạp thuật toán lớn O(n2) - Chạy không đủ nhanh (quá giây) với liệu lớn, áp dụng với số phần tử n < 104 2.3.1.3 Thuật toán xếp nhanh  Ý tưởng: Chọn phần tử làm chốt (ở ta chọn phần tử vị trí giữa) Từ trái sang tìm phần tử có vị trí i lớn phần tử chốt, từ phải sang tìm phần tử có vị trí j bé phần tử chốt Nếu i j Lúc chia nhóm cần xếp Làm tương tự với nhóm xếp hết dãy  Mơ thuật tốn Pascal C++: Pascal C++ procedure qsort(l,r:longint); var i,j,x,y: longint; begin i:=l; j:=r; x:=a[(l+r) div 2]; repeat while a[i]j; if l

Ngày đăng: 19/02/2023, 15:39

Tài liệu cùng người dùng

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

Tài liệu liên quan