Đối với giáo viên bộ môn Tin học, khi nhận dạy lớp 10, sẽ cảm thấy rất nhiều băn khoăn vì đối với việc giảng dạy bài 4: “ Bài toán và Thuật toán” sẽ rất khó hiểu đối với học sinh. Vì với học kỳ II chủ yếu các em làm quen với Tin học ứng dụng, còn ở bài này thì học sinh lại làm quen với việc viết thuật toán để giải bài toán trên máy tính. Nên đòi hỏi các em phải có kiến thức về Toán học và kiến thức về Tin học. Do đó khi nhận dạy lớp 10, giáo viên phải tìm hiểu nhiều phương pháp dạy làm sao cho học sinh có thể hiểu được một vấn đề mới mà mình đưa ra. Khi dạy chương này hầu như giáo viên nào cũng cảm thấy rất khó khăn làm sao cho các em hiểu được bài toán. Qua nhiều năm dạy Tin học ở lớp 10, tôi rút ra một vài kinh nghiệm nhỏ trong khi dạy bài 4 – chương I : “ Bài toán và thuật toán”. Đó là sử dụng một số ví dụ cụ thể giúp cho học sinh hiểu rõ hơn về các khái niệm.
Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám A ĐẶT VẤN ĐỀ Lý chọn đề tài: Đối với giáo viên môn Tin học, nhận dạy lớp 10, cảm thấy nhiều băn khoăn việc giảng dạy 4: “ Bài toán Thuật tốn” khó hiểu học sinh Vì với học kỳ II chủ yếu em làm quen với Tin học ứng dụng, học sinh lại làm quen với việc viết thuật tốn để giải tốn máy tính Nên đòi hỏi em phải có kiến thức Tốn học kiến thức Tin học Do nhận dạy lớp 10, giáo viên phải tìm hiểu nhiều phương pháp dạy cho học sinh hiểu vấn đề mà đưa Khi dạy chương giáo viên cảm thấy khó khăn cho em hiểu toán Qua nhiều năm dạy Tin học lớp 10, rút vài kinh nghiệm nhỏ dạy – chương I : “ Bài tốn thuật tốn” Đó sử dụng số ví dụ cụ thể giúp cho học sinh hiểu rõ khái niệm Mục đích yêu cầu: * Hiểu khái niệm toán tin học Hiểu rõ khái niệm thuật toán cách giải tốn mà ngun tắc giao cho máy tính thực Hiểu thực số thuật toán đơn giản sách giáo khoa tìm giá trị lớn dãy số, * Về kỹ năng: Hình thành số kỹ chuẩn bị tiếp thu việc học ngơn ngữ lập trình: cách dùng biến, khởi tạo giá trị biến Các kiến thức góp phần phát triển khả tư giải vấn đề khoa học sống Phạm vi nghiên cứu, phương pháp nghiên cứu: - Phạm vi nghiên cứu đề tài này, đề cập đến phần nhỏ là: Sử dụng ví dụ cụ thể để học sinh biết cách viết thuật toán toán đơn giản Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám Để thực mục tiêu học sinh cần nắm vững kiến thức sau: Về kiến thức: Cần biết cách xác định toán Biết hai cách trình bày thuật tốn - Về kỹ năng: Hình thành số kỹ chuẩn bị tiếp thu việc học ngơn ngữ lập trình: cách dùng biến, khởi tạo giá trị biến Đối tượng, phạm vi kế hoạch nghiên cứu: Đối tượng học sinh khối 10 trường THPT Hoàng Hoa Thám, thực kế hoạch nghiên cứu phạm vi 4, chương I : - Bài toán thuật toán Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám B NỘI DUNG BÀI 4: BÀI TOÁN VÀ THUẬT TOÁN Ở lớp dưới, thơng qua mơn Tốn học em biết sơ qua khái niệm tốn Nên trước hết tơi chia lớp thành nhóm nhỏ, nhóm “ Hãy tốn đó?” Qua tốn mà em , từ giáo viên đưa đến kết luận: Trong phạm vi Tin học, ta quan niệm tốn việc mà ta muốn máy tính thực Nhưng nói đến khái niệm toán tin học, ta cần quan tâm đến hai yếu tố: đưa vào máy thơng tin (Input) cần lấy thơng tin ( Output) Do để phát biểu tốn, ta cần phải trình bày rõ Input Output tốn mối quan hệ Input Output Nên cho ví dụ tốn đó, giáo viên cần gọi học sinh xác định rõ Input Output tốn Vậy Input, Output gì? Ta hiểu nơm na giống Toán học Input giả thiết toán Output kết luận tốn, điều mà ta cần tìm từ giả thiết toán cho Chẳng hạn với toán: VD1: Tìm ước chung lớn hai số nguyên dương Input : hai số nguyên dương M, N Output : UCLN M,N VD2: Tìm nghiệm phương trình bậc : ax2+bx+c=0 ( a#0) Chắc chắn học sinh xác định Input : Các số thực a,b,c ( a#0) Output : Tất số thực x thoả mãn ax2+bx+c =0 nghĩa nghiệm phương trình bậc Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám Qua vài ví dụ khác từ giáo viên đưa kết luận: Bài tốn cấu tạo hai thành phần Input ( thơng tin có) Output ( Các thơng tin cần tìm từ Input) Từ khái niệm tốn trên, ta chuyển sang khái niệm thuật toán Vậy thuật tốn gì? Việc tường minh cách tìm Output tốn gọi Thuật tốn( Algorithm) giải tốn Có thể định nghĩa thuật toán sau: Thuật toán để giải toán dãy hữu hạn thao tác xếp theo trình tự xác định cho sau thực dãy thao tác ấy, từ Input toán, ta nhận Output cần tìm Để làm rõ khái niệm thuật toán , giúp học sinh biết thiết kế thuật toán đơn giản Ta vào xét số ví dụ sau: Ví dụ 1: Tìm giá trị lớn dãy số nguyên : * Xác định toán Input: Số nguyên dương N dãy số nguyên a1 an Output: Giá trị lớn Max dãy số Sau xác định toán xong ta vào ý tưởng thuật toán học sinh bỡ ngỡ không hiểu Nhưng giáo viên đặt toán thực tế sau, học sinh làm Trên bàn giáo viên có hộp kín khơng thể thấy bên có chứa n táo to nhỏ khác Giáo viên gọi học sinh lên yêu cầu tìm lớn Biết táo ghi khối lượng lần lấy để so sánh Tơi phân lớp làm nhóm , yêu cầu em suy nghĩ cách để tìm táo lớn Viết câu trả lời vào giấy Sau u cầu nhóm lên trình bày cách làm Sau giáo viên nêu cách học sinh lấy để so sánh Lấy thứ ra, sau lấy tiếp thứ 2, So sánh lớn giữ lại, nhỏ để sang bên Cứ tiếp Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám tục khơng hộp ta kết luận cầm tay lớn Từ ta đến ý tưởng tốn tìm giá trị lớn sau: Ý tưởng : - Khởi tạo giá trị Max=a1 - Lần lượt với I từ đến n, so sánh giá trị số hạng a với giá trị Max, >Max Max nhận giá trị Từ ý tưởng ta đến Thuật tốn để giải toán sau: * Thuật toán: B1: Nhập N dãy a1 …an B2: Max a1 ; i2 B3: Nếu I > N đưa giá trị Max kết thúc B4: B4.1: Nếu > Max Max B4.2: i i+1 quay lại B3 Trên cách trình bày thuật tốn cách liệt kê bước Ngoài cách người ta diễn tả thuật tốn sơ đồ khối sau: Trong sơ đồ khối người ta dùng số khối, đường có mũi tên giúp cho việc trình bày thuật tốn trực quan * Hình thoi D thể thao tác so sánh * Hình chữ nhật thể phép tính tốn * Hình ôvan thể thao tác nhập xuất liệu * Các mũi tên quy định trình tự thực thao tác Như thuật tốn trình bày sau: Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám Nhập N dãy a1 aN Maxa1, i2 Đưa Max kết thúc i > N? S Đ > Max? Đ S Maxai ii+1 Sau giáo viên mơ việc thực thuật tốn với N =11 dãy số : 5,1,4, 7,6,3,15,8,4,9,12 Dãy số i Max 15 12 10 11 5 7 15 15 15 15 15 12 * Sau giáo viên cho tiếp ví dụ khác để học sinh viết thuật toán đơn giản Vd : Viết thuật tốn tìm nghiệm phương trình bậc ax + bx + c = (a#0) - GV gọi học sinh lên trình bày bước để giải phương trình bậc B1: Tính = b2 – 4ac B2: Nếu >0 phương trình có nghiệm phân biệt X1 = (-b+)/2a X2 = (-b-)/2a ; Chuyển sang B5 Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám B3: Nếu =0 phương trình có nghiệm kép: X = -b/2a chuyển sang B5 B4: Nếu N, kết phép so sánh bước xác định việc đưa giá trị Max kết thúc - Tính xác định : Thứ tự thực bước thuật toán mặc định nên sau bước bước , sau bước bước Kết phép so sánh bước bước xác định bước cần thực - Tính đắn: thuật tốn so sánh Max với số hạng dãy số thực Max Max nên sau so sánh hết N số hạng dãy Max giá trị lớn Tiếp theo phân lớp thành nhóm Hội ý trả lời cho tơi câu hỏi sau cách viết giấy phút Bài toán : Cho dãy thao tác sau : B1 : Xố bảng B2: Vẽ hình tròn Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hồng Hoa Thám B3: Quay lại B1 Có phải thuật tốn khơng? Tại sao? Sau Học sinh viết câu trả lời xong , đưa giải thích dãy thao tác khơng phải thuật tốn Vì dãy hữu hạn bước dãy thao tác khơng có tính dừng Để giúp học sinh hiểu rõ nắm vững thuật tốn, giúp học sinh tự viết thuật tốn đơn giản ta vào tìm hiểu số ví dụ thuật tốn phần sau MỘT SỐ VÍ DỤ VỀ THUẬT TỐN Ví dụ 1: Nhập vào hai số nguyên a,b Sau viết thuật tốn hốn vị giá trị ấy, sử dụng biến trung gian c Trước hết giáo viên đưa tốn nhỏ sau: Có ba ly nước, ly A đựng nước cam ly B đựng nước cam, ly để không Làm để ly A đựng nước chanh, ly B đựng nước cam Sau học sinh trả lời xong câu hỏi Giáo viên yêu cầu học sinh xác định toán * Xác định toán - Input : Cho A,B - Output: Hoán vị giá trị A,B * Ý tưởng: - Gán giá trị A cho C - Gán giá trị B cho A - Gán giá trị C cho B * Thuật toán: Qua ý tưởng thuật toán Giáo viên u cầu học sinh lên trình bày giải thuật Cụ thể * Cách liệt kê bước: Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám B1: Nhập A,B B2: C A B3: A B B4: B C B5: Thông báo giá trị A B * Sau Giáo viên gọi học sinh lên trình bày lại giải thuật sơ đồ khối: Nhập A,B C A AB BC Đưa giá trị A, B kết thúc Sau giáo viên cho ví dụ để mơ việc thực thuật tốn để học sinh hiểu cụ thể cách thức thực thuật toán A=25 C=25 A = 10 B =25 B=10 Kết Ví dụ 2: Bài tốn xếp: Giáo viên : Lê Thị Lan Trang Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám Trong sống, ta thường gặp việc liên quan đến xếp xếp phòng thi cho học sinh theo thứ tự A-Z học sinh xếp hàng vào lớp theo thứ tự từ thấp đến cao Tổng quát nghĩa cho dãy đối tượng cần xếp lại vị trí đối tượng theo tiêu chí Cụ thể ta vào toán sau: Cho dãy A gồm N số nguyên a1,a2,… an Cần xếp số hạng để dãy A trở thành dãy không giảm( tức số hạng trước không lớn số hạng sau) Có nhiều thuật tốn xếp, để đơn giản ta xét thuật toán xếp tráo đổi ( Exchange Sort) * Xác định toán: - Input: Dãy A gồm N số nguyên a1, a2, …an - Output: Dãy A lại thành dãy không giảm * Ý tưởng : Với cặp số hạng đứng liền kề dãy, số trước lớn số sau ta đổi chỗ chúng cho Việc lặp lặp lại khơng có đổi chỗ xảy * Thuật toán : a Cách liệt kê: B1: Nhập N, số hạng a1,a2 , a3… , an B2: M N; B3: Nếu M M quay lại B3 B7: Nếu ai>ai+1 tráo đổi với ai+1 B8: Quay lại B5 Tôi giảng cho Học sinh hiểu rằng, sau lần đổi chỗ, giá trị lớn dãy A chuyển dần cuối dãy sau lượt thứ giá trị lớn xếp vị trí cuối dãy Tương tự sau lượt thứ hai, giá trị lớn thứ Giáo viên : Lê Thị Lan Trang 10 Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám xếp vị trí sát cuối Có thể hình dung, sau lượt có số hạng xếp vị trí khơng tham gia vào q trình đổi chỗ nữa, giống bọt nước từ đáy hồ ( đầu dãy ) dần lên mặt nước ( cuối dãy) tan biến Cho nên thuật tốn có tên thuật tốn bọt ( Bubble Sort) Sau tơi gọi học sinh lên trình bày lại thuật tốn sơ đồ khối Nhập N a1 , a2 , an MN MM? Sai Đúng Tráo đổi ai+1 ai>ai+1? Sau tơi dùng ví dụ để mơ việc thực thuật toán cho Học sinh xem gọi học sinh lên làm Với dãy A = { 10 12 } 10 12 10 12 duyệt 10 12 Lần Giáo viên : Lê Thị Lan Trang 11 Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám 10 12 10 12 Tương tự sang lần duyệt thứ ta dãy: 7 10 12 Cứ tiếp tục lần duyệt thứ 10 ta dãy xếp 7 10 12 Sau tơi cho tiếp ví dụ khác u cầu học sinh thực để dãy xếp * Ví dụ : Bài tốn Tìm kiếm: Trong thực tế gặp nhiều trường hợp tìm kiếm , chẳng hạn tìm học sinh lớp , tìm số báo danh phòng thi Bài tốn đặt làm để tìm kiếm đối tượng nhanh Trong Tin học người ta đặt toán vậy: Cho dãy A gồm N số nguyên khác : a 1, a2, an số ngun k Cần biết có hay khơng số I (1 < I < n)mà = k Nếu có cho biết số Số ngun k gọi khố tìm kiếm Nói chung có nhiều cách tìm kiếm khác tơi xin giới thiệu hai thuật tốn mà hay dùng * Thuật tốn tìm kiếm tuần tự: (Senquential Search ) - Xác định toán: Input: Dãy A gồm N số nguyên khác a1 , a2 , … an Output: Chỉ số I mà = k thơng báo khơng có số ngun dãy A có giá trị k Trước hết Giáo viên đặt câu hỏi tình huống: “Muốn tìm tên học sinh chẳng hạn Nguyễn Bình Ngun có danh sách lớp 10A1 khơng? Nếu có đứng vị trí danh sách?” Giáo viên : Lê Thị Lan Trang 12 Sáng kiến kinh nghiệm THPT Hoàng Hoa Thám Lúc học sinh trả lời câu hỏi Sau Giáo viên đưa ý tưởng giải thuật: - Ý tưởng : Tìm kiếm thực cách tự nhiên Lần lượt từ số hạng thứ , ta so sánh giá trị số hạng xét với khoá gặp số hạng khoá dãy xét hết khơng số khố * THUẬT TỐN a) Liệt kê bước: B1: Nhập N dãy số hạng a1, a2, … an khóa k B2: i