các bước giải bài toán trong tin học

14 437 0
các bước giải bài toán trong tin học

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Các bớc giải bài toán trong tin học Chu Thị Tú Anh 1 Phần Phần Phần Phần I II I: :: : mở đầu mở đầumở đầu mở đầu A AA A- - Lí do chọn đề tài Lí do chọn đề tài Lí do chọn đề tài Lí do chọn đề tài Trong những năm gần đây, việc đào tạo về Công nghệ thông tin (CNTT) đ trở thành nhu cầu ngày càng cấp thiết hơn đối với mọi ngời, từ nhân viên bán hàng, kỹ s, bác sĩ và phóng viên đến nhà doanh nghiệp, cán bộ quản lí Phù hợp với xu thế phát triển của x hội, tin học đ trở thành một môn học chính thức và đợc yêu thích ở nhà trờng. Ngay từ trên ghế nhà trờng không ít học sinh đ quyết tâm học tập để trở thành chuyên gia CNTT và một số em đ đạt thành tích cao tại các kỳ thi do tỉnh, quốc gia tổ chức. Một trong những mục tiêu khi đa tin học vào trong nhà trờng là nhằm giúp cho học sinh có khả năng phân tích, tổng hợp, trừu tợng hoá, khái quát vấn đề và đặc biệt là phát huy t duy. Muốn vậy ngoài việc dạy đại trà tin học trong nhà trờng nhằm đảm bảo tính phổ thông, hớng nghiệp và dạy nghề cần phải tạo điều kiện cho các học sinh có năng khiếu tin học đợc phát triển về khả năng lập trình để giải quyết các bài toán. Để góp phần vào việc phục vụ cho quá trình dạy và học tin học trong trờng PTDT Nội trú, trong chuyên đề này tôi xin trình bày: Các bớc Các bớcCác bớc Các bớc giải một bài toán trong tin học. giải một bài toán trong tin học. giải một bài toán trong tin học. giải một bài toán trong tin học. Nội dung chuyên đề gồm 2 phần: A- Tìm hiểu cấu trúc dữ liệu biểu diễn bài toán. B- Các bớc để giải bài toán trong tin học. B BB B- - Phơng Phơng Phơng Phơng pháp nghiên cứu pháp nghiên cứu pháp nghiên cứu pháp nghiên cứu Phơng pháp chủ yếu khi viết chuyên đề: Các bớc Các bớc Các bớc Các bớc giải bài toán trong tin giải bài toán trong tin giải bài toán trong tin giải bài toán trong tin học họchọc học là nghiên cứu Sách giáo khoa và một số tài liệu tham khảo, từ đó tổng hợp chắt lọc các kiến thức và nội dung cần thiết để xây dựng chuyên đề. C CC C- - Đối tợng nghi Đối tợng nghi Đối tợng nghi Đối tợng nghiên cứu ên cứuên cứu ên cứu Chuyên đề viết ra với mục đích phục vụ cho quá trình dạy và học tin học trong trờng PTDT Nội trú nên nội dung ngắn gọn, dễ hiểu, không quá phức tạp. Học sinh có thể tự nghiên cứu và hiểu đợc. Các bớc giải bài toán trong tin học Chu Thị Tú Anh 2 Phần 2 hần 2hần 2 hần 2: Nội dung : Nội dung: Nội dung : Nội dung A AA A- - Tìm hiểu cấu trúc dữ liệu biểu diễn Tìm hiểu cấu trúc dữ liệu biểu diễnTìm hiểu cấu trúc dữ liệu biểu diễn Tìm hiểu cấu trúc dữ liệu biểu diễn bài toán bài toán bài toán bài toán Các bài toán trong thực tế thờng có dữ liệu vào và kết quả ra thuộc những kiểu dữ liệu quen biết nh: số nguyên, số thực, kí tự Khi cần lập trình cho những bài toán nh vậy, ngời lập trình sử dụng các kiểu dữ liệu đó thờng gặp một số hạn chế nhất định, phụ thuộc vào các yếu tố nh: dung lợng bộ nhớ, khả năng xử lí của CPU Vì vậy, mỗi một ngôn ngữ lập trình thờng cung cấp một số kiểu dữ liệu chuẩn cho biết phạm vi giá trị có thể l trữ, dung lợng bộ nhớ cần thiết để lu trữ và các phép toán tác động lên dữ liệu. Trong ngôn ngữ Pascal ta có sơ đồ các kiểu dữ liệu nh sau: BOOLEAN INTEGER BASIC TYPE REAL CHAR SIMPLE TYPE DATA TYPE USER DEFINED SUBRANGE TYPE ENUMERATED STRUCTURE TYPE ARRAY SET RECORD STRING FILE BOOLEAN: Kiểu logic chỉ có thể nhận một trong hai giá trị TRUE hoặc FALSE INTEGER: Kiểu số nguyên (-32768 32767) REAL: Kiểu số thực (2.9x10 -39 1.7x10 38 ) CHAR: Kiểu kí tự gồm 256 kí tự trong bộ m ASCII. SUB_RANGE: Kiểu miền con của một kiểu sơ cấp Các bớc giải bài toán trong tin học Chu Thị Tú Anh 3 Ví dụ: TYPE CHU_HOA=A Z; Chu_thuong=a z; So_nguyen=0 200; ENUMERATED: Kiểu liệt kê đợc định nghĩa bằng cách liệt kê tất cả các phần tử có thể có. Ví dụ: TYPE THU=(Chunhat, ThuHai, ThuBa, ThuTu, ThuNam, ThuSau, ThuBay); Color=(Red, Blue, Green, White, Black); ARRAY: Kiểu mảng gồm một tập hợp các phần tử cùng một kiểu dữ liệu cơ sở đợc xác định bởi chỉ số. Ví dụ: TYPE A=array[1 100] of integer; B=array[1 100,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[20]; Lop:1 12; DiemTB:real; Ketqua:Boolean; 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; Các bớc giải bài toán trong tin học Chu Thị Tú Anh 4 STRING: Kiểu xâu gồm một dy các kí tự. Ví dụ: TYPE TRUONG: STRING[50]; HOTEN:STRING; 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 dy và đợc lu trữ trên bộ nhớ nhớ ngoài. Ví dụ: TYPE Tep=FILE of integer; Bai=text; Các bớc giải bài toán trong tin học Chu Thị Tú Anh 5 B BB B- - Các bớc để giải bài toán trong tin học: Các bớc để giải bài toán trong tin học: Các bớc để giải bài toán trong tin học: Các bớc để giải bài toán trong tin học: I_ Bớc 1: 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 liên tục 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ái đ có khi bắt đầu giải bài toán. + B: là kết luận, mục tiêu cần đạt đợc 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 để từ những cái đ có A có đợc cái phải tìm B. 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. 3- Bài toán trong tin học: 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 đ nói ở trên nhng có thể đợc diễn dạt theo môt cách nói khác. * A: là input hay còn gọi là thông tin vào. * B: là output hay còn gọi là thông tin ra. * là chơng trình tạo ra từ các lệnh cơ bản của máy cho phép biến đổi từ A thành B. 4- Những khó khăn: Để xác định một bài toán trên máy tính ta thờng gặp những khó khăn sau: - Thông báo về A hay B không đầy đủ và không 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- Một số ví dụ: Ví dụ 1: Tìm ớc chung lớn nhất của hai số nguyên dơng M và N. Input: hai số nguyên dơng M và N. Output: Ước chung lớn nhất của M và N. Các bớc giải bài toán trong tin học Chu Thị Tú Anh 6 Ví dụ 2: Bài toán tìm kiếm nhị phân: Cho dy A tăng gồm N số nguyên khác nhau a 1 , a 2 , a N và một số nguyên k cho trớc. Cần biết có hay không chỉ số i (1<=i<=N) mà a i = k. Nếu có hy cho biết chỉ số đó. Input: Dy A là dy tăng gồm N số nguyên khác nhau a 1 , a 2 , a N , số nguyên k. Output: Chỉ số i mà a i = k hoặc thông báo không có số hạng nào của dy A có giá trị bằng k. Ví dụ 3: Bài toán 8 quân hậu: Hy tìm các 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 nào. Input: - Một bàn cờ một bảng hình vuông gồm 8 hàng và 8 cột. - Quân hậu là quân 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. - Ta có tất cả 8 quân hậu. Output: Các bảng 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 nào 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. 6- Một số nhận xét: - Việc xác định bài toán là rất quan trọng nó ảnh hởng rất lớn đến đế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 thì phần lớn thông tin về A và B là 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ớ tới 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 của mình vì đó chính là cách 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 A và thông tin Output B, tìm các mối liên giữa chúng. Các bớc giải bài toán trong tin học Chu Thị Tú Anh 7 II_ Bớc 2: Chọn cấu trúc dữ liệu để biểu diễn bài toán: 1- Một số lu ý khi chọn cấu trúc dữ liệu: - 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 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 và MTĐT đang đợc sử dụng. 2- Một số ví dụ: Ví dụ 1: Tìm ớc chung lớn nhất của hai số nguyên dơng M và N. M, N là các số nguyên dơng nên cấu trúc dữ liệu nguyên dơng là hợp lý. Có thể sử dụng dữ liệu kiểu INTEGER. Ví dụ 2: Bài toán tìm kiếm nhị phân: Để biểu diễn dy gồm N số nguyên thì cấu trúc dữ liệu ở đây sử dụng mảng một chiều là hợp lí. Cụ thể là sử dụng một mảng gồm có N số nguyên (kiểu Integer). Ví dụ 3: Bài toán quản lí học sinh của một lớp: Thông tin về một học sinh bao gồm: Họ tên, Ngày sinh, Điểm Toán, văn, ngoại ngữ, lí, hoá, sinh, sử ,địa, TD, GDCD, Xếp loại. Đa ra kết quả xếp loại của từng học sinh trong một lớp. Để biểu diễn thông tin về một học sinh ta sử dụng một bản ghi (RECORD) để biểu diễn. Type HS = record HoTen:string[20]; NgaySinh:string[10]; Toan, Van, NN, Sinh, Su, Dia, GDCD, TD:real; DiemTB:real; XepLoai:char; End; Để biểu diễn số học sinh trong một lớp ta sử dụng mảng (ARRAY): Var LopA: array[1 Nmax] of HS; Các bớc giải bài toán trong tin học Chu Thị Tú Anh 8 3_ Bớc 3: Tìm thuật toán: Tìm thuật toán là bớc quan trọng nhất để giải quyết một bài toán. Mỗi thuật toán chỉ có thể giải đợc một bài toán nhng một bài toán có thể có nhiều thuật toán khác nhau. Khi thiết kế thuật toán hoặc lựa chọn thuật toán ngời ta thờng quan tâm đến các tài nguyên nh: thời gian thực hiện, số lợng ô nhớ Ví dụ: với bài toán tìm kiếm nhị phân, dy đ cho là dy đ đợc sắp xếp nên thuật toán tìm kiếm nhị phân (sẽ trình bày ở dới đây) cần ít thao tác hơn nhiều so với thuật toán tìm kiếm tuần tự. Ví dụ 1: Tìm ớc chung lớn nhất cua hai số nguyên dơng M và N. Ta có thuật toán Euclide đợc diễn tả bằng lu đồ nh sau: ƯCLN là M M>N M<>N M:=M - N end Begin Nhập M, N M:=M+N Các bớc giải bài toán trong tin học Chu Thị Tú Anh 9 Ví dụ 2: Bài toán tìm kiếm nhị phân: Ta có thuật toán tìm kiếm nhị phân nh sau: Nh ậ p N v à a 1 , a 2 a N Dau< - 1;Cuoi< - N Giua:=[(Dau+Cuoi)/2] A giua =k? Đ a ra giua rồi kết thúc Đúng A giua <k ? Đúng Dau< - giua+1 Cuoi< - Giua - 1 Sai Dau>Cuoi Đúng Sai Sai TB không có phần tử bằng k rồi kết thúc Các bớc giải bài toán trong tin học Chu Thị Tú Anh 10 IV_ Bớc 4: Lập trình: 1- Khái niệm: Lập trình là dùng ngôn ngữ máy tính cụ thể nào đó (ví dụ Pascal) để diễn tả thuật toán, cấu trúc dữ liệu thành các câu lệnh để máy tính có thể thc hiện đợc và giải quyết đúng bài toán mà ngời lập trình mong muốn. 2- Kĩ năng lập trình: - Kĩ năng lập trình là kĩ năng cài đặt thành công các thuật toán bằng một ngôn ngữ lập trình cụ thể. - Đ gọi là kĩ năng thì chỉ có thể có đợc thông qua việc tèn luyện tích cực. - Kinh nghiệm cho thấy một thuật toán hay nhng việc cài đặt lộn xộn, vụng về khi chạy trên máy tính có thể cho kết quả rất tồi tệ. 3- Phát triển chơng tình bằng cách tinh chế từng bớc: Tinh chế từng bớc là phơng pháp khoa học, có hệ thống giúp ta phân tích các thuật toán và cấu trúc dữ liệu từ đó viết thành chơng trình. Muốn lập trình không phải chỉ nắm vững ngôn ngữ lập trình là đủ, vấn đề cốt yếu là biết phát triển dần dần để chuyển các ý tởng thành chơng trình hoàn chỉnh. 4- Phơng pháp tinh chế từng bớc: Ban đầu chơng trình đợc viết bằng những lời tự nhiên (ngôn ngữ tiếng Việt chẳng hạn). - ở từng bớc sau, mỗi câu lời đợc phân tích ra chi tiết hơn bằng nhiều câu lời khác tơng ứng với sự phân tích một công việc thành những công việc nhỏ hơn. Mỗi câu lời đó là một sự đặc tả công việc. - Càng ở những bớc sau các lời tự nhiên đợc thay thế bằng câu lời trong ngôn ngữ lập trình - Phơng pháp tinh chế từng bớc là một thể hiện của sự t duy, giải quyết vấn đề từ trên xuống trong đó sự phát triển của các bớc là hớng về phía ngôn ngữ lập trình đang đợc sử dụng. 4- Các ví dụ: Ví dụ 1: Bài toán tìm ớc chung lớn nhất của hai số nguyên dơng M, N. Theo thuật toán Euclid đ trình bày ở trên ta tinh chế chơng trình nh sau: * Tinh chế lần 1: Bắt đầu Nhập M, N. Lu M vào a, lu N vào b. (Lu lại giá trị cho M và N) Chừng nào M khác N thì Nếu M>N thì thay thế M bởi M-N [...]... luyện, tìm tòi v nghiên cứu Trên đây l chuyên đề Các bớc giải một b i toán trong tin học giúp cho các bạn yêu thích lập trình có thể xem nh một t i liệu tham khảo, khai thác thêm thông tin về cách giải quyết một b i toán trong tin học Do hạn chế về thời gian v kinh nghiệm, chuyên đề có thể còn nhiều sai sót, rất mong nhận đợc sự đóng góp ý kiến của các bạn Xin chân th nh cảm ơn! Ngời viết chuyên đề... với các bộ test tơng ứng với kết quả của b i toán l : Vô nghiệm (Delta0) 13 Các bớc giải bài toán trong tin học Chu Thị Tú Anh Kết luận Quá trình xây dựng chơng trình l một chuỗi các bớc tinh tế ở mỗi bớc, một công việc đợc phân ra l m nhiều công việc con, ta sẽ l m mịn dần các công việc đó v c ng ở các bớc sau ta sẽ hớng công việc về ngôn ngữ... sẽ thực hiện trên d y a1, a2, agiua-1 + Nếu agiua < k thì việc tìm kiếm sẽ đợc thực hiện trên d y số agiua+, aN 11 Các bớc giải bài toán trong tin học Chu Thị Tú Anh Quá trình sẽ đợc lặp lại một số lần cho đến khi hoặc đ tìm thấy khoá k trong d y A hoặc phạm vi tìm kiếm bằng rỗng * Tinh chế lần 2: Bắt đầu B1- Nhập dữ liệu B2- Dau

Ngày đăng: 28/02/2015, 07:07

Từ khóa liên quan

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

Tài liệu liên quan