Tìm chu vi đường tròn là bài toán quan trọng trong bất cứ ngành kỹ thuật nào. Do đó, tìm chu vi đường tròn là cần thiết và thuật toán tối ưu tìm ra chu vi đường tròn là thật sự quan trọng.
Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CNTT & TRUYỀN THÔNG BỘ MÔN KỸ THUẬT PHẦN MỀM BÁO CÁO NIÊN LUẬN 1 ĐỀ TÀI: CHU VI ĐỪƠNG TRÒN MSĐT: 438 Giáo viên hướng dẫn: Ths NGUYỄN THANH BÌNH Mã số cán bộ: 1530 Sinh viên thực hiện: ĐOÀN VĂN QUÝ MSSV: 1091704 Lớp: DI0996A2 2010-2011 ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN NIÊN LUẬN 1 SVTH:Đoàn Văn Quý Page 1 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình (Học kỳ II, Niên khóa 2010-2011) GIÁO VIÊN HƯỚNG DẪN: STT HỌ VÀ TÊN MSCB 1 NGUYỄN THANH BÌNH 1530 SINH VIÊN THỰC HIỆN: STT HỌ VÀ TÊN MSSV THƯỞNG (Tối đa 1 diểm) ĐIỂM 1 ĐỒN VĂN Q 1091704 I. HÌNH THỨC (Tối đa 0,5 điểm) Bìa (Tối đa 0,25 điểm) Các tiêu đề: Trường ĐHCT, Khoa CNTT Loại niên luận: 1, tên đề tài Giáo viên hướng dẫn: chức danh, họ tên Thơng tin về sinh viên thực hiện: họ tên, mã số, lớp Năm thực hiện Nhận xét của giáo viên hướng dẫn và giáo viên chấm Mục luc: cấu trúc chương, mục, tiểu mục Phụ lục (nếu có) Tài liệu tham khảo II. NỘI DUNG (Tối đa 3 điểm) Tổng quan (Tối đa 0,5 điểm) Mơ tả bài tốn, mục tiêu cần đạt được (0,25 điểm) Hướng giải quyết và kế hoạch thực hiện (0,25 điểm) Các khái niệm sử dụng trong đề tài Kết quả vận dụng lý thuyết vào đề tài Ứng dung (Tối đa 2,0 điểm) Phân tích u cầu của bài tốn, xây dựng các cấu trúc dữ liệu cần thiết (tối đa 0,5 điểm) Giải thuật (Lưu đồ - Ngơn ngữ giả) (1,0 điểm) Giới thiệu chương trình (0,5 điểm) Nhận xét kết quả đạt được Hạn chế Hướng phát triển III. CHƯƠNG TRÌNH DEMO (Tối đa 5,0 điểm) Giao diện thân thiện với người dùng (1,0 điểm) Hướng dẫn sử dụng (0,5 điểm) Kết quả thực hiên đúng với kết quả của phần ứng dụng (3,5 điểm) Ghi chú: điểm trong khung “các sinh viên thực hiện” là điểm kết quả cuối cùng của từng sinh viên trong q trình thực hiện niên luận 1. Nếu sinh viên demo chương trình và trả lời vấn đáp khơng đạt u cầu của giáo vên hướng dẫn thì sinh viên sẽ nhận điểm F cho học phần này. SVTH:Đồn Văn Q Page 2 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình Cần Thơ, ngày … . tháng 4 năm 2011 GIÁO VIÊN HƯỚNG DẪN Nguyễn Thanh Bình SVTH:Đoàn Văn Quý Page 3 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình MỤC LỤC CHƯƠNG 1: PHẦN TỔNG QUAN 5 1.1 GIỚI THIỆU: .5 1.2 MƠ TẢ BÀI TỐN: 5 1.3 MỤC TIÊU CẦN ĐẠT ĐƯỢC: 5 1.4 HƯỚNG GIẢI QUYẾT: 6 1.5 KẾ HOẠCH THỰC HIỆN: .6 CHƯƠNG 2: PHẦN LÝ THUYẾT .6 2.2 KẾT QUẢ VẬN DỤNG VÀO BÀI TỐN: .8 CHƯƠNG 3: KẾT QUẢ ỨNG DỤNG .9 3.1 PHÂN TÍCH BÀI TỐN: 9 3.1.1 u cầu và cách giải bài tốn: .9 3.1.2 Tổ chức dữ liệu: 9 3.2 THIẾT KẾ GIẢI THUẬT: .10 3.2.2 Giải thuật: 10 3.3 GIỚI THIỆU CHƯƠNG TRÌNH: 11 3.3.1 Mơi trường cài đặt: 11 3.3.2 Cách thức thực thi chương trình: 11 3.3.3 Một vài giao diện của chương trình: .11 CHƯƠNG 4: KẾT LUẬN – ĐÁNH GIÁ 16 4.1 CÁC KẾT QUẢ ĐẠT ĐƯỢC: 16 4.2 HƯỚNG PHÁT TRIỂN: 17 PHỤ LỤC 18 HƯỚNG DẪN SỬ DỤNG DEMO 18 TÀI LIỆU THAM KHẢO 19 SVTH:Đồn Văn Q Page 4 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình CHƯƠNG 1: PHẦN TỔNG QUAN 1.1 GIỚI THIỆU: Tìm chu vi đường tròn là bài tốn quan trọng trong bất cứ ngành kỹ thuật nào. Do đó, tìm chu vi đường tròn là cần thiết và thuật tốn tối ưu tìm ra chu vi đường tròn là thật sự quan trọng. Một trong những bài tốn đặt ra trong thực tế là việc tìm chu vi đường tròn từ ba điểm khơng thẳng hàng cho trước và phương pháp đó tốt nhất theo một chỉ tiêu cụ thể, nghiên cứu lời giải các lớp bài tốn tối ưu thuộc về lĩnh vực ứng dụng tốn học. Tuy nhiên cũng cần phải nói rằng trong nhiều trường hợp chúng ta chưa thể xây dựng một thuật tốn nào thực sự hữu hiệu để giải bài tốn, mà cho tới nay việc tìm chi vi cua đường tròn là thực sự chưa sẽ tối ưu, và cần phải tìm ra thuật tốn tốt nhất cho mọi trường hợp. Việc tính chu vi đường tròn có thể được thực hiện bằng nhiều phương pháp, trong quyển niên luận 1 này chúng ta nghiêm cứu một phương pháp đó là lập trình hướng đối tượng và kiến thức là dùng hệ thức “Hê-rong ” tìm ra các số liệu liên quan. 1.2 MƠ TẢ BÀI TỐN: Bài tốn tính chu vi đường tròn sẽ thật đơn giản khi chúng ta biết được bán kính của đường tròn, nhưng nếu khơng biết bán kính thì sa? Bài tốn được đặt tên từ vấn đề tìm ra chu vi của đường tròn từ ba điểm cho trước. Bài tốn thường được ứng dụng trong cơng việt tính tốn đơn giản trong kiến thức tốn phổ thơng, các ngành xây dựng, thiết kế và tạo các bản vẽ Nội dung bài tốn là tìm ra chu vi đường tròn với giá trị nhập từ người dùng (từ file) mỗi bộ sáu số tương ưng với các tọa độ trong mặt phẳng đề-các. Kết quả cần tìm là một chu vi và được lưu vào file . 1.3 MỤC TIÊU CẦN ĐẠT ĐƯỢC: Nắm vững cơ sở lý thuyết về lập tình hướng đối tượng trên mơi trường C++ và các kỹ thuật thiết kế giải thuật mà quan trọng là thiết kế các hàm xây dựng, hàm thành viên… Hiểu được kỹ thuật lập trình hướng đối tượng và ứng dụng vào thực tế bài tốn. Thiết kế chương trình sao cho có thể: Nhập vào bài tốn: Thuật tốn nhập vào tọa độ của điểm. Thuật tốn tìm các giá trị hay kết quả cần thiết cho cơng việc tính tốn. Xuất ra phương án: Xuất ra các điểm vừa nhập từ file. Xuất ra màn hình các gía trị cẩn thiết cho việc tính chu vi của đường tròn. Xuất ra chu vi của đường tròn(ra màn hình hay ra filexuat). Kiểm tra tính đúng đắn của chương trình. Đánh giá giải thuật, so sánh với các giải thật khác. SVTH:Đồn Văn Q Page 5 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình 1.4 HƯỚNG GIẢI QUYẾT: Xây dựng giải thuật tìm ra chu vi đường tròn bằng ngôn ngữ giả, sau đó tối ưu hóa giải thuật thành chương trình. Lập trình trên máy tính và cho chạy. Tìm chu vi đường tròn bằng các thuật toán trong lập trình hướng đối tượng, như khai báo một class, các hàm xây dựng và các hàm thành viên. Tìm một thuật toán tồi ưu nhất có thể để tìm chu vi đường tròn nhanh nhất có thể. Bài toán này chúng ta đưa các chưng trình về các đối tượng sinh động và dễ dàng thực hiện các phép toán trên các đối tượng. 1.5 KẾ HOẠCH THỰC HIỆN: Tuần 1,2,3 Tìm hiểu các chiến lược thiết kế giải thuật, mà đặc biệt ở đây là dung lập trình hướng đối tượng . Tuần 4,5,6 Xây dựng hàm và chương trình theo giải thuật đã đề ra. Thử tìm xem có giải thuật nào tốt hơn không. Tuần 7,8 Viết bài báo cáo. CHƯƠNG 2: PHẦN LÝ THUYẾT 2.1 CÁC KHÁI NIỆM CƠ BẢN: 2.1.1 Lập trình hướng đối tượng(object-oriented programming OOP): - Là kĩ thuật lập trình dựa trên công nghệ đối tượng, làm tăng năng suất lập trình, đơn giản hóa độ phức tập của chương trình , giúp người lập trình hình thức hóa chương trình thành của mình thành các đối tượng. 2.1.2 Lớp (class): - Class là khuôn mẫu tạo ra đối tượng. Ví dụ: class Diem{ private: public: protected: } ; a. private (riêng): - Riêng tư là thể tính chất đóng mạnh nhất của một đặc tính hay một lớp trong lập trình hướng đối tượng. - ví dụ: class Diem{ private: int x; }; SVTH:Đoàn Văn Quý Page 6 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình b. bublic (dung chung): - Công cộng là một tính chất được dùng để gán cho các phương thức, các biến nội tại, hay các lớp mà khi khai báo thì người lập trình đã cho phép các câu lệnh bên ngoài cũng như các đối tượng khác được phép dùng đến nó. - ví dụ: Class Diem{ Public: Diem(); }; c. protected (bảo vệ): - là tính chất mà khi dùng để áp dụng cho các phương thức, các biến nội tại, hay các lớp thì chỉ có trong nội bộ của lớp đó. - ví dụ: class Diem { protected: int y; }; 2.1.3 Hàm thành viên: - Là hàm dung để gọi thực thi trong hàm main(). - ví dụ: class Diem { … bublic: Diem(); Diem(int a, int b); … }; 2.1.4 Tính chu vi đường tròn: - Là độ dài của đường tròn, tính theo công thức 2xπxR( trong đó π là hệ số có giá trị là 3.14, R là bán kính đường tròn). 2.1.5 Diện tích đường tròn: - Là phần nhìn thấy của đường tròn, tính theo công thức πxR 2 ( trong đó π là hệ số có giá trị là 3.14, R là bán kính đường tròn). 2.2 KẾT QUẢ VẬN DỤNG VÀO BÀI TOÁN SVTH:Đoàn Văn Quý Page 7 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình Hình thức hóa bài toán tìm chu vi đường tròn, với những thuất toán phúc tạp để tìm chu vi đường tròn, nhưng với hướng đối tượng chúng ta có thể xem bài toán tìm chu vi đường tròn tphức tạp thành bài toán gần gũi hơn. Bài toán tìm chu vi đường tròn được vận dụng nhiều trong đời sống, đặc biệt là những ngành kĩ thuật, xây dựng…. Đặc biệt là trong xây dựng, bài toán tìm chu vi giúp rất nhiều trong kỹ thuật. Làm cho bài toán tìm chu vi của đường tròn ngày càng phong phú và đa dạng. SVTH:Đoàn Văn Quý Page 8 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình CHƯƠNG 3: KẾT QUẢ ỨNG DỤNG 3.1 PHÂN TÍCH BÀI TỐN: 3.1.1 u cầu và cách giải bài tốn: Theo u cầu của bài tốn thì ta cần tìm được chu vi của đường tròn khi biết tọa độ ba điểm được biết trước tọa độ. Chu vi đường tròn được tìm tính ra khi ta dung hệ thức hê- rơng. 3.1.2 Tổ chức dữ liệu: Chương trình được xậy dựng bắt đầu từ một class, với các hàm thành viên và các hàm xây dựng cho thuật tốn thì việc tìm ra chu vi đường tròn là cơng việc khơng phức tạp. a. Khai báo một class: class Diem{ }; b. Xây dựng các hàm thành viên: float GiaTriX(){ return x; } float GiaTriY(){ return y; } c. Tái định nghĩa tốn tử: friend ostream& operator << (ostream& os, Diem d){ os<<d.x; os<<"\n"; os<<d.y; return os; } friend istream& operator >> (istream& is, Diem&d){ cout <<"Nhap diem x: "; is>>d.x; cout <<"Nhap diem y: "; is>>d.y; return is; } d. Hàm nhập – xuất file: friend int ReadFile(char *nameFile){ int dx; int dy; Diem X; char name; SVTH:Đồn Văn Q Page 9 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình float x; float y; ifstream is(nameFile); is >> x; is >> y; is.close(); if(tam == 1){ A.x = (float)x; A.y = (float)y; } else if(tam ==2){ B.x = x; B.y = y; } else{ C.x = x; C.y = y; } cout << x << " "<<y << "\n"; return 0; } void xuatFile(float d){ FILE *f1; f1=fopen("filexuat.txt","wt"); fprintf(f1,"%.2f ",d); fprintf(f1,"\n"); fclose(f1); } 3.2 THIẾT KẾ GIẢI THUẬT: 3.2.1 Giải thuật: Với bài toán này nếu ta sử phương pháp lập trình cấu trúc sẽ gặp nhiều vấn đề về việc tính các khoảng cách và tọa độ các điểm sẽ rời rạc nhau, với lập trinh hướng đối tượng những phần tử rời rạc sẽ được mô hỉnh hóa thành một đối tượng . Và việc thực hiện phép toán trên đối tượng sẽ thật dễ dàng hơn, nhưng bên cạnh đó vẫn còn các hàm độc lập. Bài toán tìm chu vi đường tròn từ ba điểm cho trước trong mặt phẳng đề-các vuông góc bằng cách dùng hệ thức hê-rông với các số liệu liên quan chúng ta tìm ra diện tích đường tròn, tiếp đến tìm ra bán kính đường tròn ngoại tiếp tam giác cho trước và cuối cùng là tìm ra chu vi đường tròn với độ chính xác là hai số thập phân. Giải thuật để tìm chu vi nhu sau: Lấy số liệu từ file bộ text gồm ba tọa độ(giả sử ba điểm là A,B,C) Tính độ dài các cạnh AB,BC,AC; Tìm nữa chu vi của tam giác; SVTH:Đoàn Văn Quý Page 10 of 19 [...]... Quý Page 11 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình Bên cạnh đó cũng in xuất ra màn hình đồ họa vẽ tam giác và đường tròn: SVTH:Đoàn Văn Quý Page 12 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình Dùng phím chức năng 1 xuất ra hướng dẫn dùng chương trình: Dùng phím chứa năng 2 hiện thông tin giảng vi n và sinh vien: Dùng phím chức năng 3 xem tọa độ tâm của đường tròn: SVTH:Đoàn Văn Quý... vien: Dùng phím chức năng 3 xem tọa độ tâm của đường tròn: SVTH:Đoàn Văn Quý Page 13 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình Dùng phím chức năng 4 xem thông tin về các thông số của đường tròn: Dùng phím chứa năng 0 thoát khỏi chương trình làm vi c: SVTH:Đoàn Văn Quý Page 14 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình Nếu trường hợp ba điểm không tao thành tam giác thì màn hình đồ...Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình P = (AB+BC+AC)/2; Tìm diện tích của tam giác; S = sqrt(P(P – AB)(P-BC)(P-AC)); Tìm bán kính đường tròn; R = (AB+BC+AC)/4S; Tìm chu vi đường tròn; CV = 2πR; 3.3 GIỚI THIỆU CHƯƠNG TRÌNH: 3.3.1 Môi trường cài đặt: Chương trình được cài đặt bằng ngôn ngữ... năng 4 thì thông tin được hiện như sau: SVTH:Đoàn Văn Quý Page 15 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình CHƯƠNG 4: KẾT LUẬN – ĐÁNH GIÁ 4.1 CÁC KẾT QUẢ ĐẠT ĐƯỢC: Đã giải quyết được vấn đề của bài toán theo đúng tiến độ và kế hoạch đã đề ra Những thu hoạch về mặt chuyên môn, kinh nghiệm: Thấy được sự cần thiết của vi c phân tích giải thuật để có thể lựa chọn một giải thuật tốt hoặc đánh... hơn, phần trợ giúp cho người dùng ngay trên chương trình, dùng bàn phím di chuyển của bàn phím chứ không dùng các số để lựa chọn, bên cạnh những lỗi được phát hiện còn những lỗi chưa được tìm ra, nếu có gì sai xót xin hãy gửi ý kiến qua địa chỉ email: dvquy704@student.ctu.edu.vn SVTH:Đoàn Văn Quý Page 17 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình PHỤ LỤC HƯỚNG DẪN SỬ DỤNG DEMO Thật chất để... rang: 1 Chương trình thực hiện yêu cầu của bài toán 2 Chương trình thực hiện vẽ hệ trục tọa độ và hình tròn tương ứng Chương trình sẽ hiện ra cho bạn những dữ liệu nguồn và dữ liệu đích, màn hình điều khiển gần gủi với dân lập trình và người sử dụng SVTH:Đoàn Văn Quý Page 18 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình TÀI LIỆU THAM KHẢO [1] Trương Văn Chí Công Lập trình hướng đối tượng & C++... lạm dụng một kỹ thuật nào và cũng không xem thường một phương pháp nào khi bắt tay vào giải một bài toán Các phương pháp phải được vận dụng hết sức triệt để SVTH:Đoàn Văn Quý Page 16 of 19 Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình 4.2 HƯỚNG PHÁT TRIỂN: Do thời gian có hạn nên chưa thể khắc phục được hạn chế trên Nếu có thời tôi sẽ khắc phục hạn chế đó, thiết kế thêm một số biến thể của bài toán... giới thiệu chương trình thì bạn cũng đã biết cách sử dụng demo Chương trình code gồm hai phần: một phần dùng chạy có tên “nl_1.cpp”, phần hai có tên “vedt.cpp” dùng chạy trong Project2 để vẽ minh họa đường tròn Nhưng để dễ dàng bạn hãy làm theo những bước đơn giản sau: Mở chương trình lên bằng phần mềm Dev C++ 4.9.9.2 hoặc bạn cũng có thể mở bằng Turbo C++ 3.0 đều được Sau đó bạn hãy ấn phím F9 hoặc... giải thuật đó Biết thêm về các chiến lược thiết kế giải thuật, sẽ có ích rất nhiều cho vi c học tập sau này Qua đó ta thấy rằng, không có một phương pháp nào có thể giúp chúng ta xây dựng (thiết kế) nên các giải thuật cho tất cả các loại bài toán mà chúng ta nên dựa vào những chiến lược thiết kế các giải thuật chung nhất đó để áp dụng cho những bài toán khác nhau Ưu điểm: chương trình nhỏ gọn, dễ... hơn giải thuật hiện tại, chương trình con đơn sơ Nguyên nhân: do thời gian hạn chế và kiến thức nên chưa tìm ra một phương pháp tối ưu nhất có thể Tóm lại, qua đề tài này ta thấy được rằng trong thực tế vi c sử dụng kết quả bài toán là thường xuyên trong những ngành kỹ thuật công nghệ và phổ thông Thông thường các bài toán thực tế đòi hỏi phải có sự tổng hợp, pha trộn nhiều thuật toán, nhiều kỹ thuật . đường tròn là bài tốn quan trọng trong bất cứ ngành kỹ thuật nào. Do đó, tìm chu vi đường tròn là cần thiết và thuật tốn tối ưu tìm ra chu vi đường tròn. tới nay vi c tìm chi vi cua đường tròn là thực sự chưa sẽ tối ưu, và cần phải tìm ra thuật tốn tốt nhất cho mọi trường hợp. Vi c tính chu vi đường tròn