SKKN Nâng cao kỹ năng viết thuật toán cho học sinh thông qua một số bài tập cơ bản
Năm học 2016 -2017 là năm tôi được tổ chuyên môn phân công dạy Tin học 10. Đứng trước nhiệm vụ của năm học này, tôi đã lên kế hoạch và mục tiêu dạy học cho mình nhằm đạt hiệu quả dạy học được tốt nhất cũng như sẽ đạt được chỉ tiêu đăng kí. Trong quá trình giảng dạy môn Tin học 10, khi dạy Bài 4 “BÀI TOÁN VÀ THUẬT TOÁN ” tôi nhận thấy đây là nội dung khó và mới đối với các em nhưng khi các em hiểu được thì vô cùng lý thú. Với các ví dụ được trình bày trong kinh nghiệm của mình sẽ giúp cho học sinh nắm bắt tốt hơn về cách viết thuật toán của một bài toán.
• Khảo sát tình trạng:
Giáo viên đưa ra đề kiểm tra 1 tiết đối với lớp 10A2 (40 học sinh) như sau:
Bài 1: Xác định Input và Output của bài toán sau:
“Tính tổng các bình phương các chữ số của 1 số tự nhiên bất kỳ có 4 chữ số ”
Bài 2: Liệt kê các bước của thuật toán để giải bài toán sau :
“Rút gọn phân số với a, b bất kỳ, b ”
SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA TRƯỜNG THPT HOẰNG HÓA II SÁNG KIẾN KINH NGHIỆM ĐỀ TÀI: NÂNG CAO KỸ NĂNG VIẾT THUẬT TOÁN CHO HỌC SINH THÔNG QUA MỘT SỐ BÀI TẬP CƠ BẢN Người thực hiện : LÊ THI HOÀI THU Chức vụ : Giáo viên Đơn vị công tác : THPT HOẰNG HÓA 2 SKKN thuộc lĩnh vực môn: TIN HỌC THANH HÓA NĂM 2017 PHẦN I. MỞ ĐẦU LÝ DO Năm học 2016 -2017 là năm tôi được tổ chuyên môn phân công dạy Tin học 10. Đứng trước nhiệm vụ của năm học này, tôi đã lên kế hoạch và mục tiêu dạy học cho mình nhằm đạt hiệu quả dạy học được tốt nhất cũng như sẽ đạt được chỉ tiêu đăng kí. Trong quá trình giảng dạy môn Tin học 10, khi dạy Bài 4 “BÀI TOÁN VÀ THUẬT TOÁN ” tôi nhận thấy đây là nội dung khó và mới đối với các em nhưng khi các em hiểu được thì vô cùng lý thú. Với các ví dụ được trình bày trong kinh nghiệm của mình sẽ giúp cho học sinh nắm bắt tốt hơn về cách viết thuật toán của một bài toán. Khảo sát tình trạng: Giáo viên đưa ra đề kiểm tra 1 tiết đối với lớp 10A2 (40 học sinh) như sau: Bài 1: Xác định Input và Output của bài toán sau: “Tính tổng các bình phương các chữ số của 1 số tự nhiên bất kỳ có 4 chữ số ” Bài 2: Liệt kê các bước của thuật toán để giải bài toán sau : “Rút gọn phân số với a, b bất kỳ, b” Bài 3: Viết thuật toán để sắp xếp 1 dãy số nguyên bất kỳ nhập từ bàn phím theo thứ tự giảm dần. Kết quả kiểm tra khi không áp dụng kinh nghiệm như sau: Lớp 10A2 có 40 học sinh: Điểm Số học sinh Tỉ lệ 3 9 23 % 4 10 25 % 5 11 28 % 6 5 13 % 7 5 13 % Đối với Bài 1, hầu như học sinh chỉ tìm được Input và Output của bài toán mà chưa viết được đầy đủ thuật toán để giải nó. Đối với Bài 2, Bài 3 học sinh chưa mô phỏng được thuật toán bằng sơ đồ khối MỤC TIÊU NGHIÊN CỨU Trong dự thảo báo cáo chính trị về phát triển văn hoá – giáo dục – đào tạo của báo Nhân dân ra ngày 3.2.2001 có đề cập: “Đổi mới căn bản và toàn diện nội dung, phương pháp dạy và học, hệ thống trường lớp và hệ thống quản lí giáo dục theo hướng chuẩn hoá, hiện đại hoá, xã hội hoá và dân chủ hoá”. Trên cơ sở đó, mục tiêu của đề tài nhằm: Giúp học sinh hiểu rõ khái niệm Thuật toán Giúp học sinh viết thuật toán dễ dàng, khắc phục tình trạng cảm thấy mơ hồ khi học về thuật toán. Khuyến khích học sinh biểu diễn thuật toán bằng sơ đồ khối. Là cơ sở để phát hiện và bồi dưỡng học sinh giỏi tin học và để học tiếp kiến thức viết chương trình trong năm sau của học sinh. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU Nội dung bài 4 Bài toán và thuật toán nằm trong chương trình Tin học 10, gồm 6 tiết (5 tiết lý thuyết và 1 tiết bài tập) , tôi đã áp dụng đề tài lồng ghép trong cả giờ lý thuyết và giờ bài tập. Đối tượng là học sinh các lớp 10 mà tôi đã dạy. PHƯƠNG PHÁP NGHIÊN CỨU CHUNG Đứng trước một vấn đề còn mới và trừu tượng đối với học sinh, việc xây dựng các bài tập ví dụ là hết sức quan trọng. Học sinh học thông qua ví dụ sẽ hiểu rõ và cụ thể hơn về thuật toán. Vì vậy, trước hết, tôi phải giúp học sinh giải quyết các bài tập trong sách giáo khoa và sách bài tập, sau đó, tôi có thể đưa ra một số ví dụ khác ngoài sách giáo khoa nhưng gần gũi với các em. CẤU TRÚC ĐỀ TÀI Phần I. Mở đầu Lí do Mục tiêu nghiên cứu Đối tượng phạm vi nghiên cứu Phương pháp nghiên cứu chung Cấu trúc đề tài Phần II. Nội dung Giúp học sinh hiểu rõ khái niệm “Bài toán” trong tin học Giúp học sinh hiểu rõ khái niệm “Thuật toán” trong tin học Một số bài tập Đánh giá Phần III. Kết luận PHẦN II. NỘI DUNG Giúp học sinh hiểu rõ khái niệm "Bài toán" trong Tin học: Giáo viên đặt vấn đề bằng cách đưa ra các ví dụ để học sinh quan sát: Ví dụ 1: Giải phương trình bậc 2 tổng quát: ax2+ bx+ c= 0 (a 0). Ví dụ 2: Bài toán kiểm tra tính nguyên tố của một số nguyên dương N Phát vấn học sinh: Em hãy xác định INPUT(thông tin ban đầu) và Output(kết quả) của mỗi bài toán sẽ có dạng gì ? (Dạng số, hình ảnh, hay văn bản ?) Học sinh trả lời: Dữ kiện Kết quả ở ví dụ 1 Các hệ số a, b, c bất kỳ Nghiệm của phương trình (nếu có) có dạng số nguyên hoặc số thực. ở ví dụ 2 Số nguyên dương N N là số nguyên tố hoặc N không phải là số nguyên tố Lâu nay, học sinh mới chỉ tiếp xúc và quen với khái niệm bài toán trong Toán học. Vì vậy, giáo viên nên đưa ra câu hỏi so sánh sự giống và khác nhau giữa bài toán trong Tin học và bài toán trong Toán học? Giáo viên giải thích: Bài toán trong Toán học yêu cầu chúng ta giải cụ thể để tìm ra kết quả, còn bài toán trong Tin học yêu cầu máy tính giải và đưa ra kết quả cho chúng ta. Từ đây giáo viên trình chiếu khái niệm Bài toán trong Tin học : Là một việc nào đó mà ta muốn máy tính thực hiện để từ thông tin đưa vào máy tính cho ta kết quả mong muốn. - Những dữ kiện của bài toán được gọi là Input. - Kết quả máy tính trả ra được gọi là Output của bài toán. Sau đó giáo viên yêu cầu học sinh tìm lại Input và Output của 2 ví dụ trên. F Như vậy, khái niệm bài toán không chỉ bó hẹp trong phạm vi môn toán, mà phải được hiểu như là một vấn đề cần giải quyết trong thực tế, để từ những thông tin đã cho máy tính tìm ra kết quả cho chúng ta. Giúp học sinh hiểu rõ khái niệm "Thuật toán" trong Tin học: Bước 1: Giáo viên nêu tình huống để giúp học sinh t́ìm Input và Output Làm thế nào để từ Input của bài toán, máy tính tìm cho ta Output ? Ta cần tìm cách giải bài toán và làm cho máy tính hiểu được cách giải đó. Giáo viên giải thích: Nếu như trong Toán học chúng ta phải giải trực tiếp từng bài để lấy kết quả, thì ở đây, chúng ta chỉ cần tìm cách giải bài toán tổng quát và máy tính sẽ giải cho ta một lớp các bài toán đồng dạng. Ví dụ: Bài toán giải phương trình bậc 2 với 3 hệ số a,b,c bất kỳ, bài toán tìm diện tích tam giác với độ dài 3 cạnh được nhập bất kỳ, bài toán tìm UCLN của 2 số nguyên bất kỳ, bài toán quản lý học sinh Bước 2: Giáo viên đưa ra khái niệm thuật toán và phân tích, nhấn mạnh các tính chất của một thuật toán: Ø Khái niệm: “Thuật toán để giải một bài toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy các thao tác ấy, từ thông tin đầu vào (Input) của bài toán ta nhận được kết quả (Output) cần tìm”. Ø Các tính chất của một thuật toán: - Tính dừng: thuật toán phải kết thúc sau một số hữu hạn các thao tác. - Tính xác định: Sau khi thực hiện một thao tác thì hoặc là thuật toán kết thúc, hoặc là có đúng một thao tác xác định để thực hiện bước tiếp theo. - Tính đúng đắn: Sau khi thuật toán kết thúc, ta nhận được kết quả cần tìm. Các bước tiến hành khi viết thuật toán của một bài toán : Xác định bài toán: Là đi tìm Input và Output của bài toán . Tìm ý tưởng để giải bài toán Viết thuật toán bằng phương pháp liệt kê hay sơ đồ khối Bước 3: Giới thiệu cho học sinh 2 cách biểu diễn một thuật toán - Cách l: Liệt kê các bước: Chính là dùng ngôn ngữ tự nhiên để diễn tả các bước cần làm khi giải một bài toán bằng máy tính. - Cách 2: Dùng sơ đồ khối. Quy ước : Hình thoi thể hiện thao tác so sánh Hình chữ nhật thể hiện các phép tính toán Hình ô van thể hiện thao tác nhập, xuất dữ liệu Các mũi tên trình tự thực hiện các thao tác. Giáo viên lưu ý học sinh phải nhớ các quy ước trên để biểu diễn thuật toán được chính xác. Các quy ước trên có thể hiểu như là ngôn ngữ của thuật toán, Vì vậy, giáo viên khuyến khích học sinh biểu diễn thuật toán bằng sơ đồ khối. Ưu điểm của sơ đồ khối là tránh được việc mô tả thừa câu chữ như cách biểu diễn liệt kê, người đọc thấy trực quan hơn trong từng bước của thuật toán. Một số bài tập Bài tập 1 .Viết thuật toán cho bài toán tìm nghiệm phương trình bậc 2 ax2+bx+c=0 (SGK Tin học 10, trang 44) Lời giải : Xác định bài toán : +Input : Cho ba số thực a, b, c + Output : Nghiệm của phương trình ax2+bx+c=0 Ý tưởng của bài toán: Để tìm nghiệm phương trình bậc 2 ta cần tính r và dựa vào kết quả của r mà suy ra nghiệm của phương trình. Thuật toán của bài toán: Cách 1: Liệt kê từng bước Bước 1: Bắt đầu Bước 2: Nhập 3 hệ số a,b,c. Bước 3: Tính biệt số = b2- 4ac Bước 4: Nếu < 0 thông báo phương trình vô nghiệm rồi kết thúc. Bước 5: Nếu = 0 thông báo phương trình có nghiệm kép rồi kết thúc. Bước 6: Nếu > 0 thông báo phương trình có 2 nghiệm x1,x2=, rồi kết thúc. Bước 7: Kết thúc. Cách 2: Biểu diễn thuật toán bằng sơ đồ khối = 0 Đúng Sai Đúng Phương trình vô nghiệm Phương trình có nghiệm kép x= -b/2a Phương trình có 2 nghiệm x1,x2=(-b)/2a Bắt đầu Nhập a,b,c Tính = b2- 4ac < 0 Kết thúc Sai Bài tập 2 .Viết thuật toán cho bài toán tìm nghiệm phương trình bậc nhất ax +b =0 Lời giải : Xác định bài toán : +Input : Cho hai số thực a, b + Output : Nghiệm của phương trình ax+ b=0 Ý tưởng của bài toán: Để tìm nghiệm phương trình bậc nhất ta giải và biện luận phương trình dựa vào hệ số a, b và suy ra nghiệm của phương trình Thuật toán của bài toán: Cách 1: Liệt kê từng bước B1: Nhập a, b B2 : Nếu a 0 thì phương trình có nghiệm x=-b/2a =>B4 B3 : Nếu a=0 B3.1 Nếu b=0 thì kết luận phương trình cú vô số nghiệm => B4 B3.2 Nếu b 0 thì kết luận phương trình Vô nghiệm => B4 B4: Kết thúc Cách 2: Biểu diễn thuật toán bằng sơ đồ khối Phương trình vô nghiệm Nhp a,b a 0 Phương trình có nghiệm x=-b/a b 0 Phương trình có vô số nghiệm Kết thúc Đúng Sai Đúng Sai Bài tập 3 Viết thuật toán tính tổng sau: S=1/2+1/3+1/4++1/N Lời giải : Xác định bài toán : + Input : Nhập N + Output : Tổng S Ý tưởng của bài toán:Ta thấy việc tính tổng của bài toán này được lặp đi lặp lại nhiều lần với tổng sau bằng tổng trước cộng i với i chạy từ 1 cho đến N và khi i >N thì thuật toán dừng lại và xuất tổng S Thuật toán của bài toán: Cách 1: Liệt kê từng bước B1: Nhập số N B2: S ß 0; i ß 0; B3 : Nếu i >N thì đưa ra tổng S rồi kết thúc B4: S ß S+ 1/i,i ß i+1 B5 : Kết thúc thuật toán Yêu cầu học sinh chuyển từ cách viết thuật toán bằng phương pháp liệt kê sang sơ đồ khối. Cách 2: Biểu diễn thuật toán bằng sơ đồ khối i <=N Đ Nhập N S ß0; iß0 KQ :S S ßS+1/N ißi+1 S Bài 4 : Cho N và dăy a1,,aN, hăy t́ìm giá trị nhỏ nhất (Min) của dăy đó .(SGK Tin học 10 trang 44) Lời giải: Xác định bài toán : + Input : Nhập N và dăy a1,,aN + Output : Giá trị nhỏ nhất (Min) của dăy số Học sinh có thể dựa vào bài toán t́ìm Max đã học của dăy, để nêu ý tưởng giải bài toán tìm Min. Ý tưởng của bài toán: - Khởi tạo giá trị Min =a1 - Lần lược với i chạy từ 2 đến N, so sánh giá trị số hạng ai với giá trị Min, nếu ai< Min th́ì Min sẽ nhận giá trị mới là ai. Thuật toán của bài toán: Cách 1: Liệt kê từng bước Bước 1. Nhập N và dăy a1,,aN Bước 2. Min a1, i2 Bước 3. Nếu i >N th́ì đưa ra giá trị Min rồi kết thúc Bước 4 Bước 4.1 Nếu ai <Min th́ Minai; Bước 4.2 i i+1 rồi quay lại Bước 3 Cách 2: Biểu diễn thuật toán bằng sơ đồ khối Đúng Sai Nhập N và dăy a1,,aN Min a1, i2 i >N ai <Min Minai i i+1 Đưa ra giá trị Minkết thúc Đúng Sai Bài 5:Viết thuật toán hoán đổi giá trị của hai biến số thực A và C dùng biến trung gian B (Sách Bài tập Tin học 10 và Sách bài tập Ngôn ngữ lập trình Pascal – Quách Tuấn Ngọc) Lời giải: Yêu cầu học sinh t́ìm Input và Output của bài toán Xác định bài toán : Input: Hai số thực A và C Output: Hai số thực C và A Giỏo viờn nêu lên ví dụ :”Có 1 cái lu đựng gạo và 1 cái thùng đựng muối, cô muốn hoán đổi số lượng gạo trong lu phải được đựng vào thùng và số lượng muối ở trong thùng phải được chuyển sang đựng trong lu” để làm được điều đó em nào có thể nêu cách làm ? Học sinh trả lời B1: Em đổ gạo ở trong lu sang một chậu (ban đầu chậu không đựng gì cả) B2: Đổ lượng muối ở trong thùng sang lu B3: Em lấy gạo ở trong chậu đổ vào thùng B4: Kếp quả là em được lu thì đựng muối, thùng thì đựng gạo Từ ví dụ trên giáo viên hình thành ý tưởng giải bài toán B1: B2: ( B lấy giá trị của biến A) B3: B4: ( A lấy giá trị của C ) (C lấy giá trị của B) (Giá trị A và C lúc nhập ban đầu) ý tưởng của bài toán:Việc hoán đổi giá trị của hai biến A và C được làm theo các bước sau: C B A Thuật toán của bài toán: Cách 1: Liệt kê từng bước B1 : Nhập giá trị A, C B2 : B A B3 : AC ; B4 : CB B5 : Đưa ra gía trị mới của A và C rồi kết thúc Cách 2: Biểu diễn thuật toán bằng sơ đồ khối Nhập A và C B A AC CB Đưa ra gía trị mới của A và C rồi kết thúc Bài 6 : Viết thuật toán đếm các số âm trong dăy số A={ a1,a2,aN } cho trước.(Sách Bài tập Tin học 10, trang 21) Lời giải: Yêu cầu học sinh t́ìm Input và Output của bài toán Xác định bài toán : + Input : Nhập N và dăy a1,,aN + Output : Số lượng các số âm trong dăy số Ý tưởng của bài toán: Khởi tạo giá trị Dem =0 Lần lược với i chạy từ 1 đến N, nếu ai nhỏ hơn 0 th́ì tăng biến Dem lên 1 đơn vị cho đến khi i >N th́ì dừng lại và xuất giá trị biến Dem. Thuật toán của bài toán: Cách 1: Liệt kê từng bước B1: Nhập số nguyên dương N và n số a1,,aN; B2: i1; Dem 0; B3 Nếu i > N đưa ra giá trị Dem rồi kết thúc ; B4 Nếu ai <0 th́ Dem Dem +1; B5 ii+1, rồi quay lại B3 Cách 2: Biểu diễn thuật toán bằng sơ đồ khối S S ai <0 Nhập số nguyên dương N và n số a1,,aN; i1; Dem 0 i > N ii+1 Đưa ra giá trị Dem rồi kết thúc Dem Dem +1 Đ Đ Bài 7 : Viết thuật toán tính và hiển thị tổng các số dương trong dăy số (Sách Bài tập tin học 10, trang 21) A={ a1,a2,aN } cho trước. Yêu cầu học sinh t́ìm Input và Output của bài toán Xác định bài toán : + Input : Nhập N và dăy a1,,aN + Output : Tổng các số lớn hơn 0 trong dăy í tưởng của bài toán: - Khởi tạo giá trị Sum =0 - Lần lược với i chạy từ 1 đến N, nếu ai lớn hơn 0 thì tăng biến Sum lên 1 đơn vị cho đến khi i>N th́ì dừng lại và xuất giá trị biến Sum Thuật toán của bài toán: Cách 1: Liệt kê từng bước B1: Nhập số nguyên dương N và n số a1,,aN; B2: i1; Sum 0; B3 Nếu i > N đưa ra giá trị Sum rồi kết thúc ; B4 Nếu ai >0 th́ì Sum Sum +1; B5 ii+1, rồi quay lại B3 Cách 2: Biểu diễn thuật toán bằng sơ đồ khối S S ai >0 Nhập số nguyên dương N và n số a1,,aN; i1; Sum 0 i > N ii+1 Đưa ra giá trị Sum rồi kết thúc Sum Sum +1 Đ Đ 4. ĐÁNH GIÁ Kết quả kiểm tra học sinh lớp 10A1(42 học sinh) với đề kiểm tra giống lớp 10A2 (ở trên) sau khi thực hiện đề tài như sau: Lớp 10A1: Điểm Số học sinh Tỉ lệ 3 0 4 0 5 6 14% 6 10 24% 7 10 24% 8 9 21% 9 7 17% PHẦN III. KẾT LUẬN Với việc xây dựng các thuật toán minh họa như trên, trong quá tŕnh giảng dạy Tin học 10, bản thân tôi thấy rằng các tiết học về bài toán và thuật toán không c̣òn nhàm chán, khô cứng nữa mà trở nên sôi nổi hơn và học sinh cũng có thể hiểu các thuật toán một cách dễ dàng hơn. Đề tài này ra đời từ kinh nghiệm của bản thân trong quá tŕnh giảng dạy và từ những kiến thức mà tôi đă tham khảo với đồng nghiệp. Tôi rất mong sự góp ý chân thành của quý thầy cô để tôi có một sáng kiến kinh nghiệm tốt hơn nữa. Xin chân thành cảm ơn! THANH HÓA, ngày 25 tháng 05 năm 2017 Giáo viên thực hiện: Lê Thị Hoài Thu ZZZZZZZ Tài liệu tham khảo: Sách giáo khoa, sách bài tập và sách giáo viên Tin học 10 Tài liệu bồi dưỡng giáo viên Tin học 10 Bài tập Ngôn ngữ lập trình pascal (Quách Tuấn Ngọc)
Tài liệu đính kèm:
- skkn_nang_cao_ky_nang_viet_thuat_toan_cho_hoc_sinh_thong_qua.doc