Một số phương pháp hữu hiệu nhằm nâng cao chất lượng dạy học bài “cấu trúc lặp” (Tin học 11) ở trườn...

10 2 0
Một số phương pháp hữu hiệu nhằm nâng cao chất lượng dạy học bài “cấu trúc lặp” (Tin học 11) ở trườn...

Đang tải... (xem toàn văn)

Thông tin tài liệu

SKKN Mở rộng phạm vi tính toán trong ngôn ngữ lập trình Free Pascal với số nguyên không âm có nhiều chữ số 0 MỤC LỤC 1 MỞ ĐẦU 1 1 Lý do chọn đề tài 1 1 2 Mục đích nghiên cứu 1 1 3 Đối tượng nghiên cứu[.]

MỤC LỤC 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 1.5 Những điểm SKKN NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lý luận sáng kiến kinh nghiệm: 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm: 2.3 Các giải pháp sử dụng để giải vấn đề a) Giải thuật cộng: b) Giải thuật trừ: c) Giải thuật nhân: d) Giải thuật chia: 2.4 Hiệu sáng kiến kinh nghiệm hoạt động giáo dục, với thân, đồng nghiệp nhà trường: KẾT LUẬN 1.1 Kết luận: .8 1.2 Kiến nghị: Tài liệu tham khảo SangKienKinhNghiem.net MỞ ĐẦU 1.1 Lý chọn đề tài Lập trình Tin học vấn đề khoa học có tính thực tiễn cao, ln địi hỏi người lập trình lĩnh hội kiến thức học vận dụng kiến thức vào giải tốn thực tế “Các Kiểu liệu ngơn ngữ lập trình nói chung ngơn ngữ lập trình Pascal free pascal nói riêng giới hạn phạm vi định…”[1] Khi Test chương trình học sinh thường test test bé nên có cảm giác làm với input test máy với test lớn chương trình đưa kết khơng Chính vậy, tơi mạnh dạn viết sáng kiến “Mở rộng phạm vi tính tốn ngơn ngữ lập trình Free Pascal với số ngun khơng âm có nhiều chữ số” Hy vọng kinh nghiệm tơi góp phần giúp đồng nghiệp em học sinh giỏi có số thuật giải cộng trừ nhân chia với số nguyên có nhiều chữ số 1.2 Mục đích nghiên cứu Trong sáng kiến kinh nghiệm muốn truyền tải đến thầy cô ôn thi đội tuyển học sinh giỏi cấp em học sinh tham gia câu lạc lập trình Tin học có thêm số kiến thức kỹ để vận dụng mở rộng khả tính tốn cho ngơn ngữ lập trình Free Pascal tập số ngun khơng âm có nhiều chữ số ứng dụng vào thực tế giải toán khác 1.3 Đối tượng nghiên cứu Đối tượng nghiên cứu tơi chương trình Tin học 11 (trong chương trình giáo dục quốc gia) cách sử dụng ngơn ngữ lập trình Pascal để vận dụng vào tính tốn số ngun khơng âm lớn 1.4 Phương pháp nghiên cứu Trong phạm vi sáng kiến kinh nghiệm Tơi có sử dụng phương pháp sau: - Sử dụng phương pháp nghiên cứu xây dựng sở lý thuyết - Sử dụng phương pháp xử lý liệu 1.5 Những điểm SKKN Tơi có tham khảo số sách số trang web Internet Tơi thấy người ta tìm hiểu mở rộng phạm vi tính tốn với số ngun đưa bàn luận code chương trình chủ yếu ngơn ngữ lập trình C, C++ Trong sáng kiến kinh nghiệm vận dụng trực tiếp vào ngơn ngữ lập trình Free Pascal để học sinh có cách nhìn tổng quan dễ hiểu phù hợp với ngơn ngữ lập trình mà em biết SangKienKinhNghiem.net NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lý luận sáng kiến kinh nghiệm Đối với lập trình ngồi việc tìm thuật tốn cần phải viết chương trình điều khó học sinh trường THPT Khi gặp tốn phải tính tốn với số có nhiều chữ số nhiều em lúng lúng số vượt khỏi phạm vi kiểu liệu mà ngôn ngữ lập trình cung cấp Chính vậy, việc giải toán với số lớn thực cần thiết cho em học sinh giỏi giải tốn liên quan đến số có nhiều chữ số nói riêng việc giải tốn thực tế nói chung Nhiều ngơn ngữ lập trình cung cấp kiểu liệu số nguyên lớn, chẳng hạn ngơn ngữ lập trình FreePascal có kiểu số 64 bit (khoảng 19 chữ số) Tuy nhiên để thực phép tốn với số ngồi phạm vi biểu diễn cung cấp (có hàng trăm chí hàng tỷ chữ số chẳng hạn), cần tự thiết kế cách biểu diễn hàm để thực phép tốn với số ngun có nhiều chữ số.[1] 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm Trong q trình dạy, tơi giao tập: “Hãy sử dụng ngơn ngữ lập trình Pascal FreePascal để tính tổng, hiệu, tích, thương hai số nguyên a b”[3] Học sinh lập trình tính sau: Khi chạy chương trình ta nhập: máy báo lỗi! Vì lại vậy, ta biết “kiểu số nguyên lớn (longint) có phạm vi biểu diễn từ -2147483648 2147483647 (khoảng 10 chữ số)…”[2] Nên nhập số ngun b=54564654565456456456 (có 20 chữ số) vượt ngồi phạm vi longint Nhiều em học sinh lúng túng cho rằng, ngơn ngữ lập trình Pascal giải tốn có phép tính khoảng số nguyên mà em biết 2.3 Các giải pháp sử dụng để giải vấn đề - Tổ chức lưu trữ số dạng xâu “Độ dài xâu tối đa 255 kí tự…”[2] Vì vậy, xâu lưu trữ số có tối đa 255 chữ số Đồng nghĩa với việc ta tính tốn với số có độ dài tối đa 255 chữ số Ngồi ra, “ngơn ngữ lập trình FreePascal cung cấp thêm kiểu liệu dạng chuỗi (ANSISTRING) tổ chức lưu trữ số lớn gấp nhiều lần so với kiểu string (bộ nhớ lớn chuỗi dài)…[4] SangKienKinhNghiem.net - Sử dụng phép tính tốn xâu để tính kết Trong tính tốn cần sử dụng hiệu thủ tục chuyển đổi kí tự kiểu xâu thành số (hàm val) ngược lại từ số thành xâu (hàm str)…[5] - Hiện thị kết dạng xâu (hoặc mảng) Sau số giải thuật cộng, trừ, nhân chia số không âm (các trường hợp cịn lại tơi nói sau): a) Giải thuật cộng: Khi cộng hai số có nhiều chữ số, thực từ phải qua trái Với lần cộng, kết cịn cộng với giá trị nhớ lần trước đồng thời xác định giá trị nhớ [6] Cụ thể ta tiến hành bước sau: -Bước 1: Hai số nhập từ bàn phím lưu vào hai biến kiểu xâu st1 st2 -Bước 2: So sánh hai xâu st1 st2 Thêm kí tự ‘0’ vào xâu ngắn để hai xâu có độ dài -Bước 3: Thực phép cộng hai xâu có có độ dài nhau, cộng từ cuối lên đầu (tương tự cộng số thực từ hàng đơn vị) Các kí tự xâu chuyển thành số (sử dụng thủ tục chuyển đổi) thực phép cộng Kết cộng số chuyển ngược lại thành xâu (h1) -Bước 4: Sử dụng xâu kết (h) lưu trữ kết phép cộng (lưu ý phần nhớ) Trong phần thân chương trình ta cần gọi: Nhận xét: - Chương trình thực việc cộng hai số nhập từ bàn phím - Trong chương trình có sử dụng hàm chương trình FUNCTION CONG(S1,S2:STRING): STRING; để tính kết phép cộng hai xâu s1, s2 - Kết phép cộng lên hình - Ta thay đổi chương trình cách sử dụng tệp để đọc liệu vào ghi kết - Ta mở rộng phạm vi tính tốn tới số ngun dương khơng âm có số lượng chữ số vượt qua 255 chữ số cách khai báo biến kiểu xâu ANSISTRING SangKienKinhNghiem.net b) Giải thuật trừ: Giống cộng, thực từ phải qua trái Với lần trừ, đề phòng chữ số số bị trừ nhỏ nên ta vay tạm chục Nếu lần trước vay lần phải trừ Nhưng đáng vay kết sau trừ bé 10, cịn lớn 10 khơng phải vay [6] Các bước tiến hành sau: -Bước 1: Nhập hai số từ bàn phím lưu vào hai biến xâu st1, st2 -Bước 2: So sánh hai xâu st1 st2 Thêm kí tự ‘0’ vào xâu ngắn để hai xâu có độ dài -Bước 3: So sánh hai xâu st1, st2 độ dài + Nếu xâu lưu số bị trừ lớn xâu lưu số trừ Thực phép trừ hai xâu từ cuối lên đầu (tương tự phép trừ toán học) Sử dụng thủ tục chuyển đổi xâu thành số trình tính tốn + Nếu xâu lưu số bị trừ bé xâu lưu số trừ thực đặt dấu trừ (-) vào phần đầu kết quả, đồng thời thực hoán đổi hai xâu cho thực phép trừ tương tự -Bước 4: Phép trừ thực sau: + Các kí tự sâu St1 chuyển thành số lưu vào mảng h1 + Các kí tự sâu St2 chuyển thành số lưu vào mảng h2 + Thực phép trừ hai mảng h1 h2 (lưu ý trương hợp số bị trừ bé số trừ) Nếu h1[i]=h2[i] c[i]:=h1[i]-h2[i]; -Bước 5: Mảng C thu kết Qua đó, ta viết thành chương trình sau: SangKienKinhNghiem.net Nhận xét: - Chương trình thực phép trừ hai số lớn lớn nhập từ bàn phím với biến kiểu xâu khai báo ANSISTRING Hiệu hai số hiển thị hình Cần ý tới phần dấu phép trừ (nếu số bị trừ bé số trừ ghi vào kết dấu -) c) Giải thuật nhân: Thông thường, nhân a với b, thực từ phải qua trái Mỗi lần nhân chữ số b với số a đặt kết dịch sang trái chữ số Nhưng lần lại nhân chữ số a với chữ số nói b Cũng phép cộng, kết phụ thuộc việc nhớ lần nhân trước xác định giá trị nhớ Việc nhận thực từ trái qua phải [6] Q trình làm tiến hành qua bước sau: -Bước 1: Nhập hai số lưu dạng hai biến xâu s1, s2 -Bước 2: Sử dụng mảng C lưu kết phép nhân hai xâu s1, s2 (các kí tự xâu chuyển đối thành số tính tốn) L1:=length(s1); L2:=length(s2); For i:=1 to L1 For j:=1 to L2 Begin val(s1[i],A,code); val(s2[j],B,code); c[i+j]:=c[i+j]+a*b; End; -Bước 3: Xử lý mảng kết quả: For i:=L1+L2 downto Begin c[i-1]:=c[i-1] + c[i] Div 10; c[i]:=c[i] Mod 10; End; Sau chương trình: Nhận xét: SangKienKinhNghiem.net - Chương trình thực phép nhân hai số lớn nhập từ bàn phím Kết phép nhân hiển thị hình - Khi sử dụng mảng để lưu kết phép nhân, độ dài mảng kết lớn tổng độ dài hai số (xâu) - Ta thay đổi kiểu liệu cho biến kiểu xâu thành ANSISTRING để nhân số nguyên dương không âm lớn 255 chữ số d) Giải thuật chia: Để chia số a cho số b ta tiến hành qua bước sau: -Bước1: Dùng xâu a b chứa chữ số số bị chia số chia (các mảng có số phần tử tương ứng n m), dùng xâu c để chứa kết -Bước 2: Lấy m phần tử đầu chuỗi a chuỗi a1, đem số chia cho chuỗi b, số lớn nên dùng vịng for để lặp từ đến 10, i = 9, mà i*b > a1 thương i-1 số dư t1 = a1 -b*(i-1) -Bước 3: Có số dư t1 từ bước 2, tiếp túc lấy t1*10+ số thứ m+1 chuỗi a ban đầu để số chia a2, lại dùng vịng for để lặp lại tính đc số dư t2, tiếp tục đến đến phần tử n chuỗi a dừng Có thể tiếp tục muốn lấy số thập phân Như ta xây dựng hàm chương trình dùng để chia số nguyên lớn dựa vào kết hai hàm cộng trừ trên: Nhận xét: - Kết phép chia ta phần ngun - Trong chương trình ta sử dụng lời gọi chương trình cộng trừ số nguyên lớn (cong(kb[i-1],b) tru(hold,kb[k-1])) - Muốn lấy kết phần dư ta sửa chương trình trên….[1] thành sau: SangKienKinhNghiem.net 2.4 Hiệu sáng kiến kinh nghiệm hoạt động giáo dục, với thân, đồng nghiệp nhà trường - Thông qua sáng kiến kinh nghiệm học sinh thực phép toán cộng trừ nhân chia với số ngun dương khơng âm vượt ngồi phạm vi biểu diễn kiểu liệu mà ngôn ngữ lập trình cung cấp - Sáng kiến kinh nghiệm giúp học sinh thầy giáo có thêm giải thuật để cộng trừ nhân chia với số nguyên lớn cách sử dụng kiến thức học mảng chiều xâu ký tự - Qua giải thuật sáng kiến kinh nghiệm thầy em học sinh phát triển để cộng trừ nhân chia cho số nguyên cho số thực lớn.[4] - Sáng kiến kinh nghiệm góp phần giúp thầy giáo mơn nhà trường có thêm tài liệu để ôn cho học sinh giỏi cấp trường, tỉnh,… Đồng thời, giúp học sinh khắc sâu kiến thức vận dụng kiến thức mảng chiều xâu ký tự học vào giải toán khác SangKienKinhNghiem.net KẾT LUẬN 3.1 Kết luận Đề tài mang tính thực tiễn cao Các em sử dụng kiến thức lập trình để giải toán thực tế thường gặp, tốn tính tốn với số lớn Kết có nhiều em dễ dàng vận dụng kiến thức để giải toán lặp giáo viên đặt Trong khuôn khổ sáng kiến kinh nghiệm này, tơi trình bày thuật tốn code chương trình cho phép tốn cộng trừ nhân chia với số ngun dương khơng âm Cịn với số ngun khác tơi trình bày sáng kiến kinh nghiệm lần sau 3.2 Kiến nghị - Đề nghị cấp lãnh đạo quan tâm đạo sát để tạo điều kiện cho môn tin học nói chung mơn tin học 11 nói riêng phát triển lên tầm cao XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ Thanh Hóa, ngày 11 tháng 04 năm 2017 Tơi xin cam đoan SKKN viết, không chép nội dung người khác (Ký ghi rõ họ tên) Nguyễn Văn Thủy Lê Văn Như SangKienKinhNghiem.net TÀI LIỆU THAM KHẢO Tài liệu giáo khoa chuyên tin 1, Hồ Sĩ Đàm (chủ biên )- Đỗ Đức ĐơngLê Minh Hồng-Nguyễn Thanh Hùng, Nhà xuất giáo dục Việt Nam, năm 2009 Tin học 11, Hồ Sĩ Đàm (chủ biên)- Nguyễn Thanh Tùng, Nhà xuất giáo dục Việt Nam, năm 2014 Bài tập Tin học 11, Hồ Sĩ Đàm (chủ biên)-Hồ Cẩm Hà-Trần Đỗ HùngNguyễn Đức Nghĩa-Nguyễn Thanh Tùng- Ngô Ánh Tuyết, Nhà xuất giáo dục Việt Nam, năm 2014 Phương pháp giải toán tin học, ThS Trần Đức Huyên, Nhà xuất Hà Nội (xuất lần 5), năm 2003 Giáo trình lý thuyết tập Pascal - Toàn tập : Ấn dành cho sinh viên, Nguyễn Đình Tê(Chủ Biên)- Hồng Đức Hải, Nhà xuất Lao động xã hội, năm 2004 Nguồn từ Internet: - Thao tác với số nguyên lớn-trình bày thuật tốn cách thực hiện, Donvuon, 2010, mã nguồn: http://diendan.congdongcviet.com/threads/t31199::thao-tac-songuyen-lon-trinh-bay-thuat-toan-cach-thuc-hien.cpp SangKienKinhNghiem.net ... tốn số ngun khơng âm lớn 1.4 Phương pháp nghiên cứu Trong phạm vi sáng kiến kinh nghiệm Tơi có sử dụng phương pháp sau: - Sử dụng phương pháp nghiên cứu xây dựng sở lý thuyết - Sử dụng phương pháp. .. để nhân số nguyên dương không âm lớn 255 chữ số d) Giải thuật chia: Để chia số a cho số b ta tiến hành qua bước sau: -Bước1: Dùng xâu a b chứa chữ số số bị chia số chia (các mảng có số phần tử... Free Pascal với số ngun khơng âm có nhiều chữ số? ?? Hy vọng kinh nghiệm tơi góp phần giúp đồng nghiệp em học sinh giỏi có số thuật giải cộng trừ nhân chia với số nguyên có nhiều chữ số 1.2 Mục đích

Ngày đăng: 01/11/2022, 19:36

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

  • Đang cập nhật ...

Tài liệu liên quan