1. Trang chủ
  2. » Tất cả

SKKN Giúp học sinh hiểu rõ hơn về bit ở lớp 10 và áp dụng bit giải các bài tập học sinh giỏi lớp 11

20 3 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

Nội dung

SKKN Giúp học sinh hiểu rõ hơn về bit ở lớp 10 và áp dụng bit giải các bài tập học sinh giỏi lớp 11 Sáng kiến kinh nghiệm Môn tin học 1 MỤC LỤC Trang I Mở đầu 2 1 1 Lí do chọn đề tài 2 1 2 Mục đích ng[.]

Sáng kiến kinh nghiệm Môn tin học MỤC LỤC Trang I II 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 .3 Nội dung sáng kiến kinh nghiệm 2.1 Cơ sở lí luận bit phép xử lí bit A Khái niệm bit nội dung liên quan đến bit a Khái niệm bit .3 b Mã hóa thơng tin máy tính c Hệ đếm B Các phép xử lí bit a Phép cộng bit .4 b Phép đảo bit c Phép nhân bit .5 d Phép loại trừ bit e Phép dịch bit phải f.Phép dịch bit trái 2.2 Thực trạng vấn đề trước áp dụng SKKN 2.3 Các giải pháp giải vấn đề A Giúp học sinh lớp 10 hiểu bit chuyển đổi sang hệ nhi phân mã ASCII .7 B Áp dụng bit giải toán học sinh giỏi tin lớp 11 .10 2.4 Hiệu sáng kiến kinh nghiệm 21 III Kết luận kiến nghị 22 3.1 Kết luận 22 3.2 Kiến nghị 22 3.3 Tài liệu tham khảo …23 IV Danh mục sáng kiến kinh nghiệm đạt …24 V Phụ lục …25 SangKienKinhNghiem.net Sáng kiến kinh nghiệm I MỞ ĐẦU Mơn tin học 1.1 Lí chọn đề tài Với phát triển vũ bảo Tin học trăn trở làm đào tạo hệ học sinh có trình độ tin học cụ thể lập trình, để làm điều tơi ln phải đổi phương pháp giảng dạy cho phù hợp với học, tiết học, đối tượng học sinh, đặc biệt bồi dưỡng đội tuyển học sinh giỏi Trong năm gần đây, đề thi học sinh giỏi tỉnh, quốc gia tập trang giải trực tuyến nhưvn.spoj.com, vnoi.info, … có nhiều tập mà sử dụng kiến thức đệ quy, duyệt, quy hoạch động, … giải gặp nhiều khó khăn mặt tốc độ giới hạn liệu Trong sử dụng kĩ thuật xử lí theo bit phương pháp có kết hợp với thao tác xử lý theo bit lại cho hiệu rất cao Chính chọn đề tài “Giúp học sinh hiểu rõ bit lớp 10 áp dụng bit giải tập học sinh giỏi lớp 11” làm đề tài nghiên cứu để đáp ứng lí 1.2 Mục đích nghiên cứu Mục đích nghiên cứu sáng kiến kinh nghiệm nghiên cứu sở lí luận thực tiễn để học sinh nắm vững khái niệm bit (mã nhị phân), mã hóa số thành mã nhị phân mã ASCII Cung cấp thêm số kiến thức sâu bit (phần học sinh học chương trình lớp 10 khơng sâu) ứng dụng phương pháp xử lí bit giải số toán học sinh giỏi tin học cách hiệu Đối với thân đồng nghiệp trao đổi để bồi dưỡng thêm kiến thức chun mơn, nâng cao trình độ, mở rộng thêm vốn kiến thức hạn hẹp Nếu thực mục tiêu học sinh giáo viên hứng thú học bit giải tốn khó bị giới hạn liệu thời gian 1.3 Đối tượng nghiên cứu -Học sinh khối 10 trường THPT Thiệu Hóa - Học sinh khối 11 trường THPT Thiệu Hóa - Nội dung kiến thức 2: “ Thông tin liệu”, đọc thêm số 2 SangKienKinhNghiem.net Sáng kiến kinh nghiệm Môn tin học - Cách xử lí bit ứng dụng vào giải tập học sinh giỏi THPT, tập trang trực tuyến: vnoi.info, laptrinh.ntu.edu.vn,… 1.4 Phương pháp nghiên cứu - Nghiên cứu sở lí luận bit, phép xử lí bit - Nghiên cứu tài liệu chuyên đề loang, DFS, BFS, , lí thuyết phép toán bit Trên sở phân tích, tổng hợp, khái qt, … rút vấn đề cần thực đề tài Tham khảo trao đổi ý kiến với bạn bè, đồng nghiệp, cấp Tham gia giải bài, phân tích, đánh giá, góp ý câu lạc bộ, diễn đàn trực tuyến II NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lí luận A Khái niệm bit, mã hóa thơng tin, hệ đếm a Bit Bit (Binary digit) đơn vị nhỏ dùng để biểu diễn thông tin máy tính Mỗi bit chữ số nhị phân thể hai trạng thái với khả xuất Ví dụ : Tung đồng xu có hai mặt hồn tồn cân xứng với khả xuất mặt Kí hiệu mặt đồng xu mặt xuất kí hiệu hay sau tung đồng xu cho ta lượng thông tin bit b Mã hóa thơng tin Thơng tin có nhiều dạng khác đưa vào máy tính chúng biến đổi thành dạng chung – dãy bit Dãy bit mã nhị phân thơng tin mà biểu diễn cách biến đổi gọi mã hóa thơng tin c Hệ đếm - Hệ thập phân: Sử dụng tập kí hiệu gồm 10 chữ số 0,1,2,3,4,…,9 để biểu diễn Giá trị số hệ thập phân xác định theo quy tắc: đơn vị hàng có giá trị 10 đơn vị hàng kế cận bên phải - Hệ nhị phân SangKienKinhNghiem.net Sáng kiến kinh nghiệm Chỉ dùng hai kí hiệu chữ số Mơn tin học Vd: 1012= 1x22+0x21+1x20=510 - Hệ hexa (cơ số 16) Sử dụng kí hiệu: 0,1,2,3,…,9,A,B,C,D,E,F Vd: 1BE16= 1x162+11x161+14x160=44610 B Các phép xử lý bit Các phép toán xử lý bit dãy bit x, y xử lý bit thứ x với bit thứ y, bit thứ x với bit thứ y, … bit thứ k x với bit thứ k y, hết a Phép cộng bit (or) Phép toán thao tác bit or lấy hai dãy bit có độ dài thực phép tốn lí luận bao hàm or cặp bit tương ứng Kết vị trí bit 0, ngược lại kết Ví dụ X y x or y 0 0 1 1 1 x = 0101 (số thập phân 5) y = 0011 (số thập phân 3) x or y = 0111 (số thập phân 7) b Phép đảo bit (not) Tốn tử đảo bit not (cịn gọi tốn tử lấy phần bù) tốn tử ngơi thực phủ định luận lý bit, tạo thành bù giá trị nhị phân cho trước Bit trở thành trở thành x not x 1 SangKienKinhNghiem.net Sáng kiến kinh nghiệm Ví dụ Mơn tin học x = 0111 (số thập phân 7) not x = 1000 (số thập phân 8) c Phép nhân bit (and) Toán tử thao tác bit and lấy hai tốn hạng nhị phân có chiều dài thực phép toán lý luận and cặp bit tương ứng cách nhân chúng lại với Nhờ đó, bit vị trí so sánh bit hiển thị dạng nhị phân (1 x = 1), ngược lại kết (1 x = 0) X y x and y 0 0 1 0 1 Ví dụ x = 0101 (số thập phân 5) y = 0011 (số thập phân 3) x and y = 0001 (số thập phân 1) d Phép loại trừ bit (xor) Phép toán thao tác bit xor lấy hai dãy bit có độ dài thực phép tốn logic bao hàm or cặp bit tương ứng Kết vị trí bit bit thứ 1, hai hai Ở ta thực phép so sánh bit, kết hai bit khác hai bit giống X y x xor y 0 0 1 1 1 SangKienKinhNghiem.net Sáng kiến kinh nghiệm Ví dụ Môn tin học x = 0101 (số thập phân 5) y = 0011 (số thập phân 3) x xor y = 0110 (số thập phân 6) e Phép dịch bit phải (shr k) Dịch chuyển dãy sang phải k bit Ví dụ x = 13(00001101) x shr = 3(00000011) f Phép dịch trái (shl k) Dịch chuyển dãy sang trái k bit Ví dụ x = 13(00001101) x shl = 54(00110100) 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm a lớp 10 - Khi học sinh học “Thông tin liệu” em nắm bắt đơn vị đo lượng thông tin Bit em thấy loáng thoáng - Rồi đến mã ASCII em thấy phức tạp với dãy số dày đặc Và đến em phải nhớ máy móc dãy bit mã ASCII Vấn đề có cách giúp em tự chuyển đổi sang mã nhị phân mà khơng cần phải nhớ máy móc Tơi mạnh dạn đưa cách sách giáo khoa - Tuy dãy bit nội dung nhỏ chương trình khơng biết khơng hiểu máy tính mã hóa thơng tin ứng dụng bit b lớp 11 Khi học sinh giáo viên làm đến tốn học sinh giỏi vấn đề cần quan tâm để giải với liệu lớn, nhớ mà tốc độ cao SangKienKinhNghiem.net Sáng kiến kinh nghiệm Môn tin học Khi tìm giải pháp giải vấn đề tập giải dễ dàng hơn, output tối đa Vậy làm để làm điều tơi mạnh dạn ứng dụng Bit vào giải toán 2.3 Các giải pháp giải vấn đề A Giúp học sinh lớp 10 hiểu rõ bit tự hoàn thành mã ASCII - Các khái niệm Bit sách giáo khoa trình bầy nên tơi khơng trình bầy lại Vậy nên giới thiệu thêm cách chuyển số từ hệ thập phân sang hệ nhị phân sau: Cách 1: Chuyển theo cách đọc thêm số sách giáo khoa Lấy số thập phân chia liên tiếp cho (hoặc 16 hệ hexa) nhận thương số Để có dãy nhị phân ta viết số dư theo thứ tự ngược lại (số dư sau viết trước tiếp tục hết) VD: 1110= ?2=?16 Chia 11 cho số dư 1,1,0,1 Viết ngược lại 1011 để biểu diễn bit ta thêm bit khơng phía trước thành: 00001011 Tương tự hệ 16 là: B biểu diễn bit thành 00B Cách 2: Kẻ bảng điền bit để số cần biểu diễn Vấn đề để điền nhanh bit mà xác Ta có: có n bit có 2n số thập phân biểu diễn phạm vi biểu diễn từ đến 2n-1 Ví dụ1: bit có 22=4 số thập phân từ đến biểu diễn mã nhị phân Ta có bảng sau: gồm cột mã thập phân, có bit nên mã nhị phân có cột Mã thập phân Mã nhị phân 0 1 1 SangKienKinhNghiem.net Sáng kiến kinh nghiệm Mơn tin học Ví dụ 2: bit có 23=8 số thập phân từ đến biểu diễn mã nhị phân Ta có bảng sau: Mã thập phân Mã nhị phân 0 0 0 1 0 1 1 1 Đến giáo viên hỏi học sinh tìm quy luật để điền bit vào cột mã nhị phân Nhiều học sinh khơng tìm nghĩ phải học thuộc lòng bảng mã ASCII Đến giáo viên gợi ý đưa phương pháp sau: Phương pháp: Ta có có n bit: - Thì có 2n số thập phân biểu diễn phạm vi biểu diễn từ đến 2n -1 - Đầu tiên xác định số cột mã nhị phân: số bit để biểu diễn Vd: n=3 bit có cột mã nhị phân - Điền bit vào cột từ cột phải sang trái theo quy luật: + Đầu tiên phải bit trước xen kẽ bit + số lượng bit đặt xen kẽ 2n (với n đến n-1) Vd: n=3 Cột từ phải sang 20=1 tức bit đến bit bit cho hết hàng Cột từ phải sang 21=2 Tức bit xen bit 1, bit 0, cho hết Cột từ phải sang 22=4 Tức bit xen bit 1, bit 0, cho hết SangKienKinhNghiem.net Sáng kiến kinh nghiệm Nhận xét: Môn tin học Điền ta bảng Và đến em mở mã ASCII so sánh Ta thấy mã biểu diễn giống bảng ta biểu diễn khác có thêm bit đứng trước cho đủ bit Như em tự biểu diễn số thập phân sang nhị phân cách đơn giản mà khơng phải nhớ máy móc trước Tương tự em lập bảng với n=4 cho cô Kết em điền dễ ràng sau: Mã thập phân Mã nhị phân 0 0 0 0 0 1 0 1 1 1 0 0 10 1 11 1 12 1 0 13 1 14 1 15 1 1 SangKienKinhNghiem.net Sáng kiến kinh nghiệm B Áp dụng bit vào giải tập học sinh giỏi lớp 11 Môn tin học Tôi tình bày thơng qua tốn cụ thể sau: Bài Liệt kê tập Cho tập hợp N phần tử khác nhau, liệt kê tất tập hợp tập N phần tử cho (kể tập rỗng) Nhận xét: Xét dãy gồm N bit Khi với tập tập N phần tử biểu diễn dãy N bit ngược lại dãy bit có độ dài N biểu diễn tập tập N phần tử Do ta duyệt tất dãy bit độ dài N để xuất tập tương ứng Mặt khác ta có với tất dãy bit độ dài N tương ứng với giá trị 2n – 00…000 = 00…001 = 00…010 = …………… 11…110 = 2n - 11…111 = 2n - Do với tốn ta giải sau: Duyệt biến x chạy từ đến 2n-1 Với giá trị x, xuất tập dựa vào dãy bit Chương trình tham khảo: program bai_1; const fi = 'bai4.inp'; fo = 'bai4.out'; var a: array[0 30] of longint; n,i,j,t: longint; function geb(x, y: longint): longint; begin exit(1 and (x shr y)); end; 10 SangKienKinhNghiem.net Sáng kiến kinh nghiệm begin Môn tin học assign(input,fi); reset(input); assign(output,fo); rewrite(output); readln(n); for i:= to n read(a[i]); for i:= to (1 shl n)-1 begin for j:= to n begin t:= geb(i, j-1); if t=1 then write(a[j],' '); end; writeln; end; close(input); close(output); end Bài Hoán đổi giá trị hai biến Cho số a b Viết chương trình hốn đổi vị trí hai số a b cho Nhận xét: Với toán thường giải theo phương pháp sử dụng biến trung gian để hốn đổi khơng sử dụng biến trung gian Chương trình sau: Chương trình 1: Khơng sử dụng biến trung gian program doi_cho_1; var a,b:real; begin write('nhap vao hai so a, b:='); readln(a,b); 11 SangKienKinhNghiem.net Sáng kiến kinh nghiệm a:= a+b; Môn tin học b:= a-b; a:= a-b; writeln('gia tri sau hoan doi la: a = ',a:8:2,' b = ',b:8:2); readln end Chương trình 2: Sử dụng biến trung gian program doi_cho_2; var a,b,t:real; begin write('nhap vao hai so a, b:='); readln(a,b); t:= a; a:= b; b:= t; writeln('gia tri sau hoan doi la: a = ',a:8:2,' b = ',b:8:2); readln end Phân tích, đánh giá: Với hai chương trình thấy chương trình có ưu điểm nhược điểm riêng Với chương trình dù kiểu liệu kiểu số nguyên hay kiểu số thực a b lớn tổng (a + b) vượt qua giới hạn kiểu liệu (tràn liệu) nên dẫn đến kết toán sai Với chương trình khắc phục lỗi chương trình mặt tốc độ chậm phải khai báo thêm biến t thực câu lệnh gán Chúng ta khắc phục nhược điểm cách phương pháp xử lí bit với chương trình sau: Chương trình 3:Dùng xử lý bit, tính chất phép xor program doi_cho_3; 12 SangKienKinhNghiem.net Sáng kiến kinh nghiệm var a,b: real; Môn tin học begin write('nhap vao hai so a, b:='); readln(a,b); a:= a xor b; b:= b xor a; a:= a xor b; writeln('gia tri sau hoan doi la: a = ',a:8:2,' b = ',b:8:2); readln end Bài Sắp xếp dãy Cho tệp data.dat gồm số nguyên không âm nhỏ 500 000 đôi khác Hãy xếp tệp theo thứ tự tăng dần đưa tệp result.dat Nhận xét:Bài toán xếp toán biết có nhiều thuật tốn dùng để xếp Tuy nhiên với toán thấy điều đặc biệt giới hạn liệu Nếu ta sử dụng mảng để lưu trữ xếp thật khó khăn dung lượng nhớ thời gian xếp chiếm mức thời gian lớn Ta sử dụng phương pháp xếp ngồi file chưa phải phương pháp tối ưu vấn đề thời gian Tuy nhiên, phương pháp xếp đánh dấu vài thủ thuật dùng bit thô sơ lại cho ta kết tốt Ta cần dùng mảng kiểu byte với khoảng 63000 phần tử đủ để xử lý toán Khởi tạo mảng ban đầu với tất phần tử Với phần tử đọc từ file ta đánh dấu bit tương ứng mảng hết file thủ tục batbit Để lấy kết ghi file, ta dùng hàm laybit Chương trình tham khảo: program bai_3; const 13 SangKienKinhNghiem.net Sáng kiến kinh nghiệm fi = 'data.dat'; Môn tin học fo = 'result.dat'; bt=8; max=63000; var a:array[0 max] of byte; f:text; procedure finish; var i,j:longint; function laybit(x,j:longint):byte; begin laybit:=(x shr j) and 1; end; begin assign(f,fo);rewrite(f); for i:=0 to max for j:=0 to bt-1 if laybit(a[i],j)=1 then write(f,(i*bt+j),' '); close(f); end; procedure start; var i,tg:longint; procedure batbit(x,y:longint); begin a[x]:=a[x] or (1 shl y) end; begin fillchar(a, sizeof (a), 0); 14 SangKienKinhNghiem.net Sáng kiến kinh nghiệm assign(f,fi);reset(f); Môn tin học while not seekeof(f) begin read(f,tg); batbit(tg div bt,tg mod bt) end; close(f); end; begin start; finish; end Bài Số đặc biệt Cho dãy gồm n số nguyên dương, có số xuất lẻ lần, số cịn lại có số lần xuất số chẵn lần Yêu cầu: Tìm số xuất lẽ lần Dữ liệu vào: Tệp SNUM.INP có cấu trúc:  Dịng ghi giá trị n;  N dòng dòng ghi số nguyên dương; Dữ liệu ra: Tệp SNUM.OUT có cấu trúc:  Gồm dịng ghi số đặc biệt tìm Giới hạn:  1

Ngày đăng: 04/11/2022, 04:15

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

TÀI LIỆU LIÊN QUAN

w