Chương IT: Ky Thugt Nhing GVHD: Ts. Nguyén Hữu Thong MainForm gồm có : Một textbox FunctionBox dé nhập biêu thức hay hàm số cần vẽ và hai textbox khác lần lượt có tên là Lowerrange và Upperange Một PictureBox : Dothi Một nút bam (button) PlotButton, một nút ExitButton dùng dé thoát khỏi chương trình. Giao diện trông như sau : Source code : SVTH : Lê Van Doan Trang 12 Chương HH: Ky Thugt Nhing GVHD: Ts. Nguyén Hữu Thong Cua form : Khai báo biến toàn cục (global) của form : Public kv As Long ‘kv (kernel vector} is the handle for the Maple kernel Public PlotFileName As String ‘Trong load form (đoạn code của MainForm): Private Sub Form _Load() ‘Khai báo 2 bién : Dim error As String Dim args(0 To 1) As String ‘Khoi đầu phương thức callback cho báo lỗi (error), thanh trạng thái (status).
1pTextCa L1Back = GetProc (AddaressOf TextCallBack) ch. lpErrorCallBack Get Proc (Addressof ErrorCaliBack) cb. lpRedirectCallBack lI — cb.ipCallBackCailBack = 0 khởi tao Maple bằng cách đặt giá trị dau cho kv với lệnh StartMaple của OpenMaple. SVTH: Lê Văn Đoan Trang 13 Chương HH: Ky Thugt Nhing GVHD: Ts.
Nguyén Hữu Thong kv StartMaple(0, args, cb, 0, error) If kv = 0 Then “Nếu kv=0 thi xuất ra thông báo lỗi (error) MsgBox "Ban nhap sai kieu du lieu!!!” + StrConv(error, vbUnicode), vbCritical, "" Unload Me End End If End Sub Xử lý nút PlotButton với mã (code) như sau Private Sub PlotButton_Click () ‘Khai báo các biến và mang Dim TempFile, command As String Dim temppath(256) As Byte Dim DirLen, + As Long ‘Lay một cái Tên file cho đề thị DirLen = GetTempPath(256, temppath (0) } If Dirlen <> 0 Then TempFile = "dothi.gif” 'TempFile = Left (StrConv (temppath (}„ vbUnicode), Dirien} & "plot" & Int(Rnd() * 10) & h,g죔 SVTH: Lê Văn Đoan Trang 14 Chương HH: Ky Thugt Nhing GVHD: Ts. Nguyén Hữu Thong End If ‘ kv luôn là đối số đến ham EvalMapleStatement Call EvalMapleStatement (kv, plotsetup('gif', 'plotoutput'="" + TempFile + r` ) - ") "Tạo ra đồ thị sử dụng lệnh vẽ Maple. r EvalMapleStatement (kv, "plot (" & FunctionBox.Text & “);") Tf r <> 0 Then * Nếu như r # 0 thì load đồ thị lên PictureBox (dothi) hinh.Picture = LoadPicture (TempF1i 1e) End If PlotFileName = TempFile End Sub ‘Doan code của Module PlotModule : Public cb As MapleCaliBack Public Declare Function GetTempPath Lib "kernel32.dll1" Alias "GetTempPathA" _ (ByVal nBufferLength As Long, ByRef IpBuffer As Byte) As Long "Xuất của ham CallBack SVTH: Lê Van Doan Trang 15 Chương HH: Ky Thugt Nhing GVHD: Ts. Nguyén Hữu Thong Public Sub TextCailBack(data As Long, ByVal tag As Integer, ByVal output As Long) Dim OutputString As String OutputString = MaplePointerToString (output) End Sub 'Xử lý báo lỗi khi người dùng nhập sai của ham Callback Public Sub ErrorCallBack(data As Long, ByVal Offset As Integer, ByVal output As Long) ‘Xuat ra hộp thông báo (messagebox) lỗi kỹ thuật MsgBox " at offset " + str(Offset) +" " + MaplePointerToString (output), vbInformation, "" Ena Sub Sau khi đoạn mã của mỗi Object trên được xác lập thì biên dịch (complie) chương trình của chúng ta sẽ xuất hiện một Form (MainForm ) dé người ding nhập một hàm cần vẽ vào “FunctionBox” và nhập giới hạn của hoành độ dé 46 thị sẽ được vẽ trong giới hạn đó vào từ textbox “Lowerrange” đến textbox “Upperrange” và cuối cùng bam Button “PlotButton” khi ay đồ thị sẽ được vẽ lên trên PictureBox có tên là “ Dothi”, file ảnh được xuất ra đưới dang file “.
Nhân xét_: Trên đây em đã giới thiệu một số các đặc điểm của Maple 9.5 trong viéc vé đồ thị và nêu kỹ thuật nhúng (emmbed) khả năng vẽ đồ thị của Maple 9.5 vào ngôn ngữ lập trình Visual Basic 6. Đề hiểu rõ về cách hoạt động của chương trình cũng như các đối tượng (Object) trên các SVTH: Lê Văn Đoan Trang 16 Chương IT: KD Thugt Nhing GVHD: Ts. Nguyén Hữu Thong Form cụ thê chúng làm những gì ? dé khảo sát va vẽ đô thị của ham sô chúng ta bước qua chương IIT: Cơ sở lý luận cua chương trình. SVTH : Lê Van Doan Trang 17 Chương M1 : Cơ sở lý luận GVHD : Ts.
Nguyễn Hữu Thông Chương II] : CƠ SỞ LÝ LUẬN I. Cơ sở chung đề viết chương trình : * Dựa vào những đặc điểm của Maple 9.5 hỗ trợ Visual Basic 6.0 trong việc vẽ đề thị các hàm số. * Dựa vào những thuật toán khảo sát các ham SỐ SƠ cấp lớp 12 bao gôm : - Hàm số bậc 2 : y = ax? + bx +c (a #0) - Ham số bậc 3 : y =axÌ + bx? +cx+d (a # 0) - Ham sô chan bậc 4 : y = ax* + bx? +c (a #0) ax? + bx +e - Am sôsố hữu Ham hữu titỉ loại loai 1: 1: yv= Em (c>#0,ad a #0 ) - Ham số hữu ti loai2: 8X y= _t id b (cz0,ad-bc#0) II. Cơ sở lý luận thiết kế chương trình : Chăng hạn một học sinh lớp 12 muốn khảo sát một hàm sơ cấp, ví dụ hàm bậc 3 : y= 3xÌ+ 10x? - x + 1, trước tiên là học sinh này sẽ bam vào nút (button ) “Khảo sát & Vẽ” trên form chính có menu như sau : SVTH: Lê Văn Doan Trang 18 Chương HH : Cơ sở lý luận GVHD: Ts.
Nguyễn Hữu Thông sau đó một form sẽ xuất hiện cho chon hàm số cân khảo sát bam vào nút dé vẽ hàm bậc 3 : lúc này một form xuất hiện học sinh nhập lần lượt các hệ số a, b, c,d vào các 6 textbox đành cho mỗi hệ số Sau cùng học sinh sé bam vào nút VẼ2D hoặc VẼ3D dé khảo sát và vẽ đô thị trên : Nếu như học sinh bam vào nút VẼ2D thì chương trình sẽ khảo sát và vẽ hình theo kiều mặt phăng, còn nếu bam vào nút VE3D thì chương trình cũng sẽ khảo sát hàm số như ở nút VẼ2D nhưng hình được vẽ ra là trong không gian 3 chiều chứ không phải là trong mặt phẳng điều này được thực hiện chi trong tích tắc vài giây bao gồm tat cả các bước : Tìm Miễn xác định, tính đạo hàm, tìm các điểm cực đại, SVTH : Lê Văn Doan Trang 19 Chương M1 : Cơ sở lý luận GVHD : Ts. Nguyễn Hữu Thông cực tiêu (nếu có), tìm diém uốn và các khoảng lỗi lõm, vẽ bảng biến thiên của dé thị và cuối cùng là vẽ đồ thi. Trong chương trình này chúng ta chủ yếu tìm hiểu về khảo sát , vẽ các hàm sơ cấp. Vậy chương trình trên hoạt động theo những cơ chế nào ? Chúng ta đi vào tìm hiểu cơ chế làm việc của từng thành phan trong chương trình : 1.
Tổng quan chung : a. Hiễn thị (show) hay kết thúc form : Trong chương trình tông cộng có tất cả 12 form trong đó có 6 form dùng dé khảo sát và vẽ đồ thi, cơ chế dé gọi các form là dùng cú pháp : Tênform.show Chang hạn form có tên là huutil từ form maindraw có nút bam (button) viết code cho nút này đề gọi form huutil là : huutil show, sau khi chạy chương trình click vào nút này sẽ hiển thị form huutil, và dé kết thúc form cũng tương tự như trên tức là giả sử từ form maindraw trong chương trình cũng có một button, dé kết thúc (hay tắt) form hiện hành (form maindraw) ta dùng cú pháp cho nút này như sau : Unload maindraw b. Tải (load) form : Trong các form của phần khảo sát và vẽ đồ thị gồm các form sau : ksvebac3, ksvebac4, ksvebac2, huutil, huuti2, dé tải (load) các form này khởi động các ham trong OpenMaple của Maple 9.5 hỗ trợ Visual Basic kết hợp với hai module là : module maple.bas và module plotModule.bas vẽ đồ thị ta viết code chung cho các form như sau : Đầu tiên là khai báo 2 biến toàn cục : Public kv As Long ‘ky (kernel vector) is the handle for the Maple kernel SVTH : Lé Van Doan Trang 20 Chương M1 : Cơ sở lý luận GVHD : Ts. Nguyễn Hữu Thông ẺŠẰẰẤ`Ò<== —=—————._____________________ÊŸ Public PlotFileName As String Sau đó là load form : Private Sub Form_Load() Dim error As String Dim args(0 To 1) As String Khoi động ham callbacks cho chữ( text) và báo lỗi(error), còn các phương thức khác có thẻ cần hoặc không cần thiết chăng hạn như callback cho thanh trạng thai (status), dòng đọc (readline),.lpTextCallBack= GetProc(AddressOf TextCallBack) cb.lpErrorCallBack = GetProc(AddressOf ErrorCallBack) ‘cb.
IpCallBackCallBack = 0 ‘Khoi động Maple bằng cách khởi đầu biến kv với lệnh StartMaple của OpenMaple : kv = StartMaple(0, args, cb, 0, error) If kv = 0 Then MsgBox "bao loi (warning error !!!" + StrConv(error, vbUnicode), vbCritical, "" Unload Me End End If End Sub c. Về màu ( color) của các đường trong đồ thị của mỗi ham : Trong các form của các dạng hàm số khác nhau có chứa một danh sách các loại màu có thê sử dụng mà Maple 9.5 cho phép danh SVTH : Lê Văn Doan Trang 21 Chương M1 : Cơ sở lý luận GVHD: Ts. Nguyễn Hữu Thông sách này được thê hiện trong chương trình là một combobox — „ khi chúng ta vẽ đồ thị một hàm số, màu của đồ thị hàm số mặc nhiên là màu xanh (blue) nếu người dùng thích một màu khác trong danh sách mau thì có thé lựa chọn dùng chuột (click) hay dùng phím mũi tên chọn các loại màu khác nhau : combobox này có tên là : danhsachcolor dé xử lý sự kiện chuột và bàn phím trên combobox này viết code cho 2 phương thức sau : Đối với sự kiện click chuột trên combobox : Private Sub danhsachcolor_Click() Dim TempFile, command As String Dim temppath(256) As Byte Dim DirLen, r As Long DirLen = GetTempPath(256, temppath(0)) If DirLen <> 0 Then TempFile = "dothi.gif" "TempFile = Left(StrConv(temppathQ), vbUnicode), DirLen) & "plot" & Int(Rnd() * 10) & ".gif” End If Call EvalMapleStatement(kv, "plotsetup(‘gif plotoutput="" + TempFile + " plotoptions= "width= 340, height=280°);") SVTH : Lé Van Doan Trang 22 Chương M1 : Cơ sở lý luận GVHD : Ts. Nguyễn Hữu Thông s = hsa.Text & ") r = EvalMapleStatement(kv, "plot(" & s & ”, x=(" & LowerRange.Text & ”),color=” & danhsachcolor.Text & ");") Ifr <> 0 Then dothi.Picture = LoadPicture(TempFile) ‘Tf PlotFileName <> "" Then "KHI PlotFileName End If End If PlotFleName = TempFile End Sub Đối với sự kiện nhân phím enter dé chọn màu : Private Sub danhsachcolor_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then KeyAscii = 0 PlotButton2d_Click End If End Sub Chúng ta nhấn phim Enter khi con trỏ chuột đang nằm ở combobox danhsachcolor đổ thị sẽ được tô màu hiểu trên đó, PlotButton2d_Click tương đương với ta nhân vào nút cũng là đoạn lệnh sử dụng cho các textbox các hệ số và giới hạn tung độ hoành độ khi con trỏ đang năm trong nó khi người dùng bam Enter lập tức đỏ thi sẽ được vẽ và khảo sát như nhắn nút mx2.
SVTH : Lê Văn Doan Trang 23 Chương THỊ : Cơ sở lý luận GVHD : Ts. Nguyễn Hữu Thông 2. Phân tích chỉ tiết hoạt động của từng form : A.