Sáng kiến kinh nghiệm Phương pháp tổng quát để giải bài toán bằng máy tính
Bạn đang xem tài liệu "Sáng kiến kinh nghiệm Phương pháp tổng quát để giải bài toán bằng máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- sang_kien_kinh_nghiem_phuong_phap_tong_quat_de_giai_bai_toan.doc
Nội dung text: Sáng kiến kinh nghiệm Phương pháp tổng quát để giải bài toán bằng máy tính
- Trường THPT Lý Thường Kiệt PHƯƠNG PHÁP TỔNG QUÁT ĐỂ GIẢI BÀI TOÁN BẰNG MÁY TÍNH PHẦN I: MỞ ĐẦU 1. Bối cảnh của đề tài : Tin học là một môn khoa học mới, muốn học giỏi tin học đòi hỏi phải học giỏi các bộ môn khoa học khác như: toán, lý, hoá, anh văn Tin học sử dụng kiến thức của các bộ môn khoa học đó làm công cụ để nghiên cứu. Muốn giải quyết được các bài tập tin học không chỉ có những kiến thức đó mà còn phải có kiến thức về tin học. Đặc biệt đối với các bài tập khó cần phải có một phương pháp tổng quát để giải. Phương pháp tổng quát để giải bài toán tin học là một hệ thống các bước có tính ổn định nhằm giúp người học có thể tìm ra thuật giải, biễu diễn được dữ liệu và từ đó viết được chương trình. 2. Lý do chọn đề tài : Qua thực tế công việc giảng dạy tin học ở trường THPT Lý Thường Kiệt, tôi thấy học sinh học tin học còn yếu, chưa biết cách học viết chương trình, thậm chí có em còn tìm cách học thuộc lòng các chương trình mẫu của giáo viên. Nguyên nhân chính dẫn đến điều đó là do các em đều chưa ý thức được thứ tự các bước để hình thành nên chương trình. Từ những thực tế trên, kết hợp với quá trình giảng dạy và nghiên cứu một số sách tham khảo, bản thân tôi xin trình bày một số kinh nghiệm về phương pháp giải các bài toán trong tin học ở phổ thông. 3. Phạm vi và đối tượng nghiên cứu : Học sinh lớp 10 bắt đầu làm quen với giải thuật, thuật toán, và học cách tìm ra phương pháp giải bài toán trên máy tính. 4. Mục đích nghiên cứu : Giúp cho học sinh hiểu và xác định được thứ tự để giải bài toán trên máy tính và thực hiện qua những bước sau : Bước 1: Xác định bài toán Bước 2: Lựa chọn hoặc thiết kế thuật toán. Bước 3: Viết chương trình Bước 4: Hiệu chỉnh CT Bước 5: Viết tài liệu. Với khuôn khổ của đề tài, thời gian và kiến thức của bản thân còn hạn chế đề tài sẽ không tránh khỏi những thiếu sót. Bản thân tôi rất mong được các ý kiến đóng góp xây dựng quý báu của đồng nghiệp để đề tài không ngừng được hoàn thiện, từ đó có thể áp dụng và phổ biến rộng rãi. Tôi xin chân thành cảm ơn. GV : Đào Minh Đạt
- Trường THPT Lý Thường Kiệt PHẦN II: NỘI DUNG Phương pháp tổng quát để giải bài toán tin học bao gồm các bước sau: I/ XÁC ĐỊNH BÀI TOÁN 1/Khái niệm bài toán Trong quá trình tồn tại và phát triển, mọi cá nhân luôn phải giải quyết các bài toán. Cuộc sống là một chuổi các bài toán mà ta phải đối đầu để giải quyết. Theo nhiều nhà nghiên cứu thì mọi bài toán đều có thể diễn đạt theo một sơ đồ chung A B Trong đó: A là giả thiết, điều kiện ban đầu hoặc là cái đã cho, đã có khi bắt đầu giải bài toán. B là kết luận, mục tiêu cần đạt hoặc là cái phải tìm, phải làm ra khi kết thúc bài toán Là suy luận, giải pháp cần xác định hoặc là một chuỗi các thao tác cần thực hiện, cần thi hành để có được cái phải tìm B từ cái đã có A 2/Xác định bài toán Theo sơ đồ trên thì xác định bài toán có nghĩa là xác định A, B và nếu có thể được thì xác định luôn các thao tác được phép sử dụng để đi từ A đến B (Điều này rất quan trọng nhưng thường lại được hiểu ngầm). 3/Bài toán trên máy tính Một bài toán trên máy tính cũng mang đầy đủ các tính chất của một bài toán tổng quát nhưng được diễn đạt theo một cách khác A: gọi là INPUT (thông tin vào) B: gọi là OUTPUT (thông tin ra) : gọi là chương trình được tạo từ các câu lệnh cơ bản của máy cho phép biến A thành B. 4/Các khó khăn thường gặp Để xác định một bài toán trên máy tính ta thường gặp hai khó khăn: +Thông tin về A, B không đầy đủ rõ ràng. +Thông báo về các điều kiện đặt ra cho cách giải thường không được nêu ra một cách minh bạch. 5/Ví dụ minh hoạ a/Bài toán 1: tám quân hậu Hãy tìm cách đặt 8 quân hậu trên một bàn cờ vua sao cho không có quân hậu nào có thể ăn quân hậu khác. GV : Đào Minh Đạt
- Trường THPT Lý Thường Kiệt Xác định thông tin vào: -Bàn cờ vua là bảng hình vuông gồm 8 hàng 8 cột -Quân hậu có thể ăn được bất kỳ quân nào nằm trên cùng một hàng, cùng một cột, hay cùng một đường chéo. -Có tất cả 8 quân hậu Xác định thông tin ra: -Các bảng hình vuông trên đó có đánh dấu vị trí của 8 quân hậu sao cho không có quân hậu nào có thể ăn quân hậu khác. Nghĩa là trên mỗi hàng, mỗi cột, mỗi đường chéo chỉ có thể có một quân hậu. -Chỉ ra tất cả các bảng vuông khác nhau thoả mãn điều kiện của bài ra. Xác định các thao tác -Lần lượt xác định vị trí của một trong 8 quân hậu trên bàn cờ. -Đặt đủ 8 quân. -Tất cả các quân hậu đều phải thoả mãn đIũu kiện đã nêu b/Bài toán 2: (Mã đi tuần) Cho một bàn cờ kích thước n*n (n>3). Một quân mã di chuyển theo luật cờ vua được đặt tại một ô có toạ độ (x,y). Hãy tìm một đường đi sao cho mọi ô trên bàn cờ đều được mã nhảy đến đúng một lần. Xác định thông tin vào -Một bảng vuông kích thước n*n -Toạ độ vị trí thứ nhất của quân mã. -Tám nước đi có thể của quân mã Xác định thông tin ra -Một bảng hình vuông trên đó có đánh dấu vị trí theo thứ tự từ 1 đến n*n của quân mã. -Từ vị trí K đến vị trí K+1 phải theo đúng luật đi của quân mã Xác định các thao tác chế biến thông tin: -Lần lượt xác định các vị trí của quân mã từ 2 đến n*n sao cho quân mã di chuyển đúng luật và mỗi ô chỉ đi đúng một lần. c/Bài toán 3: Cho một dãy số nguyên dương a1,a2, ,an. Hãy tìm từ dãy trên một dãy con (không nhất thiết liên tục) tăng và có độ dài là dài nhất. Xác định thông tin vào -Một dãy số nguyên dương a1, a2, a3, , an -Mỗi số được xác định bởi hai yếu tố: Giá trị và chỉ số. Xác định thông tin ra: -Một dãy con lấy từ dãy đã cho -Dãy con phải có hai tính chất: Tăng và dài nhất Xác định các thao tác -Lần lượt duyệt các phần tử GV : Đào Minh Đạt
- Trường THPT Lý Thường Kiệt -Quyết định loại bỏ phần tử nào để dãy còn lại là tăng và dài nhất d/ Bài toán 4: Cho hai số tự nhiên a,b. Tìm USCLN của chúng Xác định thông tin vào -Hai số tự nhiên a, b Xác định thông tin ra Số tự nhiên d thoả mãn d là ước của a và d là ước của b và d là lớn nhất trong tập ước chung đó. Xác định các thao tác chế biến thông tin -Xây dựng một tập hữu hạn các phép tính cho phép tính được d từ a và b 6/Một số nhận xét quan trọng -Việc xác định bài toán rất quan trọng, ảnh hưởng đến cách thức và chất lượng của việc giải quyết bài toán. -Một bài toán cho dù được diễn đạt bằng thông báo chính xác đến đâu đi chăng nữa cũng phải giả định là phần lớn thông tin về A, B đều tiềm ẩn trong đầu người giải. Thông báo về A hoặc B chỉ là biểu tượng gợi nhớ đến các thông tin tiềm ẩn đó. -Bước đầu tiên để xác định một bài toán là phải phát biểu lại bài toán một cách chính xác theo ngôn ngữ riêng mình vì đó là cách ta tiếp cận bài toán, hiểu bài toán. -Bước kế tiếp là tìm hiểu các thông tin input và output và mối liên hệ giữa chúng. -Nên xét một vài trường hợp cụ thể, từ đó hiểu được bài toán. Qua đó thấy rõ được các thao tác cần phải tiến hành. II/TÌM CẤU TRÚC DỮ LIỆU BIỄU DIỄN BÀI TOÁN 1/Khái niệm ban đầu Máy tính điện tử được phát minh như một thiết bị nhằm làm dễ dàng và tiến hành nhanh các tính toán phức tạp và lớn. Trong nhiều ứng dụng, khả năng lưu trữ và truy cập lượng thông tin lớn giữ vai trò quan trọng và được xem như là đặc trưng chính của nó, và khả năng tính toán trở thành ít quan trọng trong nhiều trường hợp. Trong thực tế, thông tin cần xữ lý là trừu tượng. Thông tin cung cấp cho máy gồm một tập hợp dữ liệu về bối cảnh thực đã được mã hoá. Nói rõ hơn tập hợp này được xem như thích đáng cho vấn đề định sẵn. Từ đó có thể đưa và máy tính và tính ra kết quả cần tìm. -Khi giải một bài toán ta cần phải định nghĩa tập hợp dữ liệu biểu diễn tình trạng cụ thể. Việc lựa chon này tuỳ thuộc vào vấn đề phải giải quyết. Sau đó là chọn cách biểu diễn thông tin. Việc này tuỳ thuộc vào các thao tác thực hiện trên kiểu dữ liệu. GV : Đào Minh Đạt
- Trường THPT Lý Thường Kiệt Ví dụ: -Nếu chỉ cần thao tác cộng thì cách tốt nhất để biểu diễn một số nguyên là n que hoặc dùng số La mã. Quy tắc cộng với sự biểu diễn này là khá đơn giản và tự nhiên trong khi đó phép biểu diễn dùng số ả rập đòi hỏi các quy tắc ít hiển nhiên hơn. -Tuy nhiên, trường hợp trên bị đảo ngược khi ta xét đến việc công các số lớn hoặc chỉ xét đến phép nhân hoặc phép chia. Việc phân tích các thao tác trên thành các thao tác đơn giản được thực hiện dễ dàng trong phép biểu diễn bằng số ả rập mà nguyên tắc dựa trên vị trí chữ số. -Mọi người đều biết là máy tính điện tử biểu diễn các dữ liệu bằng các chữ số nhị phân. Phép biểu diễn này ít thích hợp cho con người vì cần khá nhiều bít song nó lại thích hợp cho các loại mạch điện tử vì hai giá trị 0 và 1 có thể được biểu diễn một cách dễ dàng và tin cậy được với sự có hay vắng mặt của dòng điện, từ trường hoặc điện tích. 2/Cấu trúc dữ liệu thường dùng a/Kiểu đơn giản -Kiểu cơ bản: +BOOLEAN +INTEGER +REAL +CHAR -Kiểu người sử dụng định nghĩa +SUB RANGE +ENUMERATED b/Kiểu có cấu trúc +ARRAY +SET +RECORD +STRING +FILE Trong đó: -BOOLEAN: Là kiểu logic, là tập hợp có hai giá trị là TRUE hoặc FALSE -INTEGER: Kiểu số nguyên, là tập hpựo các giá rị nguyên từ -32768 đến 32767 -REAL: Kiểu số thực, là tập hợp các giá trị từ –2.9*10(39) đến 1.7*10(38) -CHAR: Kiểu ký tự, là tập hợp các ký tự ‘a’-‘z’,’0’-‘9’ và các ký tự đặc biệt khác -SUB RANGE: Kiểu miền con của một kiểu sơ cấp. Ví dụ: TYPE Tuoi=0 120 GV : Đào Minh Đạt
- Trường THPT Lý Thường Kiệt -ENUMERATED: Kiểu liệt kê được định nghiã bằng cách liệt kê tất cả các phần tử có thể có Ví dụ: TYPE thu=(Chủ nhật, hai, ba, tư, năm, sáu, bảy) -ARRAY: Kiểu mảng gồm một tập hợp các phần tử cùng thuộc một kiểu dữ liệu cơ sở được xác định bởi chỉ số Ví dụ: TYPE MMC=array[1 100] of integer; -RECORD: Kiểu bản ghi, gồm một tập hợp các phần tử thuộc các kiểu dữ liệu khác nhau. Vídụ: TYPE Hocsinh=record Hoten:string; Lop:1 12; Truong: string; DTB: real; END; -SET: Kiểu tập hợp gồm một số các đối tượng có cùng kiểu cơ sở. Ví dụ: TYPE Chucai=set of char; Chuso=set of 0 9; -STRING: Kiểu chuổi, gồm một dãy các ký tự. -FILE: Kiểu tệp, gồm một tập hợp các dữ liệu có liên quan với nhau và có cùng kiểu được nhóm lại thành một dãy và đưọc lưu trữ trên đĩa. Ví dụ TYPE Tep=file of integer; Bai=text; 3/Các lưu ý khi chọn cấu trúc dữ liệu Khi lựa chọn cấu trúc dữ liệu để biểu diễn một bài toán ta nên dựa vào các tiêu chuẩn sau đây: -Cấu trúc dữ liệu phải biểu diễn được đầy đủ các thông tin nhập và xuất của bài toán. -Cấu trúc dữ liệu phải phù hợp với các thao tác của thuật toán mà ta lựa chọn để giải quyết bài toán. -Cấu trúc dữ liệu phải phù hợp với điều kiện cho phép của ngôn ngữ lập trình mà MTĐT đang sử dụng. 4/Các ví dụ a/Bài toán 1: (Bài toán tám con hậu) -Bàn cờ là một bảng vuông 8*8, nên rõ ràng cấu trúc mảng là thích hợp để biểu diễn. -Theo luật cờ vua, một quân hậu ăn được mọi quân khác nằm cùng hàng, hoặc cùng cột hoặc cùng đường chéo trên bàn cờ. Vậy ta suy ra mỗi cột GV : Đào Minh Đạt