ĐỊNH HƯỚNG BỒI DƯỠNG HỌC SINH GIỎI MÔN TIN HỌC
A ậ ĐỊNH H NG B I D ỠNG H C SINH GI I TIN H C Các thi Olympic Tin học triển khai rộng rãi gần h t nước th giới hướng tới mục đích: Đẩy mạnh phong trào dạy học Tin học nhằm đáp ứng yêu cầu sống tin học hóa sâu rộng với tốc độ cao lĩnh vực, Phát nhân tố bật để đào tạo khai thác nguồn nhân lực đ nh cao, có tri thức có tay ngh theo k p phát triển lý thuy t yêu cầu thực t Việc đào tạo, bồi dưỡng học sinh giỏi Tin học ch u tác động nhi u hai y u tố: Sự phát triển lý thuy t, Sự phát triển công cụ Tin học Để đáp ứng đòi hỏi trên, ngư i lập trình phải bi t tận dụng tối đa khả mà phần cứng hệ điều hành cung cấp Hệ thống lập trình Free Pascal tạo u kiện để ngư i dùng khai thác tối đa khả phần cứng B CÔNG C L P TRÌNH Trang b ki n thức v ngơn ngữ lập trình chưa bao gi vấn đ lớn tin học Đi u quan trọng kỹ thuật lập trình tổ chức liệu Khi bi t tương đối tốt ngơn ngữ lập trình việc chuyển sang lập trình hệ thống lập trình đơn giản Ví dụ ngơn ngữ truy n thống PASCAL với hệ thống lập trình Free Pascal Đương nhiên, chọn ngơn ngữ làm cơng cụ cho ngư i lập trình cần phải: Bi t rõ điểm mạnh yếu ngôn ngữ hệ thống hệ thống lập trình hỗ trợ, Cần nắm vững dịch vụ mà hệ thống lập trình cung cấp, Cần có thói quen suy nghĩ hành động phù hợp với ngơn ngữ hệ thống lập trình, Cần bi t sâu tốt thư viện chuẩn hỗ trợ lập trình bi t khai thác chúng cách tối ưu N u có cách ti p cận hợp lý vấn đ giải quy t cách đơn giản hiệu nước ta, bậc PTTH hệ thống lập trình sử dụng phổ bi n ngơn ngữ PASCAL với hệ thống lập trình Free Pascal Việc trang b công cụ cho học sinh u, phục vụ cho kỳ thi Tin học vấn đ ta cần xem xét xử lý C BÀI T P VÀ CH NG TRÌNH VI T TRÊN H THƠNG FREE PASCAL Để hỗ trợ cho việc triển khai giảng dạy Pascal (dựa s hệ thống lập trình Free Pascal) Các tập giới thiệu kèm theo với l i giải Khi có đủ tự tin việc lập trình ta thấy l i giải đưa dạng chương trình hồn thiện ch có tác dụng chủ y u để tạo tests Với toán, quan trọng cần thi t gợi ý v giải thuật Việc dẫn xuất đầy đủ chương trình cần thi t, ch giai đoạn đầu trình đào tạo, bồi dưỡng học sinh Việc tổ chức gợi ý giải thuật nhi u th i gian công sức việc trực ti p vi t chương trình giải! Tuyệt đối tránh cung cấp cho học sinh chương trình hồn thiện từ đầu, học sinh chưa hiểu giải thuật, chưa bắt tay tự lập trình Sau tơi phân chia tập gồm ba dạng: + Các tập v số học + Các tập v xử lí dãy số + Các baaif tập sử dụng xâu Các t p s h c Tận dụng hai kiểu số nguyên lớn có sẵn hệ thống lập trình Free Pascal QWORD INT64 Sau số tập sử dụng hai kiểu liệu Bài t p 1: Kiểm tra tính nguyên tố số nguyên dương N? Input: cho số nguyên dương N (N≤1014) Output: đưa “Yes” n u N nguyên tố đưa “NO” n u N không số nguyên tố Hướng dẫn giải thuật: Đây toán kinh điển dạy v ngơn ngữ lập trình N u tốn vi t hệ thống Turbo Pascal tốn khó, khơng có kiểu số ngun s lưu trữ N Nhưng với này, ta sử dụng hệ thống Free Pascal đơn giản - Do kinh điển nên khơng cần trình bày dài dịng, sau chương trình cài đặt hệ thống Free Pascal Sau hàm kiểm tra số N số nguyên tố hay không? function kt(n:longint):boolean; var ok:boolean; i:longint; begin if n Yêu cầu: Cho số nguyên n (1 ≤ n 1013) Hãy tìm ước lớn khơng chứa phương n Lưu ý n ước n Dữ liệu: Vào từ file văn SQFREE.INP gồm nhi u tests, test cho dòng chứa số nguyên n Kết quả: Đưa file văn SQFREE.OUT, k t test đưa dịng Ví dụ: SQFREE.INP 20 H SQFREE.OUT 10 ng d n giải thu t: - N u làm toán theo đ nh nghĩa đưa (hay làm theo cách tự nhiên) ch qua test nhỏ - Để giải quy t triệt để tốn tìm ước khơng chứa phương N ta phân tích N thành tích thừa số nguyên tố, ước lớn thỏa mãn yêu cầu tích thừa số nguyên tố Ví dụ N=2i3j5k ước lớn khơng chứa phương 2.3.5 Ch ng trình: var f1,f2:text; n,i,s:int64; begin assign(f1,'sqfree.inp'); reset(f1); assign(f2,'sqfree.out'); rewrite(f2); while not eof(f1) begin readln(f1,n); i:=2; s:=1; while n>1 begin if n mod i=0 then begin s:=s*i; while n mod i =0 n:=n div i; end; i:=i+1; if i*i>n then break; end; if n>1 then s:=s*n; writeln(f2,s); end; close(f1); close(f2); end Các t p dãy s Tận dụng khả máy tính nay, nhớ kích thước lớn Hệ thống lập trình Free Pascal m rộng nhớ cho chương trình lớn gấp nhi u lần so với Turbo Pascal (Đi u nói kĩ chuyên đ tập huấn đầu năm) Sau số tập cho thấy việc nhớ chương trình m rộng giúp cho việc giải số tập cách dễ dàng Bài t p 1: Đ NH Đ BERTRAN Đ nh đ Bertran: “ Với số nguyên n ≥ bao gi tìm thấy số nguyên tố p thỏa mãn n < p < 2n” Đ nh đ nhà toán học Pháp Jojeph Bertran đưa năm 1845 sau kiểm tra với n ≤ 000 000 Đi u Tchebưsep chứng minh năm 1850 Năm 1932 Erdoeus tìm cách chứng minh đơn giản Nhiệm vụ bạn rộng chút: với n cho trước, xác đ nh số lượng số nguyên tố p thỏa mãn u kiện n < p < 2n Dữ liệu: Vào từ file văn BERTRAN.INP gồm nhi u tests, test cho dòng chứa số nguyên dương n (1 ≤ n ≤ 107) Kết quả: Đưa file văn BERTRAN.OUT, k t test đưa dòng dạng số nguyên Ví dụ: BERTRAN.INP 239 3000 H BERTRAN.OUT 39 353 ng d n giải thu t: + Với kích thước tốn trên, n u với số n ta thử tất số m từ n+1 tới 2n, kiểm tra m có số ngun tố hay khơng chương trình chạy chậm không đạt yêu cầu + Để làm ta phải sử dụng thuật toán sàng số nguyên tố Do nhớ Free Pascal lớn nên ta khai báo mảng a chứa 10 triệu phần tử Trong a[i]=true n u i nguyên tố ngược lại i khơng ngun tố Ch ng trình: const fi='bertran.inp'; fo='bertran.out'; var f1,f2:text; n,res,i,j:longint; a:array[1 30000000] of boolean; BEGIN assign(f1,fi); reset(f1); assign(f2,fo); rewrite(f2); fillchar(a,sizeof(a),true); //sang so nguyen to for i:=2 to round(sqrt(6000000)) if a[i] then for j:=2 to 6000000 div i a[i*j]:=false; while not seekeof(f1) begin readln(f1,n); res:=0; for i:=n+1 to 2*n-1 if a[i] then inc(res); writeln(f2,res,a[2*n-1]); end; close(f1); close(f2); END Bài t p 2: B t c Có hịn đảo đẹp, thu hút nhi u khách du l ch đ n thăm Trên đảo có n ngư i thuộc nhi u tộc sinh sống.Dân cư đảo thân thiện.Mỗi ngư i thuộc tộc đó.Trong đồn du l ch có nhà nhân chủng học Tranh thủ d p may ghé thăm đảo ông khơng bỏ phí th i gian ti n hành khảo sát Ông gặp ngư i đảo với câu hỏi nhất: “Trên đảo, tộc bạn có ngư i?” Từ k t khảo sát, ông xác đ nh số tộc khác tồn đảo Ví d : với n=10 câu trả l i 5, 1, 2, 5, 5, 2, 5, 5, 2, ta suy đảo có tộc khác Yêu cầu: cho n câu trả l i Hãy xác đ nh số tộc đảo.Dữ liệu đảm bảo tốn có nghiệm Dữ li u: vào từ file văn CLAN.INP - Dòng chứa số nguyên n (1ans2 then writeln('YES') else writeln('NO'); write(ans2); close(input); close(output); end D K t lu n Trên số kinh nghiệm rút trình dạy học sinh giỏi Tin học năm qua Các tập cài đặt hiệu hệ thông Free Pascal Kinh nghiệm cho thấy, học sinh chuyển từ hệ thống Turbo Pascal sang hệ thống Free Pascal khơng gặp khó khăn gì, em quen với Free Pascal tỏ thích thú Đó vài kinh nghiệm thân muốn chia sẻ với anh ch em đồng nghiệp Chắc chắn không tránh thi u xót, mong nhận ý ki n đóng góp bàn bè đồng nghiệp để hồn thiện sáng ki n kinh nghiệm Tôi xin chân thành cám ơn! Tài li u tham khảo: Bài vi t có sử d ng tài li u tham khảo c a thầy Nguy n Thanh Tùng, nguyên giảng viên ĐH Bách Khoa HƠ N i ... tập cài đặt hiệu hệ thông Free Pascal Kinh nghiệm cho thấy, học sinh chuyển từ hệ thống Turbo Pascal sang hệ thống Free Pascal khơng gặp khó khăn gì, em quen với Free Pascal tỏ thích thú Đó vài... i?” Từ k t khảo sát, ông xác đ nh số tộc khác tồn đảo Ví d : với n=10 câu trả l i 5, 1, 2, 5, 5, 2, 5, 5, 2, ta suy đảo có tộc khác Yêu cầu: cho n câu trả l i Hãy xác đ nh số tộc đảo.Dữ liệu đảm... nguyên, số tộc đảo Ví dụ: Clan.inp 10 5 5 2 H Clan.out ng d n giải thu t - Đây ti p tục thể việc cài đặt Free Pascal tiện lợi đơn giản nhi u so với Turbo Pascal - Gọi d[i] số ngư i có câu trả