Lựa chọn thuật toán tối ưu trong giải bài toán passcal để bồi dưỡng học sinh lớp 11

14 181 1
Lựa chọn thuật toán tối ưu trong giải bài toán passcal để bồi dưỡng học sinh lớp 11

Đ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

1 MỞ ĐẦU 1.1 Lý chọn đề tài Đối với học sinh THPT việc cung cấp học sinh cách tư giải tốn ngơn ngữ Pascal, số học sinh có tư tưởng cần giải tốn tư thơng thường với test nhỏ Nhưng giới hạn test tăng lên chương trình thường bị test Vì thế, muốn giải test lớn lựa chọn thuật tối bước quan trọng giải tốn Có thể có nhiều thuật tốn khác giải tốn, cần chọn thuật tốn phù hợp có để giải tốn Khi lựa chọn thuật toán thường quan tâm đến tài nguyên như: thời gian thực hiện, ô nhớ, số lượng…Trong loại tài nguyên đó, nguời ta quan tâm nhiều thời gian mộ thuật toán cho kết thời gian thực thuật tốn lớn vơ nghĩa Một ngun nhân khác tài nguyên thời gian dạng tài ngun khơng tái tạo Thêm tiêu chí cần thiết để lựa chọn thuật toán chọn thuật tốn cho việc viết chương trình phức tạp Một thuật tốn thuật tốn có thời gian thực nhanh tiết kiệm tài nguyên máy tính Xuất phát từ lý tơi chọn đề tài “Lựa chọn thuật toán tối ưu giải toán Pascal để bồi dưỡng học sinh lớp 11” 1.2 Mục đích nghiên cứu Đưa số thuật toán tối ưu để giải toán, nâng cao khả tư sáng tạo học sinh 1.3 Đối tượng nghiên cứu - Học sinh lớp 11 trường THPT Nông Cống I - Nội dung kiến thức dạy học giáo viên: Rèn luyện kĩ tìm, phân tích thuật tốn tối ưu để giải tốn - Máy tính, máy chiếu, thiết bị hỗ trợ để mơ tả thuật tốn, thực chạy chương trình 1.4 Phương pháp nghiên cứu - Kĩ thuật phân tích thuật tốn - Kĩ thuật đánh giá thuật toán - Thao khảo tài liệu từ nhiều nguồn khác nhau: sách tham khảo, internet… NỘI DUNG 2.1 Cơ sở lý luận - Nghị TW2 (khóa VIII) Đảng khẳng định : “Phải đổi phương pháp dạy học, khắc phục lối truyền đạt kiến thức chiều, rèn luyện nếp tư sáng tạo người học” Đổi phương pháp dạy học hướng tới việc dạy tốt học tốt theo phương châm: lấy người học làm trung tâm dạy học Muốn giáo viên cần phải hiểu sâu sắc vận dụng sáng tạo phương pháp dạy học tiết dạy - Chương trình giáo dục đào tạo ban hành kèm theo định số 16/2006 nêu:” phải phát huy tính tích cực, chủ động, sáng tạo học sinh, phù hợp với đặc trưng môn, đặc điểm đối tượng học sinh, điều kiện lớp học, bồi dưỡng học sinh phương pháp tự học, khả hợp tác, rèn luyện kỹ vận dụng kiến thức vào thực tế - Thực mục tiêu môn tin học THPT - Tạo điều kiện cho học sinh chiếm lĩnh tri thức, kỹ tin học cần thiết, để học sinh thấy rõ hiệu công nghệ thông tin - Học sinh thực tốt lựa chọn thuật toán tối ưu để giải tốn chất lượng học sinh nâng cao, lập trình 2.2 Thực trạng * Thực trạng chung Mơn tin học giữ vai trò chủ đạo việc chuẩn bị cho học sinh khả tiếp nhận, mở rộng tri thức sáng tạo thời đại thơng tin, kết nối tồn cầu hóa Mơn tin học hỗ trợ đắc lực học sinh tự học tập nghiên cứu; tạo sở vững cho việc ứng dụng công nghệ, kĩ thuật số phục vụ phát triển cho nội dung kiến thức mới, triển khai phương thức giáo dục đại cho môn tin học Nhưng mơn tin học khơng có kì thi trung học phổ thơng quốc gia nên hầu hết học sinh không trọng tới kiến thức THPT Do đó, việc dạy học đặc biệt học lập trình gặp nhiều khó khăn Mặt khác ln dành thời gian cho kỳ thi, môn thi nên thời gian em dành cho môn tin học khơng có, lại thêm gặp khó khăn tài liệu *Một số thuận lợi khó khăn thực đề tài Thuận lợi: Bộ môn tin học đưa vào chương trình THPT 10 năm, nhà trường tạo có phòng máy tính, có máy chiếu để phục vụ việc dạy học mơn tin học Giáo viên - Đào tạo quy chuyên ngành sư phạm tin học - Hàng năm nhà trường tổ chức thi giáo viên giỏi cấp trường, nên kiến thức giáo viên nâng cao Học sinh - u thích mơn tin học, đặc biệt tiết thực hành - Một số học sinh yêu thích mơn lập trình (Pascal lớp 11) Khó khăn: Giáo viên: - Là mơn đặc thù có kiến thức khó (lập trình Pascal 11) bị xem nhẹ, bị xem “môn phụ”, nên việc dạy, bồi dưỡng học sinh vơ khó khăn Học sinh: - Tuy nhà trường có phòng máy tính để học sinh học số lượng máy hạn chế chất lượng - Nhiều gia đình học sinh khó khăn nên học sinh khơng có máy tính nhà để tự học 2.3 Các giải pháp sử dụng để giải vấn đề Thơng thường giải tốn, đưa thuật tốn khác phải chọn thuật tốn tốt Thơng thường ta vào tiêu chuẩn sau: + Thuật toán đắn + Thuật toán đơn giản + Thuật toán thực nhanh Một thuật toán thuật tốn có thời gian thực nhanh tiết kiệm tài nguyên máy tính Khi lựa chọn thuật toán để giải toán cụ thể cần vào lượng tài ngun mà thuật tốn đòi hỏi lượng tài nguyên thực tế cho phép Khi học sinh nắm vững nhiều dạng thuật toán làm nhiều tốn khó việc lựa chọn thuật tốn tối ưu hiệu Vì tơi giới thiệu số toán lựa chọn thuật toán tối ưu để giải toán 2.3.1 Bài toán tìm ước chung lớn (ƯCLN) số nguyên dương M, N Thuật toán để giải toán: - Sử dụng phép trừ - Sử dụng phép chia lấy dư Ý tưởng thuật toán sử dụng phép trừ - Nếu M= N giá trị chung ƯCLN M, N - Nếu M > N ƯCLN (M,N) = ƯCLN (M – N, N) - Nếu M < N ƯCLN (M,N) = ƯCLN (M , N - M) Chương trình Function UCLN (M, N:longint):longint; Beginh While M < > N if M > N then M:= M – N else N:= N – M; UCLN:= M; End; Ý tưởng thuật toán sử dụng phép chia lấy dư ƯCLN số M, N ƯCLN số (M M mod N M > N) (N N mod M M < N) Function UCLN (M, N:longint):longint; Begin While (M < > 0) or (N < > ) if M > N then M:= M mod N else N:= N mod M; UCLN:= M + N; End; Đánh giá thuật toán: Thuật toán sử dụng phép chia lấy dư tối ưu phải thực phép tính 2.3.2 Bài toán xếp Trên thực tế, việc lựa chọn thuật toán xếp dựa vào nhiều yếu tố như: liệu vào có số lượng nào? có xếp sẵn hay khơng? Dung lượng nhớ? tốc độ xử lí CPU? Để giải toán sử dụng: - Thuật toán xếp bọt - Thuật toán xếp chọn - Thuật toán xếp nhanh Ý tưởng thuật toán xếp bọt: -So sánh phần tử số trước lớn số sau  đổi chỗ chúng cho - Tiếp tục làm với cặp phần tử khơng có đổi chỗ xảy Thủ tục xếp bọt: procedure SX_noibot; var i,j, y:longint; begin for i:= to n for j:= n downto i if a[j] < a[j - 1] then begin y:=a[i]; a[i]:=a[j]; a[j]:=y; end; end; Ý tưởng thuật toán xếp chọn: - Chọn phần tử nhỏ N phần tử đầu, đưa phần tử vị trí - Khơng quan tâm tới nữa, dãy n-1 phần tử vị trí - Lặp lại đến dãy phần tử Thủ tục xếp chọn Procedure SX_chon; Var i,j,min, y:longint; Begin for i:=1 to n-1 begin k:=i; min:=a[i]; for j:=i + to n if a[j] < then begin min:= a[j]; k:=j; end; y:=a[i]; a[i]:=a[k]; a[k]:=y; end; end; Ý tưởng thuật toán xếp nhanh: - Trong đoạn cần xếp từ lr chọn điểm chốt - Mọi giá trị < điểm chốt xếp trước - Mọi giá trị > điểm chốt xếp sau - Đoạn (l,r) chia thành đoạn - Tiếp tục với đoạn vừa phân chia lời gọi đệ quy Thủ tục xếp nhanh Procedure SX_nhanh(l,r:longint); Var i, j, x, y: longint; Begin i:=l; j:=r; x:=a[(l+r) div 2]; repeat while a[i ] < x inc(i); while a[j] > x dec(j); if i j; if i < r then SX_chon(i,r); if j > l then SX_chon(j,l); end; Đánh giá thuật toán: - Thuật toán xếp nhanh chạy nhanh (nhanh thuật toán xếp dựa việc so sánh phần tử) - Độ phức tạp thuật toán xếp bọt O(n 2), xếp chọn O(n2), xếp nhanh O(nlog n) 2.3.3 Bài tốn tìm kiếm - Sử dụng thuật tốn tìm kiếm - Sử dụng thuật tốn tìm kiếm nhị phân Ý tưởng thuật tốn tìm kiếm - So sánh phần tử dãy a, từ a[1] a[n] với giá trị x - Nếu tìm thấy x thơng báo thứ tự phần tử i thỏa mãn a[i] = x - Nếu duyệt hết mà khơng tìm thấy việc tìm kiếm với kết = Thủ tục Procedure TK_tuantu; Var i: longint; Begin For i:= to n If a[i] = x then write(‘tim thay’) else write(‘khong tim thay’); end; Ý tưởng thuật tốn tìm kiếm nhị phân Giả sử dãy a xếp tăng, ta có: aG = a[(n +1)/2] - Nếu aG = k đưa số G, kết thúc - Nếu aG > k  tìm dãy (a1, a2,…aG-1) - Nếu aG < k tìm dãy (aG1, aG2, …aN ) Quá trình lặp lại tìm thấy phạm vi tìm kiếm rỗng Thủ tục Procedure TK_nhiphan; var d,c:longint; begin d:=1; c:=n; while d k then c:=G-1 else d:=G +1; end; end; Nhận xét: Do độ phức tạp thuật tốn tìm kiếm nhị phân O(logn) độ phức tạp thuật tốn tìm kiếm O(n) nên thời gian thực chương trình nhanh, thuật tốn tìm kiếm nhị phân tối ưu 2.3.4 Bài tốn số nguyên tố - Sử dụng định nghĩa (tính chất chia hết sử dụng vào lặp for- do) - Sử dụng sàng nguyên tố - Sử dụng tính chất chia hết cho Ý tưởng thuật toán sử dụng tính chất chia hết dùng vòng lặp for- - Kiểm tra số nguyên N [2, ] - Nếu N=1 N khơng phải số nguyên tố - Nếu < N < N ngun tố - N>= khơng có ước [ 2, ]  nguyên tố Hàm sử dụng định nghĩa: Function KT1(N:longint): boolean; Var i: longint; Begin if N = then exit (false); for i:= to trunc(sqrt(N)) if N mod i = then exit(false); exit(true); end; Sử dụng sàng nguyên tố - Đánh dấu tất số số nguyên tố - Với số nguyên tố < + Đánh dấu bội lớn khơng phải số ngun tố + Tìm số đánh dấu số nguyên tố, khơng số chương trình -Các số bị đánh dấu số nguyên tố Thủ tục sàng nguyên tố Procedure Sang_NT;; var i,j: longint begin fillchar(F,sizeof(F),true); F[1]:= false; for i:= to trunc(sqrt(N)) if F[i] then for j:=2 to n div I F[i*j] := false; End; Sử dụng tính chất chia hết cho Thuật toán: - Các số nguyên tố số lẻ (trừ số 2) - Các số nguyên tố có dạng 6k ± 1, 6k -1 (trừ số số 3) số có dạng 6k ± chia hết cho 2; dạng 6k ± chia hết cho3 - Kiểm tra xem N có chia hết cho 2,3 số có dạng 6k ± đoạn [5, ] Hàm sử dụng tính chất chia hết cho Function KT2(N:longint): boolean; var i,x:longint; begin if (N = 2) or (N = 3) then exit(true); if (N = ) or (N mod = 0) or (N mod = 0) then exit(false); x:=trunc(sqrt(N)); i:=-1; repeat inc(i,6); if (n mod i = 0) or (n mod (i+2)=0) then break; until i > x; exit(i>x); end; Nhận xét: - Thuật toán theo sử dụng tính chất chia hết cho giảm số cần kiểm tra [2, ]  số có dạng 6k ± 1,trong [5, ] - Thuật toán sàng nguyên tố dùng liệu cho ‘0’) then g[j]:= min(g[j],i); end; end; 10 Nhận xét: - Bài toán dùng thuật toán quay lui xây dựng tốn tìm dãy nhị phân ta loại bỏ số dãy đáng kể, nhược điểm thuật tốn chạy chậm Do đó, dùng thuật tốn quy hoạch động để quét hết test toán 2.4 Hiệu sáng kiến kinh nghiệm - Giúp học sinh biết cách lựa chọn cài đặt thuật toán tối ưu, hiệu đem lại rõ nét, tránh học sinh test giải toán điểm thực hành thi - Học sinh nâng cao tính tư duy, sáng tạo, vận dụng linh hoạt thuật toán tối ưu lựa chọn Do thời gian để học sinh thiết kế giải toán nhanh Đồng thời giúp học sinh u thích mơn tin học, đặc biệt lập trình - Chương trình THPT nay, ngơn ngữ lập trình phần mềm thay đổi qua thời gian, thuật toán việc lựa chọn thuật toán phù hợp với toán bắt buộc - Qua thi giáo viên giỏi cấp trường tổ chức hàng năm, thân tơi có thêm nhiều kinh nghiệm, nâng cao chuyên môn Tôi tiếp tục tìm tòi, học hỏi bạn bè, đồng nghiệp, nghiên cứu sách, học qua tài liệu, internet…để tìm thêm nhiều thuật tốn hay phục vụ cho cơng việc KẾT LUẬN, KIẾN NGHỊ 3.1 Kết luận Thông qua việc lựa chọn thuật toán tối ưu để giải tốn: - Chương trình THPT nay, ngơn ngữ lập trình thay đổi qua thời gian, nói ngơn ngữ lập trình Pascal chương trình lớp 11 xem “cũ” Thế sử dụng thuật toán, đặc biết lựa chọn thiết kế thuật tốn ln quan trọng - Thơng qua tiết tập tiết thực hành, giáo viên biết nhược điểm học sinh tư thuật tốn Từ giúp học sinh dần hình thành tư logic chặt chẽ, biết sử dụng tư thuật toán để giải toán cụ thể - Khi học Pascal hầu hết học sinh thấy khó thấy “mới”, từ mơn học đến cách học Những thao tác thực hành nhiều cách sử dụng internet, sử dụng phần mềm soạn thảo văn word,…khơng tác dụng, học thuộc khó Lúc học sinh phải học cách tư logic, tìm hiểu thuật toán, biết cách lựa chọn thuật toán tối ưu, viết dòng lệnh máy tính phải xác đến dấu chấm, dấu phẩy… 3.2 Kiến nghị Để giúp học sinh u thích mơn tin học, đặc biệt lập trình mong quan tâm, tạo điều kiện nhà trường mặt sở vật chất (tương đối đủ máy tính, máy chiếu, chất lượng máy nâng lên, bảo trì sửa chữa thường xuyên hơn) 11 Mặc dù cố gắng đề tài tơi viết nhiều hạn chế, mong góp ý bạn bè, đồng nghiệp để đề tài hồn thiện có tính thực tiễn cơng việc giảng dạy Tơi xin chân thành cảm ơn XÁC NHẬN CỦA THỦ TRƯỞNG Thanh Hóa, ngày 20 tháng năm 2019 ĐƠN VỊ Tôi xin cam đoan SKKN viết, không chép nội dung người khác Nguyễn Thị Đào 12 TÀI LIỆU THAM KHẢO Giải thuật lập trình – thầy Lê Minh Hoàng https://drive.google.com/file/d/0BwcTB8a10LBweWxNcExnVzF5dG8/view (Tài liệu giáo khoa chuyên tin) https://drive.google.com/file/d/0BwcTB8a10LBwZHh0c3p0M2NqZ1E/view (Một số vấn đề đáng ý mơn tin học) Giáo trình thuật tốn kỹ thuật lập trình Pascal- Nhà xuất Hà Nội https://tailieu.vn/doc/sang-tao-trong-thuat-toan-va-lap-trinh-945871.html (Sáng tạo thuật tốn lập trình) 13 DANH MỤC SÁNG KIẾN KINH NGHIỆM ĐÃ ĐƯỢC HỘI ĐỒNG SÁNG KIẾN KINH NGHIỆM SỞ GIÁO DỤC VÀ ĐÀO TẠO XẾP LOẠI Họ tên tác giả: Nguyễn Thị Đào Chức vụ: Giáo viên Đơn vị công tác: Trường THPT Nông Cống TT Tên đề tài SKKN Cấp đánh giá xếp loại Xây dựng hệ thống trực tuyến mạng Sở GD&ĐT Thanh Hóa nội Kết đánh giá xếp loại Năm học đánh giá xếp loại C 2016 – 2017 14 ... cho phép Khi học sinh nắm vững nhiều dạng thuật toán làm nhiều tốn khó việc lựa chọn thuật tốn tối ưu hiệu Vì tơi giới thiệu số toán lựa chọn thuật toán tối ưu để giải tốn 2.3.1 Bài tốn tìm ước... chiếm lĩnh tri thức, kỹ tin học cần thiết, để học sinh thấy rõ hiệu công nghệ thông tin - Học sinh thực tốt lựa chọn thuật toán tối ưu để giải toán chất lượng học sinh nâng cao, lập trình 2.2... Giúp học sinh biết cách lựa chọn cài đặt thuật toán tối ưu, hiệu đem lại rõ nét, tránh học sinh test giải toán điểm thực hành thi - Học sinh nâng cao tính tư duy, sáng tạo, vận dụng linh hoạt thuật

Ngày đăng: 16/07/2019, 10:12

Từ khóa liên quan

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

Tài liệu liên quan