Tính chu vi đường tròn GVHD: Nguyễn Thanh Bình
ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN NIÊN LUẬN 1
(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 ĐOÀN VĂN QUÝ 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
Bố cục (Tối đa 0,25 điểm)
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 toá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)
Lý thuyết (Tối đa 0,5 đ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 yêu cầu của bài toá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)
Kết luận (Tối đa 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 quá 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 yê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:Đoàn Văn Quý Page 1 of 18
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 2 of 18
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 4
1.1 GIỚI THIỆU: 4
1.2 MÔ TẢ BÀI TOÁN: 4
1.3 MỤC TIÊU CẦN ĐẠT ĐƯỢC: 4
1.4 HƯỚNG GIẢI QUYẾT: 5
1.5 KẾ HOẠCH THỰC HIỆN: 5
CHƯƠNG 2: PHẦN LÝ THUYẾT 5
2.2 KẾT QUẢ VẬN DỤNG VÀO BÀI TOÁN: 7
CHƯƠNG 3: KẾT QUẢ ỨNG DỤNG 8
3.1 PHÂN TÍCH BÀI TOÁN: 8
3.1.1 Yêu cầu và cách giải bài toán: 8
3.1.2 Tổ chức dữ liệu: 8
3.2 THIẾT KẾ GIẢI THUẬT: 9
3.2.2 Giải thuật: 9
3.3 GIỚI THIỆU CHƯƠNG TRÌNH: 10
3.3.1 Môi trường cài đặt: 10
3.3.2 Cách thức thực thi chương trình: 10
3.3.3 Một vài giao diện của chương trình: 10
CHƯƠNG 4: KẾT LUẬN – ĐÁNH GIÁ 15
4.1 CÁC KẾT QUẢ ĐẠT ĐƯỢC: 15
4.2 HƯỚNG PHÁT TRIỂN: 16
PHỤ LỤC 17
HƯỚNG DẪN SỬ DỤNG DEMO 17
TÀI LIỆU THAM KHẢO 18
SVTH:Đoàn Văn Quý Page 3 of 18
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 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. Một trong những bài toá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 toán tối ưu thuộc về lĩnh vực ứng dụng toá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 toán
nào thực sự hữu hiệu để giải bài toá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 toá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 TOÁN:
Bài toá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 toá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
toán thường được ứng dụng trong công việt tính toán đơn giản trong kiến thức toá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 toá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 toán.
Thiết kế chương trình sao cho có thể:
Nhập vào bài toán:
Thuật toán nhập vào tọa độ của điểm.
Thuật toán tìm các giá trị hay kết quả cần thiết cho công việc tính toá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:Đoàn Văn Quý Page 4 of 18
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 5 of 18
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 6 of 18
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 7 of 18
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 TOÁN:
3.1.1 Yêu cầu và cách giải bài toán:
Theo yêu cầu của bài toá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 toá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 toá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:Đoàn Văn Quý Page 8 of 18
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 9 of 18
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ữ C++.
Môi trường cài đặt DEV C++ 4.9.9.2, Copyright © Bloodshed Software.
Giấy phép: GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright ©1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
3.3.2 Cách thức thực thi chương trình:
Trình biên dịch của Dev C++ 4.9.9.2 sẽ biên dịch mã code chương trình ra file thực thi
.exe.
3.3.3 Một vài giao diện của chương trình:
Giao diện chương trình sau khi trình biên dịch biên dịch xong:
Sau khi nhận các số liệu từ file giao diện như sau: gồm tọa ba điểm và độ dài các đoạn
thẳng.
SVTH:Đoàn Văn Quý Page 10 of 18
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 11 of 18
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ý Page 12 of 18
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 13 of 18
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 đồ họa xuất hiện như sau:
Khi dùng phím chức năng 4 thì thông tin được hiện như sau:
SVTH:Đoàn Văn Quý Page 14 of 18
Không có nhận xét nào:
Đăng nhận xét