Lý do chọn đề tài Trong thực tiễn dữ liệu của máy tính đều phải sử dụng đến một hệ đếm nào đó, một số bài toán lập trình của Tin học lớp 11 cũng có liên quan đến hệ đếm.. Việc học sinh t
Trang 1MỤC LỤC
1 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 2
1.5 Những điểm mới của SKKN 2
2 Nội dung sáng kiến kinh nghiệm 3
2.1 Cơ sở lí luận của sáng kiến kinh nghiệm 3
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm 3
2.3 Các sáng kiến kinh nghiệm đã sử dụng để giải quyết vấn đề 3
2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản thân, đồng nghiệp và nhà trường
12 3 Kết luận, kiến nghị
13 3.1 Kết luận
13 3.2 Kiến nghị
13 TÀI LIỆU THAM KHẢO
14
Trang 21 MỞ ĐẦU
1.1 Lý do chọn đề tài
Trong thực tiễn dữ liệu của máy tính đều phải sử dụng đến một hệ đếm nào đó, một số bài toán lập trình của Tin học lớp 11 cũng có liên quan đến hệ đếm Qua quá trình tham gia giảng dạy Tin học khối 10, để HS hiểu sâu hơn về bản chất của quá trình mã hóa dữ liệu trong máy tính và cũng là tiền đề cho việc lập trình các bài toán liên quan đến các hệ đếm Tôi nhận thấy việc chuyển đổi giữa các hệ đếm trong Tin học thường gặp rất nhiều trong các bài toán lớp 10, vận dụng linh hoạt vào các bài toán lớp 11 và trong các đề thi HSG tỉnh cũng không phải là dễ Việc học sinh tìm hiểu về tất cả các hệ đếm nói chung và cách chuyển đổi giữa các hệ đếm nói riêng còn khá nhiều lúng túng bởi thời gian học phần này của lớp 10 chỉ
có 1 tiết mà còn nhiều vấn đề khác nữa nên các em nắm kiến thức chưa vững và chưa sâu Đặc biệt là những yêu cầu của các bài toán lập trình lớp 11 và đề thi HSG cấp tỉnh liên quan đến cách chuyển đổi giữa các hệ đếm học sinh thường không biết bắt đầu từ đâu để giải quyết vấn đề mà bài toán đưa ra Hơn nữa các em lớp 11 hầu như quên kiến thức cũ của lớp 10 dẫn đến kỹ năng khi làm việc với các
hệ đếm của học sinh thường không đáp ứng được yêu cầu đề ra
1.2 Mục đích nghiên cứu
Với mong muốn phần nào giúp học sinh trong việc chuyển đổi các hệ đếm một cách dễ dàng, tìm ra lời giải cho một số bài toán liên quan tới hệ đếm dễ dàng hơn, nhất là giúp cho các em học sinh có thể yêu thích nhiều hơn nữa môn Tin học, tôi
xin giới thiệu chuyên đề “Áp dụng cách chuyển đổi giữa các hệ đếm trong Tin
học lớp 10 để vận dụng khi lập trình” mà tôi đã áp dụng có hiệu quả trong quá
trình giảng dạy Chuyên đề được trình bày dựa trên kinh nghiệm giảng dạy của bản thân và tham khảo một số tài liệu liên quan
1.3 Đối tượng nghiên cứu
- Đối tượng khảo sát: Học sinh khối 11 của lớp: 11A2, 11A3, 11A6 và học sinh đội tuyển tỉnh
1.4 Phương pháp nghiên cứu
- Hình thành được kỹ năng tính toán, chuyển đổi giữa các hệ đếm trong Tin học giải các bài tập cho học sinh và có được một hệ thống kiến thức với các bài tập về các hệ đếm Phạm vi thực hiện trên các hệ đếm của Tin học
1.5 Những điểm mới của đề tài
- Học sinh sau khi được giới thiệu một cách hệ thống các dạng bài tập về cách chuyển đổi giữa các hệ đếm và quy trình giải quyết từng dạng đã có thể nhận biết yêu cầu của bài toán và cách thức giải quyết chúng một cách hiệu quả
- Hình thành ở HS kỹ năng phân tích, xử lý các vấn đề liên quan đến bài tập về
hệ đếm, sử dụng thành thạo vòng lặp biết trước, thủ tục chuẩn vào/ra đơn giản, bước đầu làm quen với 1 số chương trình con dạng thủ tục tạo điều kiện thuận lợi cho việc tiếp thu kiến thức về cách viết chương trình và bồi dưỡng HS giỏi tỉnh
Trang 32 NỘI DUNG
2.1 CƠ SỞ LÍ LUẬN
Ngày nay, trên thế giới đang diễn ra quá trình tin học hoá trên nhiều lĩnh vực hoạt động của xã hội loài người và đem lại nhiều hiệu quả to lớn Việc sử dụng máy tính không còn chỉ bó hẹp trong viện nghiên cứu, các trường đại học, các trung tâm máy tính mà còn mở rộng ra mọi cơ quan, tổ chức kinh tế và trong các gia đình Song song với quá trình trên, việc giảng dạy Tin học trong các trường THPT cũng được đẩy mạnh đi đôi với việc tăng cường trang bị máy vi tính Đảng
và Nhà nước ta đã nhận thấy được tầm quan trọng của ngành Tin học và đã đưa môn học này vào trường phổ thông như những môn học khác bắt đầu từ năm học 2006-2007
Trong bối cảnh toàn ngành GD-ĐT đang nỗ lực đổi mới phương pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động học tập Điều 24.2 của Luật giáo dục đã nêu rõ: “Phương pháp giáo dục phổ thông phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh ” Như vậy, chúng ta có thể thấy định hướng đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đề tranh luận Cốt lõi của việc đổi mới phương pháp dạy học ở trường phổ thông là giúp học sinh hướng
dung trong đề tài này, HS có thể tự học, tự rèn luyện thông qua một số bài tập, dạng bài tập cụ thể
2.2 Thực trạng của vấn đề trước khi áp dụng sáng kiến kinh nghiệm
- Qua thực tế giảng dạy ở trường THPT Hậu Lộc 4 nhiều năm, tôi nhận thấy
khi học đến chương trình Tin học lớp 11 đa số học sinh đều cho rằng đây là môn học khó nhất trong các môn học Nhiều em còn sợ môn học này và còn khá nhiều
bỡ ngỡ khi tiếp cận với lập trình có cấu trúc, cũng như quên cách chuyển đổi giữa các hệ đếm trong Tin học ở lớp 10 Chính vì vậy, học sinh thường gặp nhiều khó khăn khi thực hiện viết chương trình pascal ở lớp 11 Từ đó dẫn đến các em không biết xử lí thế nào và bắt đầu từ đâu khi gặp các bài toán phức tạp liên quan đến chuyển đổi các hệ đếm trong Tin học Đặc biệt hơn nữa là những lớp 11 học ban cơ bản và ban xã hội của trường THPT Hậu Lộc 4 chúng tôi – một trường thuộc khu vực bãi ngang ven biển học sinh không được chịu khó lắm khi gặp các bộ môn khó
và cần tư duy logic nhiều như môn Tin học lớp 11 của Bộ GD – ĐT
2.3 Các sáng kiến kinh nghiệm đã sử dụng để giải quyết vấn đề
- Với cách chuyển đổi các hệ đếm ở bài tập pascal lớp 11 giáo viên có thể tạo sự
hứng thú cho học sinh bằng các bài tập cụ thể của cách chuyển đổi các hệ đếm ở lớp 10 Qua đó các em có thể giải các các bài toán trong thực tế, bước đầu viết được một số chương trình về chuyển đổi các hệ đếm
Trang 4- Do đặc trưng của bộ môn nên học sinh muốn học được tốt môn Tin học cần có
được tư duy khái quát xác định được hết các khả năng của một vấn đề
- Phát triển nhân cách học sinh khi tham gia làm các bài tập về cách chuyển đổi
các hệ đếm có thể rèn luyện tính tích cực chủ động sáng tạo trang việc chọn hướng giải quyết một vấn đề cụ thể thông qua việc liệt kê các khả năng của nó
Cụ thể tôi xin đưa ra một số vấn đề mà giáo viên cần truyền đạt kỹ cho học sinh lớp 11 để các em xâu chuỗi vấn đề một cách tốt nhất, hỗ trợ cho việc viết chương trình được hoàn thiện hơn như sau:
I Một số vấn đề về hệ đếm.
1 Khái niệm hệ đếm
- Khái niệm: Hệ đếm được hiểu như là một tập các kí hiệu và quy tắc sử dụng tập kí hiệu đó
- Trong các hệ đếm:
+ Có hệ đếm mà giá trị các số phụ thuộc vào vị trí đứng, như hệ đếm thập phân
Ví dụ: 255 gồm 2 trăm, 5 chục, 5 đơn vị
+ Có hệ đếm mà giá trị các số không phụ thuộc vào vị trí đứng, như hệ đếm
La Mã
Ví dụ: IV hay VI thì I là 1, V là 5 dù đứng ở vị trí nào
2 Khái niệm về các hệ đếm trong Tin học:
- Hệ đếm thập phân (cơ số 10): Là hệ đếm gồm 10 chữ số 0, 1, 2, 3, 4, 5, 6,7,8,9
- Hệ đếm nhị phân (cơ số 2): Là hệ đếm gồm 2 chữ số 0 và 1
- Hệ đếm bát phân (cơ số 8): Là hệ đếm gồm 8 chữ số 0, 1, 2, 3, 4, 5, 6, 7
- Hệ đếm Hexa (cơ số 16): Là hệ đếm gồm 10 chữ số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
và 6 chữ cái A, B, C, D, E, F tương ứng với 6 số 10, 11, 12, 13, 14, 15
II Chuyển đổi giữa các hệ đếm trong Tin học
* Xây dựng công thức tổng quát cho việc chuyển đổi giữa các hệ đếm:
Trong hệ đếm thập phân ta có: 234=2*102 + 3*101 + 4*100
Vậy số N= dndn-1dn-2…d2d1d0,d-1d-2d-3… dm-1dm trong hệ đếm cơ số b được biểu diễn như sau:
N = dn.bn + dn-1.bn-1 + dn-2.bn-2 +…+ d-1.b-1 + d0.b0 + d-1.b-1 +d-2.b-2 + …
+ dm-1.bm-1 +dm.bm
1 Chuyển đổi biểu diễn số ở hệ thập phân sang hệ đếm cơ số khác:
Để chuyển đổi biểu diễn một số ở hệ thập phân sang hệ đếm cơ số khác, trước hết ta tách phần nguyên và phần phân rồi tiến hành chuyển đổi từng phần, sau đó ghép lại để có kết quả cần tìm
a Chuyển đổi biểu diễn phần nguyên
Cho N là số tự nhiên và b là cơ số của hệ đếm Giả sử giá trị của N được tính theo công thức: N = dnbn + dn-1bn-1 + …+ d0 (1)
Trang 5Vì 0 d0 < b nên khi chia N cho b thì phần dư của phép chia đó là d0 còn thương số N1 sẽ là:
N1 = dnbn-1 + dn-1bn-2 + …+ d1 (2)
phép chia đó Quá trình chia như vậy được thực hiện liên tiếp và ta sẽ lần lượt nhận được giá trị các di Quá trình này sẽ dừng lại khi nhận được thương số bằng 0 Để
có biểu diễn cần tìm, các phần dư thu được cần sắp xếp theo thứ tự là dn…d0
Ví dụ: 7510 = ?2 = ?16 = ?8
Sau khi thực hiện theo cách trên ta có:
7510 = 10010112
7510 = 4B16 và 7510 = 1138
b Chuyển đổi biểu diễn phần phân:
Cho N’ là phần phân( phần sau dấu phẩy) của một số và b là cơ số của hệ đếm Giả sử N’ được tính theo công thức:
N’ = d-1b-1 + d-2b-2 + …+ d-mb-m (1’)
Nhân hai vế của (1’) với b ta được:
N’1 = d-1 + d-2b-1 + …+ d-mb-(m-1)
của kết quả là:
Lặp lại phép nhân như trên đối với (2’), ta thu được d-2 là phần nguyên Thực hiện liên tiếp phép nhân theo cách trên, cuối cùng ta thu được dãy d-1d-2 d-3 …trong
đó 0 d-i < b
Ví dụ: 0,6787510 = ?2
Thực hiện phép nhân theo cách trên, ta có kết quả:
0,6787510 = 0,101011011…2 Cũng thực hiện như trên ta có : 0,843510 = 0,D7EF…16
2 Chuyển đổi biểu diễn số giữa hệ nhị phân và hệ hexa:
Hệ nhị phân và hệ Hexa là hai hệ đếm thường dùng trong Tin học Vì 16 là lũy
hiện dễ dàng Để chuyển đổi biểu diễn số từ hệ nhị phân sang hệ đếm hexa ta áp dụng quy tắc sau:
Gộp các chữ số nhị phân thành từng nhóm bốn chữ số về hai phía kể từ vị trí phân cách phần nguyên và phần phân (các chữ số thiếu nếu có được thay thế bằng chữ số 0)
Thay mỗi nhóm bốn chữ số nhị phân bởi một kí hiệu tương ứng ở hệ hexa
Ví dụ: 1011100101,112 = ?16
Trang 6Thay mỗi nhóm bốn chữ số nhị phân bởi một kí hiệu ở hệ hexa tương ứng: 2,
E, 5, C
Từ đó ta có: 1011100101,112 = 2E5,C16
Để chuyển đổi biểu diễn số ở hệ hexa sang hệ đếm nhị phân ta chỉ cần thay từng
kí hiệu ở hệ hexa bằng nhóm bốn chữ số tương ứng ở hệ nhị phân
Ví dụ: 3,D7EF16 = 0011,1101 0111 1110 11112
3 Chuyển từ hệ đếm cơ số 2 sang hệ đếm 10 :
Theo công thức tổng quát đã xây dựng
N = dn.bn + dn-1.bn-1 + dn-2.bn-2 +…+ d-1.b-1 + d0.b0 + d-1.b-1 +d-2.b-2 + …
+ dm-1.bm-1 +dm.bm
Với b = 2 Ta có ví dụ:
11001011,112 = 1*27 + 1*26 + 0*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20
+ 1*2-1 + 1*2-2
= 128 + 64 + 0 + 0 + 8 + 0 + 2 + 1 + 0,2 + 0,02
= 203,2210
4 Chuyển từ hệ đếm cơ số 8 sang hệ đếm 10
Theo công thức tổng quát đã xây dựng
N = dn.bn + dn-1.bn-1 + dn-2.bn-2 +…+ d-1.b-1 + d0.b0 + d-1.b-1 +d-2.b-2 + …
+ dm-1.bm-1 +dm.bm
Với b = 8 Ta có ví dụ:
471,358 = 4*82 + 7*81 + 1*80 + 3*8-1 + 5*8-2
= 256 + 56 + 1 + 2,4 + 0,4
= 315,810
5 Chuyển từ hệ đếm cơ số 16 sang hệ đếm 10
Theo công thức tổng quát đã xây dựng
N = dn.bn + dn-1.bn-1 + dn-2.bn-2 +…+ d-1.b-1 + d0.b0 + d-1.b-1 +d-2.b-2 + …
+ dm-1.bm-1 +dm.bm
Với b = 16 Ta có ví dụ:
A4F,B3716 = 10*162 + 4*161 + 15*160 + 11*16-1 + 3*16-2 + 7*16-3
= 2560 + 64 + 15 + 17,6 + 0,48 + 0,112
= 2667,19210
III CÁC DẠNG BÀI TẬP THƯỜNG GẶP
1 Dạng 1: Một số bài tập củng cố kiến thức, tạo hứng thú cho HS
Bài 1: Chuyển đổi các số sau sang hệ đếm 10
b 2F516
c 1678
Trang 7Trả lời:
a 001010102 = 0*27 + 0*26 + 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 0*20
= 4210
b 2F516 = 2*162 + 15*161 + 5*160
= 75710
c 1678 = 1* 82 + 6*81 + 7*80
= 11910
Bài 2: Chuyển đổi các số sau sang hệ đếm 2
a 4210
c 178
Trả lời:
a 42 : 2 = 21 dư 0
21 : 2 = 10 dư 1
10 : 2 = 5 dư 0
5 : 2 = 2 dư 1
2 : 2 = 1 dư 0
1 : 2 = 0 dư 1 Vậy 4210 = 001010102
b B4D,C16 = 1011 0100 1101, 11002
c 17 : 2 = 8 dư 1
8 : 2 = 4 dư 0
4 : 2 = 2 dư 0
2 : 2 = 1 dư 0
1 : 2 = 0 dư 1 Vậy 178 = 100012
Bài 3: Chuyển đổi các số sau sang hệ đếm 16
b 75710
Trả lời:
a 0111, 1100 1111 00112 = 7, CF316
b 757 : 16 = 47 dư 5
47 : 16 = 2 dư 15
2 : 16 = 0 dư 2
Vậy 75710 = 2F516
2 Dạng 2: Ứng dụng cách chuyển đổi giữa các hệ đếm vào giải các bài toán lập trình lớp 11:
Trang 8Bài 1 Số hexa
Trong toán học, lâu nay Bờm chỉ biết đến số thập phân Hôm nay, tình cờ Bờm đọc được tài liệu nói về số hexa Số hexa là số được tạo thành bởi các chữsố (0 →9) và các chữcái (A →F) Muốn chuyển đổi một số nguyên K (K ≥ 0) từ hệ thập phân sang hệ hexa Bờm làm như sau: Bờm lấy số K chia cho 16 được thương
là P, rồi lấy thương P chia cho 16 Cứ lặp lại như vậy cho đến khi nào thương bằng
0 thì dừng, sau đó viết liên tiếp phần dư từ dưới lên thì Bờm thu được số hexa:
Yêu cầu: Cho dãy số nguyên ở hệ thập phân Hãy giúp Bờm chuyển dãy số
trên thành dãy số tương ứng ở hệ hexa
Dữliệuvào: Từfilehecoso10.intgồm:
-Dòng1:Sốnguyêndươngn(n≤103)
- Dòng 2…n+1: Mỗi dòng chứa một số nguyên K (0 ≤ K ≤ 109)
Kết quả: Ghi ra file hecoso16.out gồm: n dòng là n số hexa tương ứng.
CHƯƠNG TRÌNH
uses crt;
var n,i,k:longint;
S:string;
f2,f1:text;
function chcs16(M:longint):string;
Var du:longint; He16,T:String;
Begin
He16:=' ';
Repeat
du:=M Mod 16;
If du < 10 Then Str(du, T) Else
T:=Chr(du+55);
He16:=T + He16;
M:= M Div 16;
Until M = 0;
chcs16:=he16;
End;
BEGIN
assign(f1,'hecoso10.int'); reset(f1);
readln(f1,n);
assign(f2,'hecoso16.out'); rewrite(f2);
for i:=1 to n do
begin
readln(f1,k);
writeln(f2,chcs16(k));
end;
close(f2); close(f1); END
Trang 9Bài 2: Từ hệ cơ số 10 sang hệ cơ số 2
CHƯƠNG TRÌNH
program chuyen_cs_10_2;
uses crt;
var i,j,m,N:integer;
S:string;
F1,f2:text;
function nhiphan(n:longint):string;
var s,so,du:integer;
St,St1:string;
begin
s:=0;so:=n; St:='';St1:='';
while (so >0) do
begin
du:=so mod 2;
so:=so div 2;
if du=1 then St:=St+'1' else St:=St+'0'; end;
for i:=length(St) downto 1 do St1:=St1+St[i]; nhiphan:=St1;
end;
BEGIN
assign(f1,'hecoso10.inp'); reset(f1);
assign(f2,'hecoso2.out'); rewrite(f2);
readln(f1,N);
for j:=1 to N do
begin
readln(f1,m);
S:=nhiphan(m);
writeln(f2,S);
end;
close(f1);close(f2);
END
Bài 3: Chuyển từ hệ cơ số 2 sang hệ cơ số 10.
CHƯƠNG TRÌNH
uses crt;
var x,i,j,a,n:longint;
m:array[1 100000] of longint;
S:string;
f1,f2:text;
function luythua(n,x:longint):longint;
var m,i:longint;
Trang 10m:=1;
for i:=1 to n do m:=m*x;
luythua:=m;
end;
BEGIN
assign(f1,'hecoso2.int'); reset(f1);
assign(f2,'hecoso10.out'); rewrite(f2);
readln(f1,n);
for i:=1 to n do
begin
readln(f1,S);
n:=0;a:=length(S);
for j:=1 to length(S) do
begin
if (S[j]='1') or (S[j]='0') then val(S[j],m[j]); n:=n+luythua(a-1,2)*m[j];
dec(a);
end;
writeln(f2,n);
end;
close(f1);close(f2);
END
Câu 4: Hệ cơ số 16 sang 10
CHƯƠNG TRÌNH
uses crt;
var x,i,a,n:longint;
S:string;
f1,f2:text;
FUNCTION luythua(n,x:longint):longint;
var m,i:longint;
begin
m:=1;
for i:=1 to n do m:=m*x;
luythua:=m;
end;
FUNCTION he10(S:string):longint;
var n,i,m,a:longint;
k:array[1 1000] of longint;
begin
n:=0;a:=length(S); i:=1;
for i:=1 to length(S) do
Trang 11if S[i] in ['0' '9'] then val(S[i],k[i])
else
begin
if S[i]= 'A' then k[i]:=10;
if S[i]= 'B' then k[i]:=11;
if S[i]= 'C' then k[i]:=12;
if S[i]= 'D' then k[i]:=13;
if S[i]= 'E' then k[i]:=14;
if S[i]= 'F' then k[i]:=15;
end;
n:=n+luythua(a-1,16)*k[i];
dec(a);
end;
he10:=n;
end;
BEGIN
assign(f1,'hecoso16.inp'); reset(f1);
assign(f2,'hecoso10.out'); rewrite(f2);
readln(f1,n);
for i:=1 to n do
begin
readln(f1,S);
writeln(f2,he10(S));
end;
close(f1);close(f2);
END
2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản thân, đồng nghiệp và nhà trường .
thực hiện đề tài:
- Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2018-2019 sau khi thực hiện đề tài: