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

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 về học sinh giỏi lớp 11

33 118 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

Định dạng
Số trang 33
Dung lượng 69,74 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỞ ĐẦU1.1 Lí do chọn đề tài Với sự phát triển như vũ bảo của Tin học tôi luôn trăn trở làm thế nào đào tạo ra các thế hệ học sinh có trình độ về tin học cụ thể hơn là về lập trình, vậy

Trang 1

MỤC LỤC

Trang

I Mở đầu 2

1.1 Lí do chọn đề tài 2

1.2 Mụ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 3

II Nội dung sáng kiến kinh nghiệm 3

2.1 Cơ sở lí luận của bit và các phép xử lí bit 3

A Khái niệm về bit và nội dung liên quan đến bit 3

a Khái niệm bit 3

b Mã hóa thông tin trong máy tính 3

c Hệ đếm 3

B Các phép xử lí bit 4

a Phép cộng bit 4

b.Phép đảo bit 4

c Phép nhân bit 5

d.Phép loại trừ bit 5

e Phép dịch bit phải 6

f.Phép dịch bit trái 6

II.2 Thực trạng vấn đề trước khi áp dụng SKKN 6

II.3 Các giải pháp giải quyết vấn đề 7

A Giúp học sinh lớp 10 hiểu về bit và chuyển đổi sang hệ nhi phân của bộ mã ASCII 7

B Áp dụng bit giải các bài toán học sinh giỏi tin lớp 11 10

II.4 Hiệu quả của sáng kiến kinh nghiệm 21

III Kết luận và 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 các sáng kiến kinh nghiệm đã đạt …24

Trang 2

V Phụ lục …25

Trang 3

I MỞ ĐẦU

1.1 Lí do chọn đề tài

Với sự phát triển như vũ bảo của Tin học tôi luôn trăn trở làm thế nào đào tạo

ra các thế hệ học sinh có trình độ về tin học cụ thể hơn là về lập trình, vậy để làmđược điều đó tôi luôn phải đổi mới phương pháp giảng dạy cho phù hợp với từngbài học, tiết học, từng đối tượng học sinh, đặc biệt là trong bồi dưỡng đội tuyểnhọc sinh giỏi

Trong những năm gần đây, trong các đề thi học sinh giỏi tỉnh, quốc gia cũng nhưcác bài tập trên các trang giải bài trực tuyến nhưvn.spoj.com, vnoi.info, … cónhiều bài tập mà nếu chúng ta sử dụng các kiến thức như đệ quy, duyệt, quy hoạchđộng, … có thể giải quyết được nhưng gặp nhiều khó khăn về mặt tốc độ cũng nhưgiới hạn dữ liệu Trong khi đó nếu chúng ta sử dụng kĩ thuật xử lí theo bit hoặc cácphương pháp trên có kết hợp với các thao tác xử lý theo bit lại cho một hiệu quả rất

rất cao Chính vì thế tôi chọn đề tài “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” làm đề tài nghiên cứu của

mình để đáp ứng được lí do trên

I.2 Mục đích nghiên cứu

Mục đích nghiên cứu của sáng kiến kinh nghiệm là nghiên cứu cơ sở lí luận vàthực tiễn để học sinh nắm vững các khái niệm về bit (mã nhị phân), mã hóa đượccác số thành mã nhị phân như trong bộ mã ASCII

Cung cấp thêm một số kiến thức sâu hơn về bit (phần này học sinh được học ởchương trình lớp 10 nhưng không sâu) và ứng dụng của phương pháp xử lí bit giảimột số bài toán học sinh giỏi tin học một cách hiệu quả hơn

Đối với bản thân và đồng nghiệp cùng trao đổi để bồi dưỡng thêm về kiến thứcchuyên môn, nâng cao trình độ, mở rộng thêm vốn kiến thức hạn hẹp của mình.Nếu thực hiện được mục tiêu trên học sinh và giáo viên sẽ hứng thú khi học vềbit cũng như giải các bài toán khó bị giới hạn dữ liệu và 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 bài 2: “ Thông tin và dữ liệu”, bài đọc thêm số 2

Trang 4

- Cách xử lí bit và ứng dụng vào giải các bài tập học sinh giỏi THPT, các bàitập trên các 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 cơ sở lí luận về bit, các phép xử lí bit

- Nghiên cứu tài liệu về các chuyên đề như loang, DFS, BFS, , lí thuyết vềcác phép toán trên bit

Trên cơ sở đó phân tích, tổng hợp, khái quát, … rút ra những vấn đề cần thựchiện trong đề tài

Tham khảo và trao đổi ý kiến với bạn bè, đồng nghiệp, cấp trên Tham gia giảibài, phân tích, đánh giá, góp ý trên các câu lạc bộ, diễn đàn trực tuyến

II NỘI DUNG SÁNG KIẾN KINH NGHIỆM

Ví dụ : Tung đồng xu có hai mặt hoàn toàn cân xứng với khả năng xuất hiệncủa mỗi mặt là như nhau Kí hiệu mỗi mặt của đồng xu là 1 và mặt kia là 0 thì sựxuất hiện kí hiệu 1 hay 0 sau khi tung đồng xu cho ta một lượng thông tin là 1 bit

b Mã hóa thông tin

Thông tin có nhiều dạng khác nhau nhưng khi đưa vào máy tính chúng đềuđược biến đổi thành dạng chung – dãy bit Dãy bit đó là mã nhị phân của thông tin

mà nó biểu diễn cách biến đổi như vậy được gọi là 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ố trong hệ thập phân được xác định theo quy tắc: mỗi đơn vị ở mộthàng bất kì có giá trị bằng 10 đơn vị ở hàng kế cận bên phải

- Hệ nhị phân

Trang 5

Các phép toán xử lý bit đối với 2 dãy bit x, y sẽ xử lý lần lượt bit thứ nhất của

x với bit thứ nhất của y, bit thứ 2 của x với bit thứ 2 của y, … bit thứ k của x vớibit thứ k của y, cứ như vậy cho đến hết

b Phép đảo bit (not)

Toán tử đảo bit not (còn gọi là toán tử lấy phần bù) là toán tử một ngôi thựchiện phủ định luận lý trên từng bit, tạo thành bù 1 của giá trị nhị phân cho trước.Bit nào là 0 thì sẽ trở thành 1 và 1 sẽ trở thành 0

Trang 6

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 toán hạng nhị phân có chiều dài bằng nhau vàthực hiện phép toán lý luận and trên mỗi cặp bit tương ứng bằng cách nhân chúnglại với nhau Nhờ đó, nếu cả 2 bit ở vị trí được so sánh đều là 1 thì bit hiển thị ởdạng nhị phân sẽ là 1 (1 x 1 = 1), ngược lại kết quả sẽ là 0 (1 x 0 = 0)

d Phép loại trừ bit (xor)

Phép toán thao tác bit xor lấy hai dãy bit có cùng độ dài và thực hiện phép toánlogic bao hàm or trên mỗi cặp bit tương ứng Kết quả ở mỗi vị trí là 1 chỉ khi bitđầu tiên là 1 hoặc nếu chỉ khi bit thứ 2 là 1, nhưng sẽ là 0 nếu cả hai là 0 hoặc cảhai là 1 Ở đây ta thực hiện phép so sánh 2 bit, kết quả là 1 nếu hai bit khác nhau

và là 0 nếu hai bit giống nhau

Trang 7

Dịch chuyển dãy sang phải k bit.

- Khi học sinh học bài 2 “Thông tin và dữ liệu” các em đã nắm bắt được đơn vị

đo lượng thông tin là Bit nhưng các em mới thấy loáng thoáng

- Rồi đến bộ mã ASCII các em đều thấy phức tạp với dãy các con số 0 và 1 dàyđặc Và đến đây các em phải nhớ máy móc các dãy bit trong bộ mã ASCII này.Vấn đề ở đây là có những cách nào giúp các em tự chuyển đổi được sang mãnhị phân mà không cần phải nhớ máy móc nữa Tôi mạnh dạn đưa ra cách mớingoài sách giáo khoa

- Tuy dãy bit trong bài này chỉ là nội dung nhỏ của chương trình nhưng nếukhông biết sẽ không hiểu máy tính mã hóa thông tin như thế nào và các ứng dụngcủa bit ra sao

b lớp 11

Khi học sinh cũng như giáo viên làm đến các bài toán học sinh giỏi thì vấn đềcần quan tâm là làm sao để giải được với dữ liệu lớn, ít bộ nhớ mà tốc độ cao.Khi tìm ra giải pháp giải quyết vấn đề trên thì các bài tập được giải dễ dànghơn, output được tối đa hơn

Vậy làm thế nào để làm được điều đó tôi mạnh dạn ứng dụng Bit vào giải cácbài toán này

2.3 Các giải pháp giải quyết vấn đề

A Giúp học sinh lớp 10 hiểu rõ hơn về bit và tự hoàn thành bộ mã ASCII

Trang 8

- Các khái niệm về Bit sách giáo khoa đã trình bầy nên tôi không trình bầy lại nữa.Vậy nên giờ tôi chỉ giới thiệu thêm cách chuyển số từ hệ thập phân sang hệ nhịphân như sau:

Cách 1: Chuyển theo cách ở bài đọc thêm số 2 sách giáo khoa.

Lấy số thập phân chia liên tiếp cho 2 (hoặc 16 ở hệ hexa) cho đến khi nhận đượcthương số bằng 0 Để có dãy nhị phân ta viết các số dư theo thứ tự ngược lại (số dưsau cùng viết trước và tiếp tục cho đến hết)

VD: 1110= ?2=?16

Chia 11 cho 2 được các số dư là 1,1,0,1 Viết ngược lại được 1011 nhưng để biểudiễn 8 bit thì ta thêm các bit không phía trước thành: 00001011

Tương tự hệ 16 là: B biểu diễn 3 bit thì thành 00B

Cách 2: Kẻ bảng điền các bit 0 hoặc 1 để được các số cần biểu diễn.

Vấn đề là làm sao để điền nhanh các bit mà vẫn chính xác

Ta có: nếu có n bit thì có 2n số thập phân được biểu diễn và phạm vi biểu diễn là

từ 0 đến 2n-1

Ví dụ1: 2 bit có 22=4 số thập phân từ 0 đến 3 được biểu diễn ở mã nhị phân

Ta có bảng sau: gồm cột mã thập phân, và có 2 bit nên mã nhị phân có 2 cột

Trang 9

- Thì có 2n số thập phân được biểu diễn và phạm vi biểu diễn là từ 0 đến 2n -1.

- Đầu tiên xác định số cột của mã nhị phân: chính là số bit để biểu diễn

Vd: n=3 bit thì có 3 cột ở mã nhị phân

- Điền các bit 0 và 1 vào các cột lần lượt từ cột phải sang trái theo quy luật:

+ Đầu tiên phải là các bit 0 trước rồi mới xen kẽ các bit 1

+ số lượng bit 0 và 1 đặt xen kẽ nhau là bằng 2n (với n bắt đầu từ 0 đến n-1)

Điền như vậy ta được bảng như trên

Và đến đây các em mở bộ mã ASCII ra và so sánh Ta thấy ở bộ mã biểu diễngiống bảng ta biểu diễn chỉ khác có thêm các bit 0 đứng trước cho đủ 8 bit

Như vậy các em tự biểu diễn được các số thập phân sang nhị phân một cách đơngiản mà không phải nhớ máy móc như trước

Tương tự các em lập bảng với n=4 cho cô

Kết quả các em điền dễ ràng như sau:

Trang 11

B Áp dụng bit vào giải các bài tập học sinh giỏi lớp 11

Tôi tình bày thông qua các bài toán cụ thể như sau:

Bài 1 Liệt kê tập con

Cho tập hợp con N phần tử khác nhau, liệt kê tất cả các tập hợp con của tập Nphần tử đã cho (kể cả tập rỗng)

Nhận xét: Xét một dãy gồm N bit Khi đó với mỗi tập con của tập N phần tử

đều có thể biểu diễn bằng dãy N bit này và ngược lại mỗi dãy bit có độ dài N đềubiểu diễn một tập con của tập N phần tử Do đó ta có thể duyệt tất cả các dãy bit độdài N để xuất ra tập con tương ứng Mặt khác ta có với tất cả các dãy bit độ dài Ntương ứng với giá trị 0 cho đến 2n – 1

Do đó với bài toán trên ta có thể giải quyết như sau: Duyệt biến x chạy từ 0 đến

2n-1 Với mỗi giá trị x, xuất ra tập con dựa vào dãy bit của nó

Chương trình tham khảo:

Trang 12

Bài 2 Hoán đổi giá trị hai biến

Cho 2 số a và b Viết chương trình hoán đổi vị trí của hai số a và b cho nhau

Nhận xét: Với bài toán trên chúng ta thường giải quyết theo 2 phương pháp là

sử dụng biến trung gian để hoán đổi hoặc không sử dụng biến trung gian Chươngtrình như sau:

Chương trình 1: Không sử dụng biến trung gian.

Trang 13

Phân tích, đánh giá: Với hai chương trình trên chúng ta thấy mỗi chương trình

đều có ưu điểm và nhược điểm riêng của nó Với chương trình 1 dù là kiểu dữ liệu

là kiểu số nguyên hay kiểu số thực thì khi a và b lớn thì tổng (a + b) sẽ vượt quagiới hạn của các kiểu dữ liệu (tràn dữ liệu) nên dẫn đến kết quả bài toán sẽ sai Vớichương trình 2 thì khắc phục được lỗi của chương trình 1 nhưng về mặt tốc độ sẽchậm hơn do phải khai báo thêm một biến t và thực hiện các câu lệnh gán Chúng

ta có thể khắc phục được nhược điểm của mỗi cách trên bằng phương pháp xử líbit với chương trình như sau:

Chương trình 3:Dùng xử lý bit, tính chất của phép xor.

program doi_cho_3;

Trang 14

var a,b: real;

Nhận xét:Bài toán sắp xếp là một bài toán chúng ta đã biết và chúng ta cũng đã

có nhiều thuật toán dùng để sắp xếp Tuy nhiên với bài toán trên chúng ta thấy điềuđặc biệt ở đây là về giới hạn của dữ liệu Nếu ta sử dụng mảng để lưu trữ và sắpxếp thì thật khó khăn vì dung lượng bộ nhớ cũng như thời gian sắp xếp đã chiếmmột mức thời gian lớn Ta cũng có thể sử dụng phương pháp sắp xếp ngoài bằngfile nhưng đây cũng chưa phải là một phương pháp tối ưu vì vấn đề thời gian

Tuy nhiên, phương pháp sắp xếp đánh dấu bằng một vài thủ thuật dùng bit thô

sơ lại cho ta một kết quả tốt Ta chỉ cần dùng một mảng kiểu byte với khoảng

63000 phần tử là đủ để xử lý bài toán này Khởi tạo một mảng ban đầu với tất cảcác phần tử đều bằng 0 Với mỗi phần tử đọc từ file ra ta đánh dấu bit tương ứngtrong mảng cho tới khi hết file bằng thủ tục batbit Để lấy kết quả ghi ra file, tadùng hàm laybit

Chương trình tham khảo:

program bai_3;

const

Trang 16

Yêu cầu: Tìm ra số xuất hiện lẽ lần.

Dữ liệu vào: Tệp SNUM.INP có cấu trúc:

 Dòng đầu tiên ghi giá trị n;

 N dòng tiếp theo mỗi dòng ghi một số nguyên dương;

Dữ liệu ra: Tệp SNUM.OUT có cấu trúc:

 Gồm một dòng ghi số đặc biệt tìm được

Giới hạn:

 1<=n<=2*10^6, mỗi số nguyên có giá trị<=10^9

 Thời gian thực hiện mỗi test không quá 1s

Trang 17

9876

Nhận xét:Với bài toán trên, ta có các cách làm như sử dụng đếm phân phối

hoặc sắp xếp dãy lại theo một thứ tự nhất định rồi duyệt tìm số xuất hiện lẽ lần

Đoạn chương trình 1: Dùng đếm phân phối.

Đoạn chương trình 2: Dùng sắp xếp, xin chỉ được trình

bày đoạn xử lý sau khi đã sắp xếp

Trang 18

Với việc sử dụng sắp xếp, giá trị của các số nguyên trong dãy số không bị phụthuộc, quá trình duyệt chỉ tốn độ phức tạp O(n), tổng độ phức tạp chung của thuậttoán là O(n^2) hoặc O(nlogn), tức là phụ thuộc vào độ phức tạp của quá trình sắpxếp Với giới hạn đề bài n<=2000000, thì việc chạy qua những test có n lớn chỉ là

do may mắn!

Để khắc phục được các nhược điểm trên ta sử dụng phương pháp xử lí bit, cụthể với bài này ta sử dụng tính chất của phép xor Với cách này chương trình sẽchạy qua hết mọi test của bài toán chỉ với độ phức tạp O(n) mà không có bất kỳmột hạn chế nào

Đoạn chương trình 3: Dùng xử lý bit, phép xor.

Trang 19

writeln(ans);

Bài 5 Lại là chuỗi (Nguồn: laptrinh.ntu.edu.vn – Mã bài: STRAIGAIN)

Cho một xâu S chỉ gồm hai kí tự A và B Tại mỗi bước đi, bạn phải chọn ra 2hoặc 3 kí tự liên tiếp, sau đó đảo ngược nó lại (A thành B và B thành A) Hỏi cầntối thiểu bao nhiêu bước để tất cả các kí tự trong xâu S đều giống nhau

Dữ liệu vào: Tệp STANDARD.INP có cấu trúc:

 Dòng đầu tiên chứa một số nguyên dương N là số lượng kí tự của xâu S (2 ≤

N ≤ 20)

 Dòng thứ hai chứa xâu S gồm N kí tự

Dữ liệu ra: Tệp STANDARD.OUT ra có cấu trúc:

 Gồm một dong là số bước biến đổi ít nhất để tất cả các kí tự trong xâu S đềugiống nhau Dữ liệu đảm bao luôn có kết quả

Nhận xét: Với bài này chúng ta cũng dùng tư tưởng BFS Trong quá trình biến

đổi để sinh cấu hình, nếu ta dùng xử lý bình thường, thì sẽ mất rất nhiều thời gian

vì mỗi lần vậy phải duyệt đến N ký tự, không thể chạy qua hết test Với xử lý bit,

Trang 20

daobit:= x xor bit[c];

if d<>0 then daobit:=daobit xor bit[d-1];

Trang 22

2.4 Hiệu quả của sáng kiến kinh nghiệm

Tôi đã áp dụng vào lớp học, trường học của mình kết quả đạt được như sau:

- Đối với học sinh lớp 10 đã hiểu rõ bit và cách biểu diễn dạng nhị phân.Viết được mã nhi phân cho các số trong bộ mã ASCII

- Đối với học sinh lớp 11 đã biết cách vận dụng bit vào giải các bài toán họcsinh giỏi có dữ liệu lớn, cần ít thời gian và bộ nhớ

- Ưu điểm về bộ nhớ

Đối với ngôn ngữ lập trình có bộ nhớ hạn chế như Turbo Pascal, xử lý bit cóthể được sử dụng để tạo mảng đánh dấu Ví dụ biến boolean chỉ đánh dấu đượcmột phần tử có giá trị true hay false trong khi nếu xử lý bit thì một biến booleantương ứng 8 bit giá trị 0,1 do đó có thể đánh dấu cho 8 phần tử

- Ưu điểm về tốc độ

Trong ngôn ngữ máy tính, các phép toán thao tác bit thực hiện tính toán (theotừng bit) trên một hoặc hai chuỗi bit hoặc các số nhị phân Việc thực thi các phéptoán thao tác bit thường nhanh hơn so với khi thực thi các phép toán khác nhưcộng, trừ, nhân, chia, …

- Đối với tôi cũng như các đồng nghiệp đã trau rồi được nhiều kiến thức trongdạy và bồi dưỡng học sinh giỏi, giúp cho công việc giảng dạy nhẹ nhànghơn Và chúng tôi cũng đã đạt được một số thành tích cao

Trang 23

III KẾT LUẬN VÀ KIẾN NGHỊ

Hướng phát triển của đề tài: Tìm thêm nhiều bài tập có thể áp dụng các phươngpháp kết hợp xử lý trên bit hiệu quả và phân dạng để áp dụng một cách hiệu quảtrong công tác bồi dưỡng đội tuyển học sinh giỏi

Đề tài được hoàn thành ngoài sự nổ lực cố gắng của bản thân còn có sự giúp đỡcủa các bạn bè đồng nghiệp Tuy nhiên do điều kiện thời gian cũng như kinhnghiệm giảng dạy còn chưa nhiều nên nội dung có thể còn gặp nhiều hạn chế Rấtmong nhận được nhiều sự đóng góp ý kiến của quý thầy cô, bạn bè đồng nghiệp để

đề tài có thể hoàn thiện hơn và áp dụng vào giảng dạy bồi dưỡng học sinh giỏi mộtcách hiệu quả

3.2 Kiến nghị

Để áp dụng đề tài hiệu quả trong quá trình bồi dưỡng giáo viên cần bồi dưỡngnhiều hơn nữa về lí thuyết và một số thao tác xử lí trên bit và các phương phápkhác để ứng dụng phương pháp này cũng như kết hợp các phương pháp vớiphương pháp này một cách hiệu quả nhất

Hướng dẫn, khuyến khích học sinh tham gia giải bài, tìm kiếm các bài tập cóphân dạng về xử lí bit trên các trang mạng giải bài trực tuyến (đặc biệt trên trangvn.spoj.com)

Ngày đăng: 31/10/2019, 14:10

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w