+ Tìm miền xác định.
+ Tính đạo hàm cấp 1.
+ Tìm giới hạn tiệm cận đứng.
+ Tìm giới hạn tiệm cận ngang.
+ Tìm giới hạn tiệm cận xiên.
+ Xuất kết quảkhảo sát.
+ Vẽbảng biến thiên.
+ Vẽ đồthị.
214 trang |
Chia sẻ: lylyngoc | Lượt xem: 2286 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Phần mềm hỗ trợ ôn thi tốt nghiệp trung học phổ thông môn toán, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
po PDF Merge and Split Unregistered Version -
Chương 3. Thiết kế
- 126 -
3.5. Sơ đồ phối hợp hoạt động
3.5.1. Lưu trữ bài lý thuyết
3.5.2. Lưu trữ câu trắc nghiệm
Simpo PDF Merge and Split Unregistered Version -
Chương 3. Thiết kế
- 127 -
3.5.3. Phát sinh đề trắc nghiệm
3.5.4. Thi trắc nghiệm
Simpo PDF Merge and Split Unregistered Version -
Chương 3. Thiết kế
- 128 -
3.5.5. Chấm điểm bài trắc nghiệm
:MH_ThiTracNghiem
btnKetThuc_Click
DethiTN:DeThiTracNghiem
ChamDiem(String[,])
:MH_ThiTracNghiem
CapNhatGrid()
uctThoiGian:TH_THOIGIAN
KetThuc()
(1) (2)
(3)
Simpo PDF Merge and Split Unregistered Version -
Chương 4. Một số kỹ thuật đặc trưng của đề tài
- 129 -
Chương 4 Một số kỹ thuật đặc trưng của đề tài
ªChương này mô tả một kỹ thuật đặc trưng được sử dụng trong đề tài,
gồm :
XML
XSLT
MathML
MathMLControl
Thư viện hỗ trợ nhận dạng đề tự luận
Simpo PDF Merge and Split Unregistered Version -
Chương 4. Một số kỹ thuật đặc trưng của đề tài
- 130 -
4.1. XML
XML là chuẩn mở cho phép tạo lập họ các ngôn nhữ XML mà các ngôn ngữ này được
sử dụng để:
Mô tả thông tin về các đối tượng phức tạp.
Trao đổi thông tin qua các hệ thống khác nhau một cách dễ dàng.
Đặc tính của ngôn ngữ XML:
Là ngôn ngữ hình thức.
Dễ học, dễ sử dụng.
Khả Năng biểu diễn tốt.
Tính phổ dụng cao.
XML mô tả thông tin của đối tượng.
Văn bản XML bao gồm các thẻ với cú pháp đơn giản:
Thẻ mở , thẻ đóng .
Thẻ gốc.
Sự lồng nhau của các thẻ.
4.2. XSLT
XSLT, viết tắt của eXtensible StyleSheet Language Transformation, là ngôn
ngữ đặc tả cho phép biến đổi hệ thống đối tượng (được biểu diễn qua XML) thành một
hệ thống đối tượng (được biểu diễn qua ngôn ngữ bất kỳ).
Nội dung của XSLT được trình bày chi tiết ở Phụ lục B1.
4.3. MATHML
MathML là một dạng ngôn ngữ thuộc họ XML nhưng dùng riêng cho toán học đề lưu
trữ thông tin về các đối tương toán học.
Một số thẻ đặc trưng của MathML có sử dụng trong chương trình:
1 Trang 151
Simpo PDF Merge and Split Unregistered Version -
Chương 4. Một số kỹ thuật đặc trưng của đề tài
- 131 -
¾ Thẻ lưu hằng số
¾ Thẻ lưu ký tự
¾ Thẻ lưu số mũ
¾ Thẻ lưu căn số hay
¾ Thẻ lưu số chia
¾ Thẻ lưu phép cộng +
¾ Thẻ lưu phép trừ −
¾ ...
Chi tiết hơn về việc sử dụng các thẻ XML để nhận diện các đề toán như thế nào,
chúng ta có thể xem trong Phụ lục D.2
4.4. MATHML Control
MathML Control là công cụ cho phép ta nhập một cách trực quan các biểu thức
toán học (tương tự như chương trình Equation và MathType) và trả về chuỗi dưới
dạng MathML.
MathML Control là một trình soạn thảo các biểu thức toán học được thiết kế
dưới dạng một control dành cho lập trình .Net. Có thể nói đây là công cụ dành cho mọi
loại người dùng từ sinh viên, giáo viên tới những người làm chuyên môn khoa học.
MathML Control cho phép tao nhật biểu thức toán học một cách trực quan và
rất dễ dàng. Mọi biểu thức toán có thể được lưu dưới dạng ảnh Jpeg hoặc được xuất
sang các dạng bitmap khác (Giff, Bmp, Tiff, ...) hoặc dưới dạng MathML theo chuẩn
của W3C.
Chi tiết về MathML Control được trình bày ở phụ lục A3.
2 Trang 181
3 Trang 144
Simpo PDF Merge and Split Unregistered Version -
Chương 4. Một số kỹ thuật đặc trưng của đề tài
- 132 -
4.5. Thư viện hỗ trợ nhận dạng đề tự luận
Để việc nhận diện đề tự luận tự nhiên và linh động hơn với người dùng, chương
trình hỗ trợ một bộ hỗ trợ nhận diện gọi là thư viện nhận dạng đề. Thư viện cho phép
người dùng nhập vào các thông tin đặc trưng của loại đề toán, hay thông tin đặc trưng
của một đối tượng cần xử lý nào đó để chương trình có thể dựa vào đó nhận lấy những
thông tin cần thiết để giải quyết bài toán.
Bộ thư viện gồm 4 thư viện chính:
Thư viện nhận dạng đề của dạng toán không gian toạ độ.
Thư viện nhận dạng một đối tượng trong dạng toán không gian toạ độ.
Thư viện nhận dạng đề của dạng toán mặt phẳng toạ độ.
Thư viện nhận dạng một đối tượng trong dạng toán mặt phẳng toạ độ.
Với mỗi dạng toán, ta sẽ có một đoạn text đặc trưng được tìm thấy trong đề bài mà
không một dạng toán nào khác có được, những đoạn đặc trưng đó là những nội dung
được lưu trong các thư viện nhận dạng đề.
ví dụ: với dạng toán tính thể tích mặt cầu, thì ngoài những thông tin về mặt cầu,
trong đề nhất thiết phải có một đoạn text đặc trưng để nhận ra dạng toán đó. Chẳng hạn
mặc định ta quy định là “tính thể tích mặt cầu”. Và thư viện cho phép người dùng bổ
sung, thay đổi dạng text đặc trưng để nhận diện tốt hơn.
Với mỗi đối tượng, ta sẽ có một đặc trưng nào đó để có thể nhận diện ra sự tồn tại của
đối tượng trong đề bài khác với các đối tượng khác, những đặc trưng đó là những nội
dung được lưu trong các thư viện nhận dạng đối tượng.
ví dụ: để nhận diện 1 vector, thì ngoài những thông tin khác trong đề nhất thiết
phải có một đoạn text đặc trưng để nhận ra đối tượng vector. Chẳng hạn mặc định ta
quy định là “vector”. Và thư viện cho phép người dùng bổ sung, thay đổi dạng text đặc
trưng để nhận diện tốt hơn.
Simpo PDF Merge and Split Unregistered Version -
Chương 5. Thực hiện và kiểm tra
- 133 -
Chương 5 Thực hiện và kiểm tra
ªChương này mô tả công việc thực hiện và kiểm tra chương trình,
gồm:
Thực hiện phần mềm
Kiểm tra phần mềm
Simpo PDF Merge and Split Unregistered Version -
Chương 5. Thực hiện và kiểm tra
- 134 -
5.1. Thực hiện phần mềm
Mô tả môi trường thực hiện phần mềm cùng với các kỹ thuật, thư viện đối tượng
được sử dụng :
Chương trình sử dụng ngôn ngữ lập trình C#, thích hợp chạy trên nền Windows
2000/XP.
Các thư viện được sử dụng :
Bộ thư viện chuẩn của .NET.
Các thư viện có sẵn : Word.dll, VBIDE.dll, Office.dll, Interop.Word.dll,
Interop.VBIDE.dll, Interop.Outlook.dll, Interop.Microsoft.Office.Core.dll.
Các thư viện tự xây dựng : OnThiTNToan.dll.
Mô tả cách tổ chức thư mục, tập tin, dữ liệu của phần mềm :
Ứng dụng bao gồm 3 project : OnThiTNToan, PhanHeHocSinh,
PhanHeGiaoVien.
5.2. Kiểm tra phần mềm
• Kiểm tra phát sinh đề:
o Phát sinh đề cho dạng toán tính diện tích mặt cầu:
Cho mặt cầu có tâm là (0,8,-2) và có bán kính là 0 Tính diện tích của mặt cầu.
o Phát sinh đề cho dạng toán xét vị trí tương đối giữa 2 mặt phẳng:
Cho mặt phẳng có phương trình là 14x + 20y + -22z + -140 = 0 và mặt phẳng có
phương trình là -23x + 19y + -48z + 227 = 0 .
Xét vị trí tương đối của 2 mặt phẳng.
o Phát sinh đề cho dạng toán tìm giao điểm giữa 2 đường thẳng trong mặt
phẳng:
Simpo PDF Merge and Split Unregistered Version -
Chương 5. Thực hiện và kiểm tra
- 135 -
Cho đường thẳng D1 :4x +1y +-20 = 0 và đường thẳng D2 : 2x +4y +-18 = 0 Tìm giao
điểm của 2 đường thẳng.
• Kiểm tra giải đề tự luận:
o Bài toán 1: Cho đường thẳng D1 :1x +1y -6 = 0 và đường thẳng D2 : 2x
+1y -7 = 0 Tìm giao điểm của 2 đường thẳng.
Bài giải: Giao điểm của 2 đường thẳng là điểm (1,5)
o Bài toán 2: Cho đường tròn có tâm là (-3,-9) và có bán kính là 6 và
đường tròn có tâm là (5,-5) và có bán kính là 5. Xét vị trí tương đối của 2
đường tròn.
Bài giải: Vị trí tương đối của 2 đường tròn là : 2 đường tròn cắt nhau tại 2 điểm phân
biệt.
o Bài toán 3: Cho mặt phẳng -22x + -16y + 14z + -220 = 0 và mặt phẳng
24x + -36y + 56z + 240 = 0 . Xét vị trí tương đối của 2 mặt phẳng.
Bài giải: 2 mặp phẳng chéo với nhau.
o Bài toán 4: Cho mặt cầu có tâm là (-2,6,-7) và có bán kính là 6 Tính thể
tích của mặt cầu.
Bài giải: Thể tích của mặt cầu là :904.77868423386
o Bài toán 5: Cho tứ diện có toạ độ 4 điểm lần lượt là điểm (-2,0,9) và
điểm (-10,-4,6) và điểm (1,-8,3) và điểm (8,-4,9) Tính thể tích của tứ
diện.
Bài giải: Thể tích của tứ diện là :498.727380439454
Simpo PDF Merge and Split Unregistered Version -
Chương 5. Thực hiện và kiểm tra
- 136 -
• Kiểm tra nhận diện đề:
o Bài toán 1: Cho đường thẳng D1 :1x +1y -6 = 0 và đường thẳng D2 : 2x
+1y -7 = 0 Tìm giao điểm của 2 đường thẳng.
Bước giải Dấu hiệu nhận diện đề Kết quả nhận diện được
1 Tìm giao điểm của 2
đường thẳng
Dạng toán tìm giao điểm của 2 đường thẳng.
2 Cho đường thẳng D1
:1x +1y -6 = 0
Nhận diện được đường thẳng D1 có phương
trình là 1x+1y-6 = 0.
3 đường thẳng D2 : 2x
+1y -7 = 0
Nhận diện được đường thẳng D2 có phương
trình là 2x+y-6 = 0.
4 Đã có đủ 2 đường thẳng, ta gọi đến hàm tìm
giao điểm và được kết quả là (1,5).
5 Xuất kết quả thu được ra màn hình.
.
o Bài toán 2: Cho đường tròn có tâm là (-3,-9) và có bán kính là 6 và
đường tròn có tâm là (5,-5) và có bán kính là 5. Xét vị trí tương đối của 2
đường tròn.
Bước giải Dấu hiệu nhận diện đề Kết quả nhận diện được
1 Xét vị trí tương đối của 2
đường tròn.
Dạng toán xét vị trí tương đối của 2 đường
tròn.
2 Cho đường tròn Nhận diện được ta đang xét 1 đường tròn.
3 có tâm là (-3,-9) Nhận diện được tâm của đường tròn đầu tiên
là (-3,-9)
4 có bán kính là 6 Nhận diện được bán kính của đường tròn đầu
tiên là 6.
5 và đường tròn Nhận diện ta đang xét đường tròn thứ 2.
Simpo PDF Merge and Split Unregistered Version -
Chương 5. Thực hiện và kiểm tra
- 137 -
6 có tâm là (5,-5) Nhận diện được tâm của đường tròn thứ 2 là
(5,-5)
7 có bán kính là 5 Nhận diện được bán kính của đường tròn thứ
2 là 5.
8 Đã nhận đủ thông tin, gọi hàm xét vị trí tương
đối giữa 2 đường tròn.
9 Kết quả là 2 đường tròn cắt nhau tại 2 điểm
phân biệt.
o Bài toán 3: Cho mặt phẳng -22x + -16y + 14z + -220 = 0 và mặt phẳng
24x + -36y + 56z + 240 = 0 . Xét vị trí tương đối của 2 mặt phẳng.
Bước giải Dấu hiệu nhận diện đề Kết quả nhận diện được
1 Xét vị trí tương đối của 2
mặt phẳng
Dạng toán: Xét vị trí tương đối của 2 mặt
phẳng
2 Cho mặt phẳng Nhận diện được ta đang xét mặt phẳng đầu
tiên.
3 -22x + -16y + 14z + -220
= 0
Nhận diện được thông tin của mặt phẳng đầu
tiên.
4 và mặt phẳng Nhận diện được ta đang xét mặt phẳng thứ 2.
5 24x + -36y + 56z + 240
= 0
Nhận diện được thông tin của mặt phẳng thứ
2.
6 Đã nhận đủ thông tin, gọi hàm xét vị trí tương
đối giữa 2 mặt phẳng.
7 Kết quả nhận được: 2 mặt phẳng chéo với
nhau.
Simpo PDF Merge and Split Unregistered Version -
Chương 5. Thực hiện và kiểm tra
- 138 -
o Bài toán 4: Cho mặt cầu có tâm là (-2,6,-7) và có bán kính là 6 Tính thể
tích của mặt cầu.
Bước giải Dấu hiệu nhận diện đề Kết quả nhận diện được
1 Tính thể tích của mặt
cầu.
Xác định được dạng toán là tính thể tích mặt
cầu.
2 Cho mặt cầu Xác định đang xét mặt cầu
3 có tâm là (-2,6,-7) Xác định được tâm của mặt cầu.
4 Có bán kính là 6. Xác định được bán kính mặt cầu
5 Đã đầy đủ thông tin, gọi đến hàm tính thể tích
mặt cầu.
6 Kết quả thu được: thể tích của mặt cầu là
:904.77868423386
o Bài toán 5: Cho tứ diện có toạ độ 4 điểm lần lượt là điểm (-2,0,9) và
điểm (-10,-4,6) và điểm (1,-8,3) và điểm (8,-4,9) Tính thể tích của tứ
diện.
Bước giải Dấu hiệu nhận diện đề Kết quả nhận diện được
1 Tính thể tích của tứ diện. Xác định được dạng toán là tính thể tích tứ
diện.
2 Cho tứ diện Xác định đang xét tứ diện
3 điểm (-2,0,9) Xác định được điểm đầu tiên của tứ diện.
4 điểm (-10,-4,6) Xác định được điểm thứ 2 của tứ diện.
5 điểm (1,-8,3) Xác định được điểm thứ 3 của tứ diện.
6 điểm (8,-4,9) Xác định được điểm thứ 4 của tứ diện.
7 Đã đủ thông tin, gọi đến hàm tính thể tích của
tứ diện.
8 Kết quả: Thể tích của tứ diện là :498.7273804
Simpo PDF Merge and Split Unregistered Version -
Chương 6. Tổng kết
- 139 -
Chương 6 Tổng kết
ªChương này tổng kết lại quá trình thực hiện đề tài, gồm:
Các kết quả đạt được
Tự đánh giá
Hướng phát triển
Simpo PDF Merge and Split Unregistered Version -
Chương 6. Tổng kết
- 140 -
6.1. Các kết quả đạt được
6.1.1. Các yêu cầu chức năng :
STT Chức năng Tình trạng Ghi chú
1 − Cung cấp lý thuyết cho học sinh:
o Cung cấp lý thuyết trong sách giáo
khoa.
o Cung cấp phương pháp giải quyết
các dạng bài toán.
o Cho phép học sinh sắp xếp các tài
liệu theo ý muốn.
Hoàn thành
Hoàn thành
Hoàn thành
2 − Cung cấp ngân hàng dữ liệu bài tập
mẫu đủ lớn cho học sinh:
o Cung cấp nhiều bài mẫu và đáp án
để học sinh tham khảo.
o Cho phép học sinh biên soạn và bổ
sung bài mẫu vào ngân hàng dữ liệu.
Hoàn thành
Hoàn thành
3 − Làm bài trắc nghiệm:
o Cho phép biên soạn câu hỏi trắc
nghiệm và đề thi trắc nghiệm.
o Cho phép phát sinh câu hỏi trắc
nghiệm.
o Cho phép phát sinh đề thi trắc
nghiệm từ ngân hàng dữ liệu có sẵn.
o Hỗ trợ nhiều dạng trắc nghiệm khác
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
Simpo PDF Merge and Split Unregistered Version -
Chương 6. Tổng kết
- 141 -
nhau.
o Cho phép học sinh làm bài trắc
nghiệm.
o Hỗ trợ chấmbài làm cho học sinh.
Hoàn thành
Hoàn thành
4 − Làm bài tự luận:
o Hỗ trợ phát sinh bài tự luận cho
học sinh các dạng toán sau:
Khảo sát và vẽ đồ thị hàm số.
Mặt phẳng tọa độ.
Không gian tọa độ.
Đạo hàm.
o Cho phép học sinh lưu trữ bài làm
và chuyển cho giáo viên đánh giá.
o Nhận diện đề bài của học sinh
dưới dạng tự nhiên.
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
5 − Cung cấp phương tiện giao tiếp giữa
giáo viên và học sinh:
o Trao đổi thông tin qua Web.
Hỗ trợ 1 trang thông tin.
Hỗ trợ download, upload tài liệu.
Hỗ trợ 1 forum để giáo viên và học
sinh trao đổi thông tin trực tuyến.
o Trao đổi thông tin qua đĩa mềm.
o Trao đổi thông tin qua email.
o Trao đổi thông tin qua giấy.
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
Simpo PDF Merge and Split Unregistered Version -
Chương 6. Tổng kết
- 142 -
6.1.2. Các yêu phi chức năng:
Tính tái sử dụng:
Chương trình được thiết kế bao gồm các thư viện liên kết (DLL), nên tuy có 2
phân hệ chương trình khác nhau nhưng hầu hết các xử lý, các control đều được thiết kế
chung trên 1 thư viện, chỉ những xử lý hoặc control riêng cho từng phân hệ (Giáo Viên,
Học Sinh) mới được thiết kế riêng. Đặc biệt chương trình còn tạo ra 1 bộ thư viện thể
hiện giao diện của riêng mình, có thể dễ dàng mang sử dụng sang cho các chương trình
khác.
Tính dễ bảo trì:
Chương trình được thiết kế theo mô hình 3 lớp : giao diện, xử lý, dữ liệu Æ bất cứ 1
thay đổi, chỉnh sửa có thể dễ dàng phát hiện và thay đổi.
6.2. Tự đánh giá
6.2.1. Ưu điểm:
− Thể hiện tốt các ký hiệu toán học.
− Nhận diện đề thi tự nhiên, hỗ trợ phát sinh bài giải cho gần 50 dạng toán.
− Lý thuyết cung cấp đầy đủ, chi tiết.
− Ngân hàng dữ liệu bài tập mẫu lớn.
− Phần trắc nghiệm hỗ trợ nhiều dạng câu hỏi, có phát sinh câu hỏi và đề thi.
− Lưu trữ và xử lý dữ liệu bằng XML và XSLT nên kích thước dữ liệu nhỏ.
− Phát triển hệ thống trao đổi thông tin trên môi trường Web, để học sinh và
giáo viên có thể trao đổi trực tuyến.
6.2.2. Hạn chế:
− Chương trình có kích thước khá lớn.
− Chương trình chưa hỗ trợ giải và phát sinh hết các dạng toán.
− Chưa nhận diện được những đề toán quá phức tạp.
− Chưa hỗ trợ chấm bài tự luận được cho học sinh.
Simpo PDF Merge and Split Unregistered Version -
Chương 6. Tổng kết
- 143 -
6.3. Hướng phát triển
− Nhận diện được những đề toán phức tạp.
− Hỗ trợ giải và phát sinh hết các dạng toán.
− Hỗ trợ chấm bài tự luận cho học sinh.
Simpo PDF Merge and Split Unregistered Version -
- 144 -
PHỤ LỤC
A. Giới thiệu MathMLControl:
MathML Control là công cụ cho phép ta nhập một cách trực quan các biểu thức
toán học (tương tự như chương trình Equation và MathType) và trả về chuỗi dưới
dạng MathML.
MathML Control là một trình soạn thảo các biểu thức toán học được thiết kế
dưới dạng một control dành cho lập trình .Net. Có thể nói đây là công cụ dành cho mọi
loại người dùng từ sinh viên, giáo viên tới những người làm chuyên môn khoa học.
MathML Control cho phép tao nhật biểu thức toán học một cách trực quan và
rất dễ dàng. Mọi biểu thức toán có thể được lưu dưới dạng ảnh Jpeg hoặc được xuất
sang các dạng bitmap khác (Giff, Bmp, Tiff, ...) hoặc dưới dạng MathML theo chuẩn
của W3C.
Simpo PDF Merge and Split Unregistered Version -
- 145 -
Một số hàm thông dụng trong MathML Control
Hàm MC_Load : dùng để load một tài liệu MathML từ tập tin
public bool MC_load(string fileName);
fileName là đường dẫn của tập tin cần load.
Hàm MC_loadFromJPEG : mở một tập tin JPEG được tạo ra từ hàm
MC_saveASJPEG().
public bool MC_loadFromJPEG(
string fileName
);
fileName là đường dẫn tập tin cần load.
Hàm MC_loadXML : load biểu thức MathML từ chuỗi XML.
public bool MC_loadXML( string sXML);
sXML : biểu thức MathML cần load.
Ví dụ :
string sMathML="";
sMathML+="";
sMathML+="";
sMathML+="X";
sMathML+="";
sMathML+="",false);
MathMLControl.MC_loadXML(sMathML);
Hàm MC_save : lưu tài liệu MathML xuống tập tin
public bool MC_save(
string fileName
);
fileName : đường dẫn tập tin cần lưu.
Simpo PDF Merge and Split Unregistered Version -
- 146 -
Hàm MC_saveAsJPEG : lưu biểu thức toán học thành một tập tin ảnh JPEG.
Dạng 1 :
public bool MC_saveAsJPEG(
string fileName,
float fontSize,
enum_ImageResolution imageResolution
);
fileName : đường dẫn tập tin JPEG.
fontSize : Kích thước của chữ (theo đơn vị point).
imageResolution : độ phân giải của ảnh (96dpi, 300 dpi, 600 dpi, ...)
Ví dụ :
float fontSize =18F;
MathMLControl.enum_ImageResolution imgResolution
=MathMLControl.enum_ImageResolution._300dpi;
string fileName ='C:\\test.jpg';
MathMLControl.MC_saveAsJPEG(fileName,fontSize,imgResolution);
Dạng 2
public bool MC_saveAsJPEG(
string fileName,
float fontSize,
enum_ImageResolution imageResolution,
ref int imageBaseline
);
fileName : đường dẫn tập tin JPEG.
fontSize : Kích thước của chữ (theo đơn vị point).
imageResolution : độ phân giải của ảnh (96dpi, 300 dpi, 600 dpi, ...)
imageBaseline : vị trí “đường gốc” của biểu thức trong ảnh.
Simpo PDF Merge and Split Unregistered Version -
- 147 -
Ví dụ :
float fontSize =18F;
int imgBaseline =0;
MathMLControl.enum_ImageResolution imgResolution
=MathMLControl.enum_ImageResolution._300dpi;
string fileName ='C:\\test.jpg';
MathMLControl.MC_saveAsJPEG(fileName,fontSize,imgResolution,ref
imgBaseline);
Dạng 3
public bool MC_saveAsJPEG(
string fileName,
float fontSize,
int imageResolution
);
fileName : đường dẫn tập tin JPEG.
fontSize : Kích thước của chữ (theo đơn vị point).
imageResolution : độ phân giải của ảnh theo kiểu integer.
Ví dụ :
float fontSize =18F;
int imgResolution =300;
string fileName ='C:\\test.jpg';
MathMLControl.MC_saveAsJPEG(fileName,fontSize,imgResolution);
Simpo PDF Merge and Split Unregistered Version -
- 148 -
Dạng 4:
public bool MC_saveAsJPEG(
string fileName,
float fontSize,
int imageResolution,
ref int imageBaseline
);
fileName : đường dẫn tập tin JPEG.
fontSize : Kích thước của chữ (theo đơn vị point).
imageResolution : độ phân giải của ảnh theo kiểu integer.
imageBaseline : vị trí “đường gốc” của biểu thức trong ảnh.
Ví dụ :
float fontSize =18F;
int imgBaseline =0;
int imgResolution =300;
string fileName ='C:\\test.jpg';
MathMLControl.MC_saveAsJPEG(fileName,fontSize,imgResolution,ref
imgBaseline);
Simpo PDF Merge and Split Unregistered Version -
- 149 -
Hàm RE_CreateBitmap : chuyển một chuỗi MathML sang dạng
System.Drawing.Bitmap. Sau đó bitmap có thể được lưu dưới dạng JPEG, GIF hay các
dạng ảnh khác.
public Bitmap RE_CreateBitmap(
string MathML,
float FontSize,
bool Bold,
bool Italic,
Color ForeColor,
Color BackColor,
int ImgResolution,
ref int ImgBaseline
);
MathML : chuỗi MathML.
FontSize : cỡ chữ trong ảnh.
Bold : in đậm.
Italic : in nghiêng.
ForeColor : màu của chữ.
BackColor : màu nền.
ImgResolution : độ phân giải của ảnh.
ImgBaseLine : vị trí “đường gốc” của biểu thức trong ảnh theo đơn vị pixel.
Simpo PDF Merge and Split Unregistered Version -
- 150 -
Chú ý :
Hàm này sẽ đưa ra System.Exception trong trường hợp bị lỗi.
Có thể sử dụng hàm này trong trường hợp không có MathML Control trên màn
hình.
Hàm này hoạt động độc lập với nội dung MathML của MathML Control.
Ví dụ :
int ImgBaseLine=0;
string sMathML="";
[...]
System.Drawing.Bitmap bitmap;
bitmap=this.m_MathMLControl.RE_CreateBitmap(sMathML,
18F,
false,
false,
System.Drawing.Color.Black,
System.Drawing.Color.White,
96,
ref ImgBaseline);
[...]
Simpo PDF Merge and Split Unregistered Version -
- 151 -
B. Ngôn ngữ XSLT:
Khái niệm :
XSLT, viết tắt của eXtensible StyleSheet Language Transformation, là
ngôn ngữ đặc tả cho phép biến đổi hệ thống đối tượng (được biểu diễn qua XML)
thánh một hệ thống đối tượng (được biểu diễn qua ngôn ngữ bất kỳ).
Ví dụ :
Ta có tài liệu planets.xml lưu giữ thông tin về các hành tinh trong hệ mặt trời.
Nội dung tài liệu planets.xml thể hiện như sau :
Mecury
.0553
58.65
1516
.983
Simpo PDF Merge and Split Unregistered Version -
- 152 -
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
Ta thấy tài liệu planets.xml ngoài khai báo thông thường là
Còn khai báo thêm
Với khai báo trên trình xử lý và phân tích sẽ biết nội dung dữ liệu trong planets.xml
cần được kết hợp với tài liệu planets.xsl để thực hiện chuyển dữ liệu từ XML thành tài
liệu hiển thị và đọc được bởi người dùng.
Nội dung tài liệu planets.xsl như sau :
Simpo PDF Merge and Split Unregistered Version -
- 153 -
Sau quá trình diễn dịch tài liệu kết xuất cuối cùng có dạng :
Mercury
Vernus
Earth
Cấu trúc tài liệu XSLT
Tài liệu XSLT yêu cầu tiếp nhận dữ liệu XML theo cấu trúc hình cây, thực hiện
biến đổi và cho ra một tài liệu định dạng cũng theo cấu trúc hình cây khác. Ở góc độ tài
liệu XSLT, dữ liệu đầu vào là một tập hợp các nút (node). Có 7 loại nút mà bộ xử lý
XSLT có thể nhận dạng và chuyển dịch:
STT Nút (node) Mô tả
1 Document Root (gốc tài liệu) Nơi khởi đầu của tài liệu cần diễn dịch.
2 Attribute (thuộc tính) Nắm giữ thuộc tính của phần tử thẻ. Giá trị
thuộc tính đã loại bỏ dấu bao chuỗi.
3 Element (phần tử) Bao gồm thẻ tên của phần tử (thẻ đóng, thẻ
Simpo PDF Merge and Split Unregistered Version -
- 154 -
mở) và tập các phần tử con giữa thẻ đóng và
thẻ mở (nếu có).
4 Comment (chú thích) Nằm giữ dữ liệu của chuỗi văn bản chú
thích (dã loại bỏ ký hiệu
5 Namespace (không gian tên) Nắm giữ chuỗi định dạng URI của không
gian tên.
6 Processing Instruction (chỉ thị
xử lý)
Nắm giữ nội dung chuỗi chỉ thị xử lý đã
loại bỏ hai ký tự định dạng là .
7 Text (văn bản) Dữ liệu thuần text nằm giữa hai thẻ đóng và
thẻ mở.
Trước hết tài liệu XSLT phải được đặt trong cặp thẻ . Chúng ta sử
dụng bí danh cho không gian tên là xsl (đây cũng là quy ước chuẩn của W3C) cho biết
các thẻ sử dụng trong tài liệu phân biệt với không gian tên thông thường khác (chẳng
hạn như HTML).
.
.
.
Khi bộ chuyển dịch XSLT được gọi nó sẽ thực hiện hai thao tác, đọc các chỉ thị
so khớp trong tài liệu XSLT và truy tìm dữ liệu trong tài liệu XML đặt vào tương ứng.
Quá trình truy tìm dữ liệu trong tài liệu XML (cụ thể ở đây là planets.xml) sẽ được
duyệt bắt đầu từ phần tử gốc. Chẳng hạn nếu muốn khi gặp phần tử gốc của tài liệu
XML thì trình diễn dịch XSLT phải kết xuất chuỗi mang nội dung “This is XML Root”
để thực hiện điều này trong tài liệu XSLT, ta phải so khớp như sau :
Simpo PDF Merge and Split Unregistered Version -
- 155 -
This is XML Root
Tài liệu kết xuất cuối cùng là :
This is XML Root
Chỉ định mẫu so khớp với thuộc tích match
Thuộc tính so khớp dùng để yêu cầu một thẻ lệnh thực hiện theo một điều kiện
dữ liệu thỏa mãn nào đó. Ta có thể dùng thuộc tính so khớp trong các phần tử điều
khiển XSL như , , ,
hay . Các trường hợp sử dụng của thuộc tính match.
So khớp phần tử gốc của dữ liệu XML (matching root)
Phần tử gốc của tài liệu XML được so khớp bằng ký tự “/” khi ta nhận được ký
tự “/” cũng có nghĩa là trình duyệt bắt đầu phân tích gốc của cây tài liệu đầu vào. Ví
dụ:
So khớp các phần tử (matching element)
So khớp một phần tử đơn giản bằng cách chỉ định tên của phần tử.
Simpo PDF Merge and Split Unregistered Version -
- 156 -
Ví dụ :
So khớp các phần tử con
Ký tự “/” không chỉ dùng so khớp phần tử gốc mà còn được dùng làm dấu phân
cách biểu diễn đường dẫn từ nút cha đến nút con sang dữ liệu XML. Ví dụ để so khớp
phần tử NAME là con của phần tử PLANET ta có thể viết như sau trong XSLT.
Ký tự “.” trong thuộc tính select yêu cầu thẻ chọn dữ liệu của
nút hiện hành trong cây tài liệu đang được xử lý.
Ta có thể dùng ký tự “*” trong thuộc tính select để yêu cầu thẻ
chọn tất cả các phần tử. Ví dụ :
Sẽ lấy tất cả phần tử bên dưới PLANET có phần tử con tên là NAME.
So khớp các phần tử cấp dưới (descendant)
Simpo PDF Merge and Split Unregistered Version -
- 157 -
Để so khớp và chọn ra tất cả các phần tử cấp dưới của PLANET mà không phân
biệt mức độ lồng nhau của các phần tử ta dùng PLANET//NAME. PLANET//NAME
tương đương với PLANET/NAME, PLANET/*/NAME, PLANET/*/*/NAME... Ví dụ:
So khớp bằng biểu thức ngoặc vuông []
Ta có thể dùng biểu thức ngoặc vuông để kiểm tra xem một điều kiện nào đó là
true hay false.
Ví dụ như kiểm tra :
Giá trị thuộc tính trong một chuỗi.
Giá trị của một phần tử.
Kiểm tra xem một phần tử có chứa thuộc tính hay phần tử con khác
không.
Ví trí của một nút dữ liệu.
Ví dụ :
Để so khớp và chọn ra phần tử PLANET có chứa phần tử con NAME ta dùng :
Để so khớp và chọn ra mọi phần tử có chứa thuộc tính con NAME
Để so khớp và chọn ra phần tử PLANET có chứa phần tử con là NAME hay
MASS
Để so khớp và chọn ra phần tử PLANET có chứa thuộc tính UNITS mang giá trị
“days” :
Simpo PDF Merge and Split Unregistered Version -
- 158 -
<xsl:template match=”PLANET[@UNITS=’days’]”
Chỉ định mẫu và chọn dữ liệu bằng thuộc tính select
Phần tử được dùng để lấy ra nội dung của một mục dữ liệu trong
tài liệu XML. Bạn có thể sử dụng thuốc tính select của để chọn chính
xác một mục dữ liệu. Thuộc tính select yêu cầu một đường dẫn XPath đến phần tử hay
thuộc tính được chọn.
Ví dụ :
The Planets
Kết quả xuất :
Simpo PDF Merge and Split Unregistered Version -
- 159 -
The Planets
Mercury
Venus
Earth
Thay đổi cấu trúc tài liệu đầu vào:
Tạo một phần tử mới
Sử dụng phần tử để tạo mới một phần tử khác cho dữ liệu
đầu vào.
Ví dụ : giả sử ta có tài liệu xml sau:
.0553
58.65
1516
.983
43.4
.815
116.75
3716
.943
66.8
Simpo PDF Merge and Split Unregistered Version -
- 160 -
1
1
2107
1
128.4
Tài liệu XSLT:
Planets
“{@NAME}” có nghĩa là lấy giá trị của thuộc tính NAME trong phần tử
PLANET.
Simpo PDF Merge and Split Unregistered Version -
- 161 -
Kết quả là :
Planets
.0553
.815
1
Tạo thuộc tính mới
Phần tử dùng tạo mới một thuộc tính cho phần tử nào đó.
Ví dụ :
Mecury
.0553
58.65
1516
.983
Simpo PDF Merge and Split Unregistered Version -
- 162 -
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
Ta muốn tạo một thuộc tính mang tên của các hình tinh trong tài liệu đích đồng
thời giá trị thuộc tính mới sẽ được gán chính là giá trị rút trích từ thuộc tính COLOR
của phần tử PLANET. Tài liệu XSLT như sau :
Planets
Simpo PDF Merge and Split Unregistered Version -
- 163 -
“{NAME}” có nghĩa là lấy giá trị của phần tử NAME là con của phần tử
PLANET.
Kết quả xuất là :
Planets
Sao chép các nút dữ liệu
Simpo PDF Merge and Split Unregistered Version -
- 164 -
Phần tử xsl:copy cho phép sao chép dữ liệu của một nút trong tài liệu đầu vào sử
dụng cho mục đích chuyên dụng nào đó.
Ví dụ : thay vì kết xuất ra tài liệu HTML, ta tạo lại một tài liệu XML mới ở đầu ra
bằng cách copy toàn bộ tất cả các nút của tài liệu XML đầu vào.
Kết quả xuất :
Mecury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
Simpo PDF Merge and Split Unregistered Version -
- 165 -
66.8
Earth
1
1
2107
1
128.4
Sử dụng xsl:if
Sử dụng phần tử để phát biểu một điều kiện lựa chọn. Để sử dụng phần
tử này ta đặt thuộc tính test của nó biểu thức cần kiểm tra trị true, false.
Ví dụ : ta muốn khi gặp phần tử cuối cùng trong dữ liệu đầu vào cần so khớp thì in ra
thẻ (phần tử định dạng tạo một đường gạch ngang trong HTML):
Planets
Simpo PDF Merge and Split Unregistered Version -
- 166 -
is planet number
from the sun.
Position() cho biết vị trí của phần tử đang xét
Last(.) vị trí cuối cùng của phần tử đang xét.
Kết quả kết xuất :
Planets
Mercury is planet number 1 from the sun.
Earth is planet number 2 from the sun.
Venus is planet number 3 from the sun.
Sử dụng xsl:choose
Simpo PDF Merge and Split Unregistered Version -
- 167 -
Phần tử điều khiển lựa chọn tương tự lệnh switch của Java hay C.
Phần tử này cho phép kiểm tra và chọn ra giá trị trong một danh sách các so khớp thoả
mãn điều kiện đề ra. Giả sử tài liệu xml như sau :
Mecury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
Simpo PDF Merge and Split Unregistered Version -
- 168 -
Giả sử ta muốn định dạng tên của các hành tinh tuỳ thuộc vào màu sắc COLOR của nó,
màu đỏ thì in đậm tên, màu trắng thì in nghiêng tên, màu xanh dương thì gạch dưới tên,
ta thực hiện điều này bằng cách chọn trong thuộc tính test của như sau :
Planets
Simpo PDF Merge and Split Unregistered Version -
- 169 -
Trong ví dụ ta sử dụng phần tử để yêu cầu chọn gái trị mặc
định khi không có biểu thức nào thoả mãn.
Kết quả xuất sẽ là :
Planets
Mercury
Venus
Earth
Simpo PDF Merge and Split Unregistered Version -
- 170 -
Sử dụng xsl:for-each
Tương tự vòng lặp for trong Java và C.
Ví dụ : dữ liệu xml được định nghĩa :
Mercury
Closet planet to the sun
.0553
58.65
1516
.983
43.4
Ta sẽ lấy tất cả các phần tử trùng tên như sau :
Nội dung tài liệu planets.xsl như sau :
Simpo PDF Merge and Split Unregistered Version -
- 171 -
Kết quả là :
Mercury
Closet planet to the sun
Các tập tin XSLT dùng trong chương trình
Tập tin XSLT này dùng để nhóm các câu trắc nghiệm theo chương.
<xsl:stylesheet version="1.0"
xmlns:xsl="">
Matched
<xsl:for-each select="//CauTracNghiem[generate-id(.)= generate-
id(key('keyChuongID',@Chuong)[1])]">
<xsl:value-of
select="@Chuong"/>
<xsl:variable name="lstChuong"
select="//CauTracNghiem[@Chuong=$lngChuongID]"/>
Simpo PDF Merge and Split Unregistered Version -
- 172 -
<xsl:for-each select="$lstChuong[generate-id(.) = generate-
id(key('keyMaID', @Ma)[1])]">
Tập tin XSLT này dùng để nhóm các bài lý thuyết theo từng lớp, trong từng lớp
lại nhóm các bài lý thuyết thành từng chương.
<xsl:stylesheet version="1.0"
xmlns:xsl="">
Matched
<xsl:for-each select="//BaiHoc[generate-id(.)= generate-
id(key('keyGenreID',@Lop)[1])]">
Simpo PDF Merge and Split Unregistered Version -
- 173 -
<xsl:value-of
select="@Lop"/>
<xsl:variable name="lstPhoto"
select="//BaiHoc[@Lop=$lngGenreID]"/>
<xsl:with-param name="lstPhoto"
select="$lstPhoto" />
<xsl:for-each select="$lstPhoto[generate-id(.) = generate-
id(key('keyPDID', @Chuong)[1])]">
<xsl:value-of
select="@Chuong" />
<xsl:variable name="lstPD"
select="$lstPhoto[@Chuong=$lngPDID]" />
Simpo PDF Merge and Split Unregistered Version -
- 174 -
<xsl:for-each select="$lstPD[generate-id(.) = generate-
id(key('keyPhotoID', @TenBai)[1])]">
Tập tin XSLT này dùng để lấy danh sách các chương trong các câu trắc nghiệm.
<xsl:stylesheet version="1.0"
xmlns:xsl="">
Matched
<xsl:for-each select="//CauTracNghiem[generate-id(.)=
generate-id(key('keyChuongID',@Chuong)[1])]">
<xsl:value-of
select="@Chuong"/>
<xsl:variable name="lstChuong"
select="//CauTracNghiem[@Chuong=$lngChuongID]"/>
Simpo PDF Merge and Split Unregistered Version -
- 175 -
Tập tin XSLT này dùng để lấy danh sách các chương trong các câu trắc nghiệm.
<xsl:stylesheet version="1.0"
xmlns:xsl="">
<FONT FACE="Times New
Roman", SIZE="3", COLOR="RED">
Cau
Simpo PDF Merge and Split Unregistered Version -
- 176 -
</FONT>
<FONT FACE="Times New
Roman", SIZE="2", COLOR="GREEN">
Buoc
</FONT>
<FONT FACE="Times
New Roman", SIZE="3", COLOR="BLUE">
</FONT>
C. Các quy tắc xử lý bắt buộc khi sử dụng chương trình:
Không gian toạ độ:
Quy ước xác định 1 điểm:
“chuỗi phía trước” TênĐiểm(x,y,z).
Mặc định :
“chuỗi phía trước” = “điểm”
Simpo PDF Merge and Split Unregistered Version -
- 177 -
“chuỗi phía trước” = “có tâm là”
“chuỗi phía trước” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có điểm trong đề ta tiến hành cắt chuỗi lấy các thông số cho điểm.
− Quy ước xác định 1 đường thẳng:
Tìm “chuỗi nhận dạng” có trong đề.
Mặc định :
“chuỗi nhận dạng” = “đường thẳng”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có đường thẳng trong đề ta tiến hành cắt chuỗi lấy các thông số cho
đường thẳng.
− Quy ước xác định 1 mặt cầu:
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
“chuỗi nhận dạng” = “mặt cầu”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.Sau
khi xác định là có mặt cầu trong đề ta tiến hành cắt chuỗi lấy các thông số cho mặt cầu.
− Quy ước xác định 1 mặt phẳng:
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
“chuỗi nhận dạng” = “mặt phẳng”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có mặt phẳng trong đề ta tiến hành cắt chuỗi lấy các thông số cho
mặt phẳng.
− Quy ước xác định 1 tứ diện:
Simpo PDF Merge and Split Unregistered Version -
- 178 -
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
“chuỗi nhận dạng” = “tứ diện”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có tứ diện trong đề ta tiến hành cắt chuỗi lấy các thông số cho tứ
diện.
− Quy ước xác định 1 tam giác:
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
“chuỗi nhận dạng” = “tam giác”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có tam giác trong đề ta tiến hành cắt chuỗi lấy các thông số cho tam
giác.
− Quy ước xác định 1 vector:
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
“chuỗi nhận dạng” = “vector”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có vector trong đề ta tiến hành cắt chuỗi lấy các thông số cho
vector.
Mặt phẳng toạ độ:
− Quy ước xác định 1 điểm:
“chuỗi phía trước” TênĐiểm(x,y).
Mặc định :
Simpo PDF Merge and Split Unregistered Version -
- 179 -
“chuỗi phía trước” = “điểm”
“chuỗi phía trước” = “có tâm là”
“chuỗi phía trước” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có điểm trong đề ta tiến hành cắt chuỗi lấy các thông số cho điểm.
− Quy ước xác định 1 đường thẳng:
Tìm “chuỗi nhận dạng” có trong đề.
Mặc định :
“chuỗi nhận dạng” = “đường thẳng”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có đường thẳng trong đề ta tiến hành cắt chuỗi lấy các thông số cho
đường thẳng.
− Quy ước xác định 1 đường tròn:
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
“chuỗi nhận dạng” = “đường tròn”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có đường tròn trong đề ta tiến hành cắt chuỗi lấy các thông số cho
đường tròn.
− Quy ước xác định 1 Ellipse:
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
Simpo PDF Merge and Split Unregistered Version -
- 180 -
“chuỗi nhận dạng” = “Ellipse”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có Ellipse trong đề ta tiến hành cắt chuỗi lấy các thông số cho
Ellipse.
− Quy ước xác định 1 Hyperbol:
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
“chuỗi nhận dạng” = “Hyperbol”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có Hyperbol trong đề ta tiến hành cắt chuỗi lấy các thông số cho
Hyperbol.
− Quy ước xác định 1 vector:
Tìm “chuỗi nhận dạng” có trong đề
Mặc định :
“chuỗi nhận dạng” = “vector”
“chuỗi nhận dạng” : có thể do người dùng qui định trong thư viện nhận dạng đề.
Sau khi xác định là có vector trong đề ta tiến hành cắt chuỗi lấy các thông số cho
vector.
Simpo PDF Merge and Split Unregistered Version -
- 181 -
Đạo hàm:
Nhập các biểu thức bằng các ky tự toán học đặc trưng.
Lưu ý:
Khi muốn thực hiện phép nhân 2 biểu thức, ví dụ u.v thì ta phải nhập như sau (u)(v).
Khi muốn lũy thừa 1 biểu thức, ví dụ uv thì ta phải nhập như sau (u)v.
D. Phụ lục các thuật giải trong chương trình:
Không gian toạ độ:
− Tính vector tạo bởi 2 điểm:
vector.x = Bx – A.x
vector.y = By – A.y
vector.z = Bz – A.z
− Tính khoảng cách từ 1 điểm đến 1 mặt phẳng:
kc =
mp.n.z*mp.n.zmp.n.y*mp.n.ymp.n.x*mp.n.x
mp.Dz*mp.n.zy*mp.n.yx*mp.n.x
++
+++
− Tính khoảng cách giữa 2 đường thẳng:
A ∈ đt1, 1vt là vector chỉ phương
B ∈ đt2, 2vt là vector chỉ phương
kc = ( AB . 1vt ). 2vt / 1vt . 2vt
− Viết phương trình đoạn vuông góc chung giữa 2 đường thẳng chéo nhau:
temp = 1vt . 2vt
mp1.vt1 = temp;
mp1.vt2 = vt1;
mp1.TinhPhapVector();
Simpo PDF Merge and Split Unregistered Version -
- 182 -
mp1.a = a1;
mp1.TinhD();
mp2.vt1 = temp;
mp2.vt2 = vt2;
mp2.TinhPhapVector();
mp2.a = a2;
mp2.TinhD();
dt_kq.mp1 = mp1;
dt_kq.mp2 = mp2;
− Tính diện tích mặt cầu:
S = 4*PI*R2
− Tính thể tích mặt cầu:
V =
3
4 *PI*R3
− Kiểm tra mặt phẳng song song với 1 mặt phẳng khác:
Nếu (mp1.n.x*mp2.n.y != mp1.n.y*mp2.n.x)
không song song;
Nếu (mp1.n.x*mp2.n.z != mp1.n.z*mp2.n.x)
không song song;
Nếu (mp1.n.y*mp2.n.z != mp1.n.z*mp2.n.y)
không song song;
Nếu (mp1.n.x*mp2.D == mp1.D*mp2.n.x)
không song song;
Còn lại : song song
Simpo PDF Merge and Split Unregistered Version -
- 183 -
− Kiểm tra mặt phẳng trùng với 1 mặt phẳng khác:
Nếu (n.x*mp.n.y != n.y*mp.n.x)
không trùng
Nếu (n.x*mp.n.z != n.z*mp.n.x)
không trùng
Nếu (n.y*mp.n.z != n.z*mp.n.y)
không trùng
Nếu (n.x*mp.D != D*mp.n.x)
không trùng
Trùng
− Kiểm tra mặt phẳng vuông góc với 1 mặt phẳng khác:
Nếu (n.x*mp.n.x + n.y*mp.n.y + n.z*mp.n.z == 0)
Vuông góc
Không vuông góc
− Tính diện tích của tứ diện:
AB = A.TinhVector(B);
AC = A.TinhVector(C);
S = ((AB.TichHuuHuong(AC)).TinhGiaTri())/2 ;
− Tính thể tích của tứ diện:
AB = A.TinhVector(B);
AC = A.TinhVector(C);
AD = A.TinhVector(D);
V = (((AB.TichHuuHuong(AC)).TichHuuHuong(AD)).TinhGiaTri())/2 ;
− Tính tích hữu hướng của 2 vector:
vtkq.x = y*vt.z - z*vt.y;
Simpo PDF Merge and Split Unregistered Version -
- 184 -
vtkq.y = z*vt.x - x*vt.z;
vtkq.z = x*vt.y - y*vt.x;
Mặt phẳng toạ độ:
− Khoảng cách từ 1 điểm đến 1 đường thẳng:
kc =
dt.vtpt.y*dt.vtpt.ydt.vtpt.x*dt.vtpt.x
dt.C y *dt.vtpt.y x *dt.vtpt.x
+
++
− Tìm giao điểm giữa 2 đường thẳng:
Nếu ( vtpt.x==0 )
{
diem.y =
vtpt.y
C-
diem.x =
dt.vtpt.x
dt.vtpt.y*diem.y-dt.C-
}
Nếu ( vtpt.y==0 )
{
diem.x =
vtpt.x
C-
diem.y =
dt.vtpt.y
dt.vtpt.x*diem.x-dt.C-
}
Nếu ( dt.vtpt.x==0 )
{
diem.y =
dt.vtpt.y
dt.C-
diem.x =
vtpt.x
vtpt.y*diem.y-C-
}
Nếu ( dt.vtpt.y==0 )
Simpo PDF Merge and Split Unregistered Version -
- 185 -
{
diem.x =
dt.vtpt.z
dt.C-
diem.y =
vtpt.y
vtpt.x*diem.x-C-
}
diem.y =
vtpt.x*dt.vtpt.y-dt.vtpt.x*vtpt.y
dt.vtpt.x*C-vtpt.x*dt.C
diem.x =
vtpt.y*dt.vtpt.x-dt.vtpt.y*vtpt.x
dt.vtpt.y*C-vtpt.y*dt.C
− Phương trình tiếp tuyến qua 1 điểm thuộc đường tròn:
tt.a = diem;
tt.vtpt.x = diem.x - Tam.x;
tt.vtpt.y = diem.y - Tam.y;
tt.TinhVectorChiPhuong();
tt.TinhC();
− Phương trình tiếp tuyến qua 1 điểm không thuộc đường tròn:
t1 = Tam.x-diem.x;
t2 = Tam.y-diem.y;
candelta = )-2(*)-1(-21 RtRt)t*t(
22222
k1 =
Rt
tt
22
21
-1
candelta - *
k2 =
Rt
tt
22
21
-1
candelta * +
Simpo PDF Merge and Split Unregistered Version -
- 186 -
tt1.a = diem;
tt1.vtpt.x = k1;
tt1.vtpt.y = -1;
tt1.TinhVectorChiPhuong();
tt1.TinhC();
taphop.Thêm(temp);
tt2.a = diem;
tt2.vtpt.x = k2;
tt2.vtpt.y = -1;
tt2.TinhVectorChiPhuong();
tt2.TinhC();
taphop.Thêm(temp);
− Vị trí tương đối giữa 2 đường tròn:
Nếu ( Tam.KhoangCachDenDiem(dt.Tam)==0 && R==dt.R)
2 đường tròn trùng nhau.
Nếu ( Tam.KhoangCachDenDiem(dt.Tam)==0 && R!=dt.R)
2 đường tròn trùng tâm.
Nếu ( Tam.KhoangCachDenDiem(dt.Tam) > R+dt.R)
2 đường tròn nằm ngoài nhau."
Nếu ( Tam.KhoangCachDenDiem(dt.Tam) == R+dt.R)
đường tròn tiếp xúc ngoài nhau.
Nếu ( Tam.KhoangCachDenDiem(dt.Tam) < Math.Abs(R-dt.R) )
2 đường tròn chứa nhau
Nếu ( Tam.KhoangCachDenDiem(dt.Tam) == Math.Abs(R-dt.R) )
Simpo PDF Merge and Split Unregistered Version -
- 187 -
2 đường tròn tiếp xúc trong nhau.
còn lại 2 đường tròn cắt nhau tại 2 điểm phân biệt.
− Kiểm tra 1 đường thẳng tiếp xúc với Ellipse:
Nếu ( dthang.vtpt.x*dthang.vtpt.x*a*a +
dthang.vtpt.y*dthang.vtpt.y*b*b == dthang.C*dthang.C)
Có tiếp xúc
Ngược lại : không tiếp xúc
− Kiểm tra 1 đường thẳng tiếp xúc với Hyperbol:
Nếu ( dthang.vtpt.x*dthang.vtpt.x*a*a -
dthang.vtpt.y*dthang.vtpt.y*b*b == dthang.C*dthang.C)
Có tiếp xúc
Nếu ( dthang.vtpt.x*dthang.vtpt.x*a*a -
dthang.vtpt.y*dthang.vtpt.y*b*b == -dthang.C*dthang.C)
Có tiếp xúc
Ngược lại : không tiếp xúc
Khảo sát và vẽ đồ thị hàm số:
− Khảo sát và vẽ đồ thị hàm số đa thức:
+ Tìm miền xác định.
+ Tính đạo hàm cấp 1.
+ Tính đạo hàm cấp 2.
+ Tính giới hạn vô cực.
+ Tìm giao điểm với OY.
+ Xuất kết quả khảo sát.
+ Vẽ bảng biến thiên.
+ Vẽ đồ thị.
Simpo PDF Merge and Split Unregistered Version -
- 188 -
− Khảo sát và vẽ đồ thị hàm số hữu tỉ:
+ Tìm miền xác định.
+ Tính đạo hàm cấp 1.
+ Tìm giới hạn tiệm cận đứng.
+ Tìm giới hạn tiệm cận ngang.
+ Tìm giới hạn tiệm cận xiên.
+ Xuất kết quả khảo sát.
+ Vẽ bảng biến thiên.
+ Vẽ đồ thị.
Đạo hàm:
− Nhận diện đề:
+ Lớp cha sẽ nhận diện ra dạng đề thuộc lớp con nào.
+ Lớp cha cấp địa chỉ của lớp con và gọi hàm nhận diện đề của lớp con.
+ Lớp con phân tích đề để lấy các thông tin cần thiết.
Các dạng MathML đặc trưng cho các dạng biểu thức là:
Đơn thức:
Ax
3
X
x
X
Simpo PDF Merge and Split Unregistered Version -
- 189 -
axb
3
X
5
xb
X
5
A X
3
X
Simpo PDF Merge and Split Unregistered Version -
- 190 -
X
X
A C X
3
X
4
C X
Simpo PDF Merge and Split Unregistered Version -
- 191 -
X
4
A X B
3
X
5
X B
Simpo PDF Merge and Split Unregistered Version -
- 192 -
X
5
A C BX
3
X
5
4
Simpo PDF Merge and Split Unregistered Version -
- 193 -
(
−
3
)
X
5
4
C BX
Simpo PDF Merge and Split Unregistered Version -
- 194 -
X
5
4
A X C
B
3
X
5
4
X C
B
Simpo PDF Merge and Split Unregistered Version -
- 195 -
X
5
4
Biểu thức phức:
CONG,TRU
U
+
V
(U)V
(
Simpo PDF Merge and Split Unregistered Version -
- 196 -
U
)
V
U/V
U
V
(U)(V)
(
U
)
(
V
Simpo PDF Merge and Split Unregistered Version -
- 197 -
)
COS(U) SIN TG COTG LN
COS
(
U
)
HANGSO
hs
CANSO
X
X
Simpo PDF Merge and Split Unregistered Version -
- 198 -
4
"
#lpar;
#minus;
3
#rpar;
x
"
(
−
3
)
X
− Tính đạo hàm:
+ Đạo hàm của 1 biểu thức là một biểu thức.
+ Một biểu thức phức tạp được cấu thành từ nhều biểu thức nhỏ hơn.
Simpo PDF Merge and Split Unregistered Version -
- 199 -
+ Tính đạo hàm của một biểu thức phức tạp bằng cách tính đạo hàm của
từng thành phần nhỏ và kết hợp thành biểu thức cần tính.
Phụ lục quy tắc tính đạo hàm:
Biểu thức căn:
public override BIEU_THUC TinhDaoHam()
{
HANG_SO hs1 = new HANG_SO();
hs1.hangso = 1 - CanSo;
BIEU_THUC_U_MU_V umuv1 = new BIEU_THUC_U_MU_V();
umuv1.u = u;
umuv1.v = hs1;
BIEU_THUC_CAN can1 = new BIEU_THUC_CAN();
can1.CanSo = CanSo;
can1.u = umuv1;
BIEU_THUC_NHAN nhan1 = new BIEU_THUC_NHAN();
nhan1.u = u.TinhDaoHam();
nhan1.v = can1;
return nhan1;
}
Biểu thức chia:
public override BIEU_THUC TinhDaoHam()
{
BIEU_THUC_CHIA chia = new BIEU_THUC_CHIA();
BIEU_THUC_NHAN nhan1 = new BIEU_THUC_NHAN();
BIEU_THUC_NHAN nhan2 = new BIEU_THUC_NHAN();
BIEU_THUC_NHAN nhan3 = new BIEU_THUC_NHAN();
BIEU_THUC_TRU tru = new BIEU_THUC_TRU();
nhan1.u = u.TinhDaoHam();
nhan1.v = v;
nhan2.u = u;
nhan2.v = v.TinhDaoHam();
nhan3.u = v;
Simpo PDF Merge and Split Unregistered Version -
- 200 -
nhan3.v = v;
tru.u = nhan1;
tru.v = nhan2;
chia.u = tru;
chia.v = nhan3;
return chia;
}
Biểu thức cộng:
public override BIEU_THUC TinhDaoHam()
{
BIEU_THUC_CONG cong = new BIEU_THUC_CONG();
cong.u = u.TinhDaoHam();
cong.v = v.TinhDaoHam();
return cong;
}
Biểu thức COS:
public override BIEU_THUC TinhDaoHam()
{
HANG_SO hs = new HANG_SO();
hs.hangso = -1;
BIEU_THUC_NHAN nhan1 = new BIEU_THUC_NHAN();
nhan1.u = hs;
nhan1.v = u.TinhDaoHam();
BIEU_THUC_SIN sin = new BIEU_THUC_SIN();
sin.u = u;
BIEU_THUC_NHAN nhan2 = new BIEU_THUC_NHAN();
nhan2.u = nhan1;
nhan2.v = sin;
return nhan2;
}
Biểu thức COTG:
public override BIEU_THUC TinhDaoHam()
{
HANG_SO hs = new HANG_SO();
hs.hangso = -1;
Simpo PDF Merge and Split Unregistered Version -
- 201 -
BIEU_THUC_NHAN nhan1 = new BIEU_THUC_NHAN();
nhan1.u = hs;
nhan1.v = u.TinhDaoHam();
BIEU_THUC_SIN sin = new BIEU_THUC_SIN();
sin.u = u;
BIEU_THUC_NHAN nhan2 = new BIEU_THUC_NHAN();
nhan2.u = sin;
nhan2.v = sin;
BIEU_THUC_CHIA chia = new BIEU_THUC_CHIA();
chia.u = nhan1;
chia.v = nhan2;
return chia;
}
Biểu thức LN:
public override BIEU_THUC TinhDaoHam(){
BIEU_THUC_CHIA chia = new BIEU_THUC_CHIA();
chia.u = u.TinhDaoHam();
chia.v = u;
return chia;
}
Biểu thức nhân:
public override BIEU_THUC TinhDaoHam()
{
BIEU_THUC_NHAN nhan1 = new BIEU_THUC_NHAN();
nhan1.u = u.TinhDaoHam();
nhan1.v = v;
BIEU_THUC_NHAN nhan2 = new BIEU_THUC_NHAN();
nhan2.u = u;
nhan2.v = v.TinhDaoHam();
BIEU_THUC_CONG cong = new BIEU_THUC_CONG();
cong.u = nhan1;
cong.v = nhan2;
return cong;
}
Biểu thức SIN:
public override BIEU_THUC TinhDaoHam(){
BIEU_THUC_COS cos = new BIEU_THUC_COS();
cos.u = u;
BIEU_THUC_NHAN nhan = new BIEU_THUC_NHAN();
nhan.u = u.TinhDaoHam();
nhan.v = cos;
return nhan;
}
Simpo PDF Merge and Split Unregistered Version -
- 202 -
Biểu thức TG:
public override BIEU_THUC TinhDaoHam(){
BIEU_THUC_COS cos = new BIEU_THUC_COS();
cos.u = u;
BIEU_THUC_NHAN nhan = new BIEU_THUC_NHAN();
nhan.u = cos;
nhan.v = cos;
BIEU_THUC_CHIA chia = new BIEU_THUC_CHIA();
chia.u = u.TinhDaoHam();
chia.v = nhan;
return chia;
}
Biểu thức trừ:
public override BIEU_THUC TinhDaoHam() {
BIEU_THUC_TRU tru = new BIEU_THUC_TRU();
tru.u = u.TinhDaoHam();
tru.v = v.TinhDaoHam();
return tru;
}
Biểu thức uv:
public override BIEU_THUC TinhDaoHam()
{
BIEU_THUC_NHAN nhan1 = new BIEU_THUC_NHAN();
nhan1.u = u.TinhDaoHam();
nhan1.v = v.TinhDaoHam();
HANG_SO hs1 = new HANG_SO();
hs1.hangso = 1;
BIEU_THUC_TRU tru1 = new BIEU_THUC_TRU();
tru1.u = v;
tru1.v = hs1;
BIEU_THUC_U_MU_V umuv1 = new BIEU_THUC_U_MU_V();
umuv1.u = u;
umuv1.v = tru1;
BIEU_THUC_NHAN nhan2 = new BIEU_THUC_NHAN();
nhan2.u = v;
nhan2.v = umuv1;
BIEU_THUC_NHAN nhan3 = new BIEU_THUC_NHAN();
nhan3.u = nhan1;
nhan3.v = nhan2;
return nhan3;
}
Đơn thức:
public override BIEU_THUC TinhDaoHam()
Simpo PDF Merge and Split Unregistered Version -
- 203 -
{
DON_THUC temp = new DON_THUC();
temp.heso = (heso*somu.tuso)/somu.mauso;
temp.somu.tuso = somu.tuso-somu.mauso;
temp.somu.mauso = somu.mauso;sư
return temp;
}
Hằng số:
public override BIEU_THUC TinhDaoHam()
{
HANG_SO temp = new HANG_SO();
temp.hangso = 0;
return temp;
}
Simpo PDF Merge and Split Unregistered Version -
- 204 -
TÀI LIỆU THAM KHẢO
Tiếng Việt:
[1] Văn Như Cương (Chủ biên), Tạ Mân, Hình học 12, Tái bản lần thứ nhất, Nhà
xuất bản Giáo dục, Hà Nội, năm 2000.
[2] TS Lê Anh Vũ, Nguyễn Kỳ Sơn, Nguyễn Danh Phan, Giải toán hình học 12,
Lần thứ nhất, Nhà xuất bản TPHCM, TP.HCM, 2003.
[3] Giải toán hình học 12 (dùng cho học sinh các lớp chuyên), Nhà xuất bản Giáo
dục.
Tiếng Anh:
[1] Eric Gunnerson, A Programmer's Introduction to C#, Apress, 2000.
[2] Eric Butow and Tommy Ryan, C# Book, Hungry Minds, Inc, New York, 2002.
[3] Anders Hejlsberg and Scott Wiltamuth, C# Language Reference, Microsoft
Corporation 1999-2000.
Website:
Simpo PDF Merge and Split Unregistered Version -
Các file đính kèm theo tài liệu này:
- Luận án tốt nghiệp- Phần mềm hỗ trợ ôn thi tốt nghiệp trung học phổ thông môn toán.pdf