Luận văn Biên soạn phần mềm – soạn thảo nhanh bài tập vật lí 11 (Phần: Điện Từ Học và Quang Hình Học)

biên soạn phần mềm – soạn thảo nhanh bài tập vật lí 11 (Phần: Điện Từ Học & Quang Hình Học) PHẦN MỞ ĐẦU I. Lý do chọn đề tài Chúng ta đang sống trong thời đại khoa học công nghệ phát triển như vũ bão. Công nghệ thông tin đã được ứng dụng rất rộng rãi trong đời sống và sản xuất, vì thế để có thể bắt kịp xu thế của thời đại và hòa mình vào dòng phát triển chung của đất nước, Bộ GD – ĐT nước ta đã và đang tiến hành cải cách nội dung và phương pháp giảng dạy trong nhà trường ở mọi cấp học, mọi ngành học. Bên cạnh việc đổi mới nội dung, đổi mới về phương pháp giảng dạy, việc ứng dụng nghệ thông tin vào công tác giảng dạy là rất quan trọng. Nó giúp người giáo viên có thể kiểm tra, đánh giá chất lượng học tập của học sinh một cách nhanh chóng và chính xác hơn, góp phần nâng cao chất lượng giáo dục. Bằng cách ứng dụng các phần mềm tin học vào việc soạn thảo các bài tập, các đề kiểm tra, như các phần mềm (Novoasoft ScienceWord 5.0; McMIX ). Các phần mềm này nếu được sử dụng một cách có chọn lọc và hiệu quả sẽ mang lại kết quả cao trong việc kiểm tra đánh giá chất lượng học tập của học sinh. Qua khảo sát, các giáo viên Vật Lí – sinh viên khoa sư phạm Vật Lí đều nhất trí cho rằng việc soạn thảo các bài tập định lượng, các đề kiểm tra Vật Lí phổ thông có một số vấn đề sau: - Hiện nay việc kiểm tra đánh giá chất lượng học tập của học sinh Trung Học Phổ Thông chủ yếu dựa trên phương pháp trắc nghiệm khách quan, nên cần soạn thảo rất nhiều bài tập và các đề kiểm tra. - Việc phân loại và hệ thống các bài tập định lượng tiêu biểu của từng chương, từng phần mất rất nhiều thời gian. - Để soạn thảo hoàn chỉnh một đề bài tập định lượng của chương trình Vật Lí phổ thông thường mất rất nhiều công sức. Nhưng trên thực tế thì không phải lúc nào cũng đạt được kết quả như mong muốn. Việc ứng dụng các phần mềm vào việc soạn thảo các bài tập Vật Lí phổ thông chưa phong phú, chưa thực sự có chiều sâu. Một phần là do hạn chế về trình độ tin học của giáo viên, một phần là do cơ sở hạ tầng công nghệ thông tin hiện nay trong trường học chưa tốt, chưa thực sự đáp ứng được yêu cầu của thực tế giảng dạy và nghiên cứu của giáo viên. Không những thế, việc ứng dụng các phần mềm hỗ trợ cho việc soạn thảo các bài tập Vât Lí phổ thông hiện nay nói chung chỉ dừng lại ở mức độ hỗ trợ về vẽ hình và trộn đề trắc nghiệm với những đáp án cố định không thể thay đổi được . Chứ chưa có phần mềm nào có thể thay thế người giáo viên phân loại các bài tập định lượng, tính toán và cho ra kết quả được. Qua thời gian học tập và nghiên cứu ở trường đại học An Giang, được tiếp xúc và làm quen với nhiều phần mềm lập trình khác nhau. Tôi nhận thấy rằng Visual Basic là một trong những phần mềm lập trình có ngôn ngữ khá đơn giản và có khả năng ứng dụng cao. Nó có thể giải quyết được vấn đề soạn thảo nhanh các bài tập Vật Lí phổ thông. Với những lý do trên, tôi quyết định nghiên cứu đề tài:Biên Soạn Phần Mềm – Soạn Thảo Nhanh Bài Tập Vật Lí 11 (Phần: Điện Từ Học & Quang Hình Học).

pdf72 trang | Chia sẻ: maiphuongtl | Lượt xem: 2237 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Luận văn Biên soạn phần mềm – soạn thảo nhanh bài tập vật lí 11 (Phần: Điện Từ Học và Quang Hình Học), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
menu ghi tất cả các đối tượng đã thiết kế. Bạn muốn viết lệnh cho đối tượng nào, bạn chỉ cần di chuyển vệt sáng đến tên của đối tượng đó và click chuột vào. Hình 6: Cửa sổ Code với hộp Combobox bên trái Hộp bên phải ghi tất cả các sự kiện (còn gọi là biến cố) của từng đối tượng, sẽ có rất nhiều biến cố. Bạn nhấp chuột vào mũi tên bên phải thì sẽ xuất hiện ra một menu sự kiện, bạn chọn sự kiện nào thì lick chuột vào sự kiện đó. 30 Hình 7: Cửa sổ Code với hộp Combobox bên phải Giả sử với đối tượng Command1, ta chọn sự kiện click, lúc đó cửa sổ lệnh có hai dòng lệnh sau: Private Sub Command1_Click() ………………………………… ………………………………… End Sub Hai dòng lệnh này là hai dòng lệnh đầu và cuối của thủ tục, bạn viết lệnh cho thủ tục ở giữa hai dòng lệnh này. Bước viết lệnh là bước quan trọng hơn cả bởi vì nó là yếu tố quyết định chương trình của bạn chạy đúng theo yêu cầu hay không, có tối ưu hay không... 3.1 Biến, kiểu và cách khai báo 3.1.1. Biến Tương tự như các ngôn ngữ lập trình khác, biến là một yếu tố không thể thiếu. Biến như là một phần của bộ nhớ, muốn sử dụng phải khai báo. Tên biến không dài quá 255 kí tự, có tính gợi nhớ, đừng dùng nhữ kí hiệu, tránh trùng với từ khóa của Visual Basic. 3.1.2. Sau đây là một số kiểu biến được sử dụng trong đề tài - String: là dữ liệu kiểu chuỗi, khoảng giá trị có thể lên đến hai tỉ kí tự. Nhận biết biến này bằng tiếp vị ngữ $. - Double: là các số có dấu chấm thập phân. Nhận biết bằng # ở cuối. Khoảng giá trị âm từ -1,79769313486231E308 đến -4,94065645841247E-324, giá trị dương từ 4,94065645841247E-324 đến 1,79769313486231E308. - Bolean: Biến logic có giá trị True hay False dùng để gán các giá trị hay sử dụng trong các câu lệnh điều kiện. 3.1.3. Cách khai báo các biến Dim AS 31 3.2. Các phép toán trong Visual Basic đã được sử dụng trong đề tài 3.2.1 Các toán tử trong Visual Basic - Toán tử ^ : Dùng để tính lũy thừa. - Toán tử * : Dùng để nhân hai số hạng. - Toán tử chia \ : Chia hai số lấy phần nguyên. - Toán tử chia / : Chia hai số cho nhau và trả về giá trị thực. - Mod : Chia và lấy phần dư. - Tóa tử + : Cộng hai số hạng. - Toán tử - : Trừ hai toán hạng. 3.2.2. Thứ tự ưu tiên trong các phép toán - Phép tính lũy thừa. - Đổi một số thành số âm. - Nhân và chia. - Chia số nguyên. - Chia lấy số dư Mod. - Cộng và trừ. 3.2.3. Toán tử gán: a = b 3.2.4. Toán tử quan hệ Kí hiệu Ý nghĩa Ví dụ = Bằng nhau A = B < Nhỏ hơn A < B <= Nhỏ hơn hoặc bằng A <= B Khác nhau A B > Lớn hơn A > B >= Lớn hơn hoặc bằng A >= B 3.2.5. Toán tử logic Toán tử AND, OR 3.3. Cấu trúc điều khiển của Visual Basic được sử dụng trong đề tài Cấu trúc lựa chọn IF 32 Cấu trúc lựa chọn IF cho phép ta rẽ chương trình làm hai nhánh, nếu bạn muốn rẽ nhiều nhánh thì có thể sử dụng cấu trúc IF lồng nhau. Cấu trúc này có hai dạng: - Cấu trúc IF không có ElSE IF Then …………………………… …………………………… End IF - Cấu trúc IF có ELSE IF Then ……………………………… ELSE ……………………………… End IF 3.4. Một số lệnh của Visual Basic được sử dụng trong đề tài 3.4.1. Lệnh End Dùng để chấm dứt chương trình đang chạy, khi lệnh này thực hiện thì các cửa sổ của chương trình sẽ đóng lại và giải phóng khỏi bộ nhớ. Lệnh này thường sử dụng cho nút lệnh có tên Exit với biến cố Click. 3.4.2. Lệnh Exit Sub Lệnh này dùng để thoát khỏi vòng lặp Sub. 3.4.3. Lệnh Beep Lệnh này dùng để phát ra tiếng Beep. 3.4.4. Lệnh Load Lệnh này dùng để nạp một Form vào bộ nhớ. Cú pháp: Load tên Form Ví dụ: Load Form1 Form1.show 3.5. Một số hàm của Visual Basic được sử dụng trong đề tài 3.5.1. Hàm Abs (Number) Hàm này trả về một số là giá trị tuyệt đối của Number. 3.5.2. Hàm Sin (Number As Double) Tính sin của một góc. 3.5.3. Hàm Cos (Number As Double) Tính cos của một góc. 3.5.4. Hàm Tan (Number As Double) 33 Tính Tan của một góc. 3.5.5. Hàm Atn (Number As Double) Tính Atn của một góc. 3.5.6. Hàm Sqr (Number) Tính căn bậc hai của một số. 3.5.7. Hàm Exp (Number) Tính e mũ của một số. 3.5.8. Hàm Val (String) Trả về một số thực tương ứng với chuỗi string. String phải là một chuỗi các kí tự hợp lệ. - Giá trị của hàm là 0 nếu chuổi có kí tự đầu là kí tự. - Giá trị của hàm một số nếu chuỗi đó là toàn là các kí tự số. Nếu các kí tự số viết cách nhau thì hàm này sẽ cắt bỏ các khoảng trắng và cho trả về giá trị bằng với dãy này. [6] IV. Ví dụ: Chương Trình Giải Phương Trình Bậc Nhất 0ax b+ = Giải phương trình 0ax b+ = với yêu cầu nhập hệ số a, b. 1. Thiết kế giao diên Hình 8: Cửa sổ thiết kế Các đối tượng: - Form. - Label. - Textbox. 34 - Commandbutton. Các thuộc tính: Đối tượng Thuộc tính Giải trị Form Name Caption Form1 Giải phương trình bậc nhất 0ax b+ = Label Name Caption Font Fontsize Label1 a = VNI – Time 20 Label Name Caption Font Fontsize Label2 b = VNI – Time 20 Label Name Caption Font Fontsize Label3 x = VNI – Time 20 Textbox Name Caption Text2 “ “ Textbox Name Caption Locked Text3 “ “ True Textbox Name Caption Locked Text4 “ “ True Command button Name Caption Command1 Kết Quả Command button Name Caption Command2 Tiếp Tục Command button Name Command1 35 Caption Kết Thúc 2. Viết code cho chương trình - Viết mã cho thủ tục Command1_click() Private Sub Command1_Click() Dim a As Integer Dim b As Integer Dim x As Integer a = Val(Text1.Text) b = Val(Text2.Text) If Text1.Text = "" Or Text2.Text = "" Then Text4.Text = " Hay Nhap Du Cac Bien So " Exit Sub End If If a = 0 Then Text4.Text = " Hay Nhap a khac 0 " Exit Sub End If x = -b / a Text3.Text = x Label3.Visible = True Text3.Visible = True Text4.Visible = False End Sub - Viết mã cho thủ tục Command2_click() Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Label3.Visible = False Text4.Visible = True End Sub - Viết mã cho thủ tục Command3_click() Private Sub Command3_Click() End End Sub - Viết mã cho thủ tục Text1 hoặc Text2 Private Sub text1_KeyPress(KeyAscii As Integer) 36 Dim Tmp As String Tmp = Text1.Text Select Case Chr$(KeyAscii) Case "0" To "9", Chr$(8) Case "-" If InStr(1, Tmp, "-") = 0 Then If Text1.SelStart > 0 Then KeyAscii = 0 End If Else KeyAscii = 0 End If Case "." If InStr(1, Tmp, ".") > 0 Then KeyAscii = 0 End If Case Else KeyAscii = 0 End Select End Sub Với câu lệnh này thì chỉ cho phép người dùng gõ số vào TextBox. Nó chỉ cho phép nhập ký tự số, dấu âm (-) và dấu thập phân (.) trong KeyPress Event. - Kết quả như sau: 37 Hình 9: Cửa sổ kết quả. Chương II: SỬ DỤNG VISUAL BASIC ĐỂ HỖ TRỢ GIẢI MỘT SỐ BÀI TẬP TIÊU BIỀU VẬT LÝ 11 (PHẦN: ĐIỆN TỬ HỌC VÀ QUANG HÌNH HỌC) I. Chuẩn bị 1. Soạn thảo một số bài tập định lượng tiêu biểu của Vật Lí 11 (phần: Điện Từ Học & Quang Hình Học) 2. Chuyển các bài tập nói trên sang File hình (.jpg) Cách làm 2.1. Chuyển tất cả các bài tập đã soạn bằng file Word sang file PDF. Bằng cách sử dụng chương trình Foxit Reader 2.2. Gọi chương trinh Foxit Reader 2.2 lên, chọn file open, chọn đường dẫn đến file Word cần chuyển và save vào thư mục lưu trữ. 38 Hình 10: Chuyển dữ liệu từ File Word sang File PDF 2.2. Tiếp tục chuyển tất cả các bài tập từ file PDF sang File hình (.jpg). Bằng cách sử dụng chương trình Corel PHOTO-PAINT X3. Mở File PDF cần chuyển. Trên thanh công cụ của Foxit Reader 2.2, chọn công cụ snapshot (biểu tượng là chiếc máy ảnh) đánh dấu khối văn bản sẽ chuyển sang File hình. Hình 11: Đánh dấu đoạn văn bản cần chuyển 39 Mở chương trình Corel PHOTO-PAINT X3, chọn File – New from clipboard, thì trên giao diện hiện lên khối văn bản cần chuyển, sau đó chọn File export để save dưới dạng File hình (.jpg). Hình 12: Khối văn bản cần chuyển trên giao diện Corel PHOTO-PAINT X3 Hình 13: Khối văn bản sau khi chuyển sang file hình (.jpg). Sau đó Save những file hình đó với tên gợi nhớ ứng với Chương Trình & Chương & Bài Tập. Ví dụ : bài 4 – chương 7 – chương trình lớp 11, sẽ lưu với tên 110704.jpg. II. Thiết kế giao diện Như chúng ta đã thấy các bài tập được chọn khá đa dạng, mỗi bài một đặc điểm không bài nào giống bài nào. Nhưng chúng có một điểm chung là không có bài nào có hơn sáu dữ kiện và hơn ba kết quả. Do đó tôi đã quyết định thiết kế giao diện có dạng như sau: Hình 14: Thiết kế giao diện 40 Số thứ tự Đối tượng Thuộc tính 0 Form ƒ Name: Fast Problem - SoanThaoNhanhBaiTapVatLi11 ƒ BorderStyle: 3-Fixed Dialod ƒ Caption: Chuong Trinh Soan Thao Nhanh Bai Tap Vat Li 11 (Tu & Quang) ƒ Font: VNI - Times ; Size: 10 ƒ Picture: giaodien ƒ Height: 6000 ƒ Width: 12000 1 Label ƒ Name: Label1 ƒ Alignment: 0 – Left Justify ƒ Backtyle: 0 - Transparent ƒ Caption: Chương Trình ƒ Font: VIN – Times ; Size: 12 ƒ Visible: True 2 Combobox ƒ Name: Combo1 ƒ Appearance: 1- 3D ƒ BackColor: Window Background ƒ Enabled: True ƒ Font: VNI - Times ; Size: 12 ƒ Visible: True 3 Image ƒ Name: debai ƒ BorderStyle: 0 – None 4 Timer ƒ Name: Timer1 ƒ Enabled: True 5 Label ƒ Name: S_An_3 ƒ Alignment: 0 – Left Justify ƒ Backtyle: 0 - Transparent ƒ Caption: D ƒ Font: Symbol ; Size: 12 ƒ Visible: False 41 6 Text ƒ Name: An_3 ƒ Alignment: 2 – Center ƒ Appearance: 0 – Flat ƒ Enabled: True ƒ Font: VNI – Times ; Size: 12 ƒ Locked: True ƒ Text: ƒ Visibled: False 7 Label ƒ Name: Label4 ƒ Alignment: 0 – Left Justify ƒ Backtyle: 0 - Transparent ƒ Caption: Bộ môn Vật Lí khoa Sư Phạm trường Đại Học An Giang. Biên soạn: Văn Thành Trọng. GVHD: Giang Văn Phúc. ƒ Font: Symbol ; Size: 12 ƒ ForeColor: Applicaption Workspace 8 Text ƒ Name: GT_an_3 ƒ Alignment: 0 – Left Justify ƒ Appearance: 1 – 3D ƒ BorderStyle: 1 – Fixed Single ƒ Font: VNI – Times ; Size: 12 ƒ Locked: True ƒ Text: ƒ Visibled: False 9 Command ƒ Name: tieptuc ƒ Captoin: Tiếp Tục ƒ Enabled: True ƒ Font: VNI – Times Size:12 ƒ Visibled: False Sau khi thiết kế hoàn tất thì khi chạy chương trình sẽ có dạng như hình vẽ: 42 Hình 15: Giao diện của chương trình khi chạy 1 Click vào combobox này để chọn chương trình (Lớp 10; Lớp 11; Lớp 12) 2 Click vào combobox này để chọn chương (1; 2; 3; 4; 5; 6; 7; 8) 3 Click vào combobox này để chọn bài tập (tùy theo từng chương mà số lượng bài tập khác nhau, nhiều nhất là 24 bài và ít nhất là 9 bài). 4 Nơi hiện đề bài và đáp án mẫu (ứng với Chương Trình; Chương; Bài Tập mà người sử dụng đã chọn). 5 Nơi hiện lên các ô nhập liệu (ứng với Chương Trình; Chương; Bài Tập mà người sử dụng đã chọn). 6 Nơi hiện lên kết quả tính toán từ các giá trị mà ta đã nhập (ứng với Chương Trình; Chương; Bài Tập mà ta đã chọn). Khi đã chọn Chương Trình; Chương; Bài Tập thì giao diện của chương trình sẽ có dạng: Hình 16: Giao diện của chương trình khi chọn Chương Trình Lớp 11; Chương 5; Bài Tập 18 43 Hình 17: Giao diện của chương trình khi chọn Chương Trình Lớp 11; Chương 7; Bài Tập 23 III. Viết Code cho chương trình 1. Code của Combo1 Private Sub Combo1_Click() If Combo1.ListIndex = 1 Then Combo2.Visible = True Combo2.Enabled = True End If If Combo1.ListIndex = 0 Then Combo2.Visible = False Combo2.Enabled = False Combo3.Visible = False Combo3.Enabled = False Combo4.Visible = False Combo4.Enabled = False Combo5.Visible = False Combo5.Enabled = False Combo6.Visible = False Combo6.Enabled = False Combo7.Visible = False Combo7.Enabled = False Set debai = LoadPicture("bia.jpg") S_bien_1.Visible = False Bien_1.Visible = False GTbien_1.Visible = False donvi_bien_1.Visible = False S_Bien_2.Visible = False Bien_2.Visible = False GTBien_2.Visible = False donvi_bien_2.Visible = False S_Bien_3.Visible = False Bien_3.Visible = False GTBien_3.Visible = False donvi_bien_3.Visible = False S_Bien_4.Visible = False Bien_4.Visible = False GTBien_4.Visible = False donvi_bien_4.Visible = False 44 S_Bien_5.Visible = False Bien_5.Visible = False GTBien_5.Visible = False donvi_bien_5.Visible = False S_Bien_6.Visible = False Bien_6.Visible = False GTBien_6.Visible = False donvi_bien_6.Visible = False S_An_1.Visible = False An_1.Visible = False GTAn_1.Visible = False donvi_an_1.Visible = False S_An_2(0).Visible = False An_2.Visible = False GTAn_2.Visible = False donvi_an_2.Visible = False S_An_3(1).Visible = False An_3.Visible = False GTAn_3.Visible = False donvi_an_3.Visible = False Giai_4.Visible = False Giai_5.Visible = False Giai_6.Visible = False Giai_7.Visible = False Giai_8.Visible = False Dim trong_1 As Boolean trong_1 = MsgBox("Chuong Trinh Chua Cap Nhat", vbOKOnly, "Thong Bao") Exit Sub End If If Combo1.ListIndex = 2 Then Combo2.Visible = False Combo2.Enabled = False Combo3.Visible = False Combo3.Enabled = False Combo4.Visible = False Combo4.Enabled = False Combo5.Visible = False Combo5.Enabled = False Combo6.Visible = False Combo6.Enabled = False Combo7.Visible = False Combo7.Enabled = False Set debai = LoadPicture("bia.jpg") S_bien_1.Visible = False Bien_1.Visible = False GTbien_1.Visible = False donvi_bien_1.Visible = False S_Bien_2.Visible = False Bien_2.Visible = False GTBien_2.Visible = False donvi_bien_2.Visible = False S_Bien_3.Visible = False Bien_3.Visible = False GTBien_3.Visible = False donvi_bien_3.Visible = False S_Bien_4.Visible = False 45 Bien_4.Visible = False GTBien_4.Visible = False donvi_bien_4.Visible = False S_Bien_5.Visible = False Bien_5.Visible = False GTBien_5.Visible = False donvi_bien_5.Visible = False S_Bien_6.Visible = False Bien_6.Visible = False GTBien_6.Visible = False donvi_bien_6.Visible = False S_An_1.Visible = False An_1.Visible = False GTAn_1.Visible = False donvi_an_1.Visible = False S_An_2(0).Visible = False An_2.Visible = False GTAn_2.Visible = False donvi_an_2.Visible = False S_An_3(1).Visible = False An_3.Visible = False GTAn_3.Visible = False donvi_an_3.Visible = False Giai_4.Visible = False Giai_5.Visible = False Giai_6.Visible = False Giai_7.Visible = False Giai_8.Visible = False Dim trong_2 As Boolean trong_2 = MsgBox("Chuong Trinh Chua Cap Nhat", vbOKOnly, "Thong Bao") Exit Sub End If Set debai = LoadPicture("bia.jpg") End Sub Nội dung Code viết cho Combo1: Nếu Combo1 được Click và Chương Trình được chọn là Lớp 10 hoặc Lớp 12, thì hiện lên bản thông báo “Chương trình chưa cập nhật” khi đó combo (Chương) và combo (Bài Tập) sẽ bị ẩn đi. Ngược lại nếu Chương Trình được chọn là Lớp 11 thì combo (Chương) sẽ được hiện lên (cho phép lựa chọn Chương). 2. Code của Combo2 Private Sub Combo2_click() GTbien_1.Text = "" GTBien_2.Text = "" GTBien_3.Text = "" GTBien_4.Text = "" GTBien_5.Text = "" GTBien_6.Text = "" GTAn_1.Text = "" GTAn_2.Text = "" 46 GTAn_3.Text = "" If Combo2.ListIndex = 0 Or Combo2.ListIndex = 1 Or Combo2.ListIndex = 2 Then Combo1.Visible = True Combo1.Enabled = True Combo3.Visible = False Combo3.Enabled = False Combo4.Visible = False Combo4.Enabled = False Combo5.Visible = False Combo5.Enabled = False Combo6.Visible = False Combo6.Enabled = False Combo7.Visible = False Combo7.Enabled = False Set debai = LoadPicture("bia.jpg") S_bien_1.Visible = False Bien_1.Visible = False GTbien_1.Visible = False donvi_bien_1.Visible = False S_Bien_2.Visible = False Bien_2.Visible = False GTBien_2.Visible = False donvi_bien_2.Visible = False S_Bien_3.Visible = False Bien_3.Visible = False GTBien_3.Visible = False donvi_bien_3.Visible = False S_Bien_4.Visible = False Bien_4.Visible = False GTBien_4.Visible = False donvi_bien_4.Visible = False S_Bien_5.Visible = False Bien_5.Visible = False GTBien_5.Visible = False donvi_bien_5.Visible = False S_Bien_6.Visible = False Bien_6.Visible = False GTBien_6.Visible = False donvi_bien_6.Visible = False S_An_1.Visible = False An_1.Visible = False GTAn_1.Visible = False donvi_an_1.Visible = False S_An_2(0).Visible = False An_2.Visible = False GTAn_2.Visible = False donvi_an_2.Visible = False S_An_3(1).Visible = False An_3.Visible = False GTAn_3.Visible = False donvi_an_3.Visible = False Giai_4.Visible = False Giai_5.Visible = False Giai_6.Visible = False Giai_7.Visible = False Giai_8.Visible = False Dim trong_3 As Boolean 47 trong_3 = MsgBox("Chuong Trinh Chua Cap Nhat", vbOKOnly, "Thong Bao") Exit Sub Combo2.Text = "" End If If Combo2.ListIndex = 3 Then Combo3.Enabled = True Combo4.Enabled = False Combo5.Enabled = False Combo6.Enabled = False Combo7.Enabled = False Combo3.Visible = True Combo4.Visible = False Combo5.Visible = False Combo6.Visible = False Combo7.Visible = False Giai_4.Visible = True Giai_5.Visible = False Giai_6.Visible = False Giai_7.Visible = False Giai_8.Visible = False End If If Combo2.ListIndex = 4 Then Combo4.Enabled = True Combo3.Enabled = False Combo5.Enabled = False Combo6.Enabled = False Combo7.Enabled = False Combo4.Visible = True Combo3.Visible = False Combo5.Visible = False Combo6.Visible = False Combo7.Visible = False Giai_4.Visible = False Giai_5.Visible = True Giai_6.Visible = False Giai_7.Visible = False Giai_8.Visible = False End If If Combo2.ListIndex = 5 Then Combo5.Enabled = True Combo4.Enabled = False Combo3.Enabled = False Combo6.Enabled = False Combo7.Enabled = False Combo5.Visible = True Combo4.Visible = False Combo3.Visible = False Combo6.Visible = False Combo7.Visible = False Giai_4.Visible = False Giai_5.Visible = False Giai_6.Visible = True Giai_7.Visible = False 48 Giai_8.Visible = False End If If Combo2.ListIndex = 6 Then Combo6.Enabled = True Combo4.Enabled = False Combo5.Enabled = False Combo3.Enabled = False Combo7.Visible = False Combo6.Visible = True Combo4.Visible = False Combo5.Visible = False Combo3.Visible = False Combo7.Visible = False Giai_4.Visible = False Giai_5.Visible = False Giai_6.Visible = False Giai_7.Visible = True Giai_8.Visible = False End If If Combo2.ListIndex = 7 Then Combo7.Enabled = True Combo4.Enabled = False Combo5.Enabled = False Combo3.Enabled = False Combo6.Visible = False Combo7.Visible = True Combo4.Visible = False Combo5.Visible = False Combo3.Visible = False Combo6.Visible = False Giai_4.Visible = False Giai_5.Visible = False Giai_6.Visible = False Giai_7.Visible = False Giai_8.Visible = True End If If Combo2.ListIndex = 3 Then chuong = "04" If Combo2.ListIndex = 4 Then chuong = "05" If Combo2.ListIndex = 5 Then chuong = "06" If Combo2.ListIndex = 6 Then chuong = "07" If Combo2.ListIndex = 7 Then chuong = "08" Set debai = LoadPicture("bia.jpg") End Sub Nội dung Code viết cho Combo2: Nếu Combo2 được Click và Chương được chọn là 1 ; 2 ; 3, thì chương trình sẽ hiện lên bản thông báo “Chương trình chưa cập nhật” và combo (Bài Tập) bị ẩn đi. Nếu Chương được chọn là 4; 5; 6; 7; 8 thì combo (Bài Tập) được hiện lên (cho phép lựa chọn Bài Tập). Và chương trình sẽ tự ghi nhận biến Chương, biến này tương ứng với giá trị chọn ở Combo2. 49 3. Code của Combo (Bài Tập) Private Sub Combo3_Click() GTbien_1.Text = "" GTBien_2.Text = "" GTBien_3.Text = "" GTBien_4.Text = "" GTBien_5.Text = "" GTBien_6.Text = "" GTAn_1.Text = "" GTAn_2.Text = "" GTAn_3.Text = "" If Combo3.ListIndex = 0 Then bai_3 = "01" If Combo3.ListIndex = 1 Then bai_3 = "02" If Combo3.ListIndex = 2 Then bai_3 = "03" If Combo3.ListIndex = 3 Then bai_3 = "04" If Combo3.ListIndex = 4 Then bai_3 = "05" If Combo3.ListIndex = 5 Then bai_3 = "06" If Combo3.ListIndex = 6 Then bai_3 = "07" If Combo3.ListIndex = 7 Then bai_3 = "08" If Combo3.ListIndex = 8 Then bai_3 = "09" If Combo3.ListIndex = 9 Then bai_3 = "10" If Combo3.ListIndex = 10 Then bai_3 = "11" If Combo3.ListIndex = 11 Then bai_3 = "12" If Combo3.ListIndex = 12 Then bai_3 = "13" If Combo3.ListIndex = 13 Then bai_3 = "14" If Combo3.ListIndex = 14 Then bai_3 = "15" If Combo3.ListIndex = 15 Then bai_3 = "16" If Combo3.ListIndex = 16 Then bai_3 = "17" If Combo3.ListIndex = 17 Then bai_3 = "18" If Combo3.ListIndex = 18 Then bai_3 = "19" If Combo3.ListIndex = 19 Then bai_3 = "20" taptin_3 = chuong & bai_3 & ".jpg" Set cau_3 = LoadPicture(taptin_3) Set debai = cau_3 tieptuc.Visible = False Nội dung Code viết cho Combo (Bài Tập): Khi Combo (Bài Tập) được chọn. Thì chương trình sẽ tự ghi nhận thêm một biến nữa là biến Bai, biến này có giá trị tương ứng với giá trị hiện trong Combo (Bài Tập). Chương trình sẽ tự cập nhật biến: TapTin = Chuong & Bai & “.jpg” Tiếp tục thực hiện lệnh: Set Cau = LoadPicture(TapTin) 4. Code của Image: Nội dung Code viết cho Image: Sau khi đã chọn Chương Trình & Chương & Bài Tập thì chương trình tự cập nhật biến Cau và biến DeBai. Chương trình tiếp tục thực hiện lệnh: Set Cau= LoadPicture(TapTin) Set DeBai = Cau Khi đó Image (DeBai) sẽ tự động load lên bài tập ứng với Chương Trình & Chương & Bài Tập đã chọn trong chương trình. 50 Đồng thời các dữ kiện và các ô text nhập giá trị của dữ kiện cũng xuất Form tương ứng với Chương Trình & Chương & Bài Tập mà người sử dụng đã chọn. Hình 18: Giao diện chương trình sau khi đã chọn Chương Trình & Chương & Bài Tập 5. Code của nút Giải Nội dung Code viết cho Command (Giải): Trong nút Giải chúng tôi sẽ viết điều kiện và cách giải cho từng Bài Tập ứng với từng Chương và từng Chương Trình. Sau khi nút Giải được Click, thì chương trình tự nhận diện xem đấy là Bài Tập nào? Thuộc Chương nào? Của Chương Trình nào? Và tiến hành kiểm tra xem điều kiện của bài có thỏa hay không, nếu không thỏa thì hiện thông báo yêu cầu người sử dụng nhập lại giá trị của các biến cho đúng với yêu của cầu bài, nếu đúng thì tự động giải và xuất kết quả ra tại các ô text ẩn số. Ví dụ: code viết cho bài 0717 If taptin_6 = "0717.jpg" Then Bien_1.FontName = "VNI-Times" donvi_bien_1.FontName = "VNI-Times" Bien_2.FontName = "VNI-Times" donvi_bien_2.FontName = "VNI-Times" Bien_3.FontName = "VNI-Times" donvi_bien_3.FontName = "VNI-Times" An_1.FontName = "VNI-Times" donvi_an_1.FontName = "VNI-Times" An_2.FontName = "VNI-Times" donvi_an_2.FontName = "VNI-Times" Bien_1.Visible = True GTbien_1.Visible = True donvi_bien_1.Visible = True Bien_2.Visible = True GTBien_2.Visible = True donvi_bien_2.Visible = True Bien_3.Visible = True GTBien_3.Visible = True donvi_bien_3.Visible = True Bien_4.Visible = False GTBien_4.Visible = False donvi_bien_4.Visible = False 51 Bien_5.Visible = False GTBien_5.Visible = False donvi_bien_5.Visible = False Bien_6.Visible = False GTBien_6.Visible = False donvi_bien_6.Visible = False An_1.Visible = True GTAn_1.Visible = False donvi_an_1.Visible = True An_2.Visible = True GTAn_2.Visible = False donvi_an_2.Visible = True An_3.Visible = False GTAn_3.Visible = False donvi_an_3.Visible = False S_bien_1.Visible = False S_Bien_2.Visible = False S_Bien_3.Visible = False S_Bien_4.Visible = False S_Bien_5.Visible = False S_Bien_6.Visible = False S_An_1.Visible = False S_An_2(0).Visible = False S_An_3(1).Visible = False Bien_1.Text = "OCv =" Bien_2.Text = "f =" Bien_3.Text = "OM =" An_1.Text = "l1 =" An_2.Text = "l2 =" donvi_bien_1.Text = "(cm)" donvi_bien_2.Text = "(cm)" donvi_bien_3.Text = "(cm)" donvi_an_1.Text = "(cm)" donvi_an_2.Text = "(cm)" end if If taptin_6 = "0717.jpg" Then If GTbien_1.Text = "" Or GTBien_2 = "" Or GTBien_3.Text = "" Then Dim tb_717 As Boolean tb_717 = MsgBox("hay nhap du cac gia tri vao cac o so lieu", vbOKOnly, "Thong Bao") Exit Sub End If If a_2 >= 0 Then a_2 = -a_2 GTBien_2.Text = a_2 End If If a_1 = a_1 Or a_1 >= a_3 Then Dim thongbao_717 As Boolean thongbao_717 = MsgBox("Hay nhap: 0 < /f1/ < OCv < OM ", vbCritical, "Thong Bao") Exit Sub End If Dim denta As Double 52 denta = (a_1 + a_3) ^ 2 - 4 * (a_2 * (a_3 - a_1) + a_1 * a_3) If denta < 0 Then Dim tb_7171 As Boolean tb_7171 = MsgBox("Phuong trinh vo nghiem", vbOKOnly, "Thong Bao") Exit Sub End If If denta = 0 Then b_1 = (a_1 + a_3) / 2 b_2 = (a_1 + a_3) / 2 If b_1 >= a_3 Then Dim tb_7172 As Boolean tb_7172 = MsgBox("Phuong trinh co nghiem kep. Nhung khong thoa dieu kien: l < OM ", vbOKOnly, "Thong Bao") Exit Sub End If GTAn_1.Text = Val(b_1) GTAn_1.Visible = True GTAn_2.Text = Val(b_2) GTAn_2.Visible = True tieptuc.Visible = True End If If denta > 0 Then b_1 = ((a_3 + a_1) + Sqr(denta)) / 2 b_2 = ((a_3 + a_1) - Sqr(denta)) / 2 If b_1 >= a_3 And b_2 >= a_3 Then Dim tb_7173 As Boolean tb_7173 = MsgBox("Phuong trinh co hai nghiem phan biet. Nhung khong thoa dieu kien: l < OM ", vbOKOnly, "Thong Bao") Exit Sub End If If b_1 >= a_3 Then GTAn_1.Text = "khong thoa dieu kien " GTAn_2.Text = Val(b_2) GTAn_1.Visible = True GTAn_2.Visible = True tieptuc.Visible = True End If If b_2 >= a_3 Then GTAn_2.Text = "khong thoa dieu kien " GTAn_1.Text = Val(b_1) GTAn_1.Visible = True GTAn_2.Visible = True tieptuc.Visible = True End If If b_1 < a_3 And b_2 < a_3 Then GTAn_1.Text = Val(b_1) GTAn_1.Visible = True GTAn_2.Text = Val(b_2) GTAn_2.Visible = True End If tieptuc.Visible = True 53 End If End If Sau khi nút giải được Click thì nút Tiếp Tục sẽ hiện lên. 6. Code của nút Tiếp Tục Private Sub tieptuc_Click() GTbien_1.Text = "" GTBien_2.Text = "" GTBien_3.Text = "" GTBien_4.Text = "" GTBien_5.Text = "" GTBien_6.Text = "" GTAn_1.Text = "" GTAn_2.Text = "" GTAn_3.Text = "" End Sub Nội dung Code viết cho Command (Tiếp Tục): Khi nút Tiếp Tục được Click thì giá trị trong các ô text của biến số bị trả về trống. Để người sử dụng có thể thay đổi giá trị của các biến của bài toán và thu được giá trị của kết quả khác ưng ý hơn. Hình 19: Khi thay đổi giái trị biến thì sẽ cho kết quả có giá trị khác 54 7. Code của nút Kết Thúc Private Sub KetThuc_Click() End End Sub Nội dung Code viết cho Command (Kết Thúc): Khi nút Kết Thúc được click thì chương trình dừng lại và thoát khỏi chương trình. IV. Một số kỹ thuật được áp dụng 1. Một số kỹ thuật được sử dụng để tăng khả năng chịu lỗi cho chương trình Cũng như bất kì phần mềm nào. Thì trong quá trình sử dụng đều phải gặp lỗi trong quá trình chạy, đó có thể là do khách quan lẫn do chủ quan. Do đó khi viết phần mềm này tôi đã hạn chế tối đa các lỗi mà khi chạy thì chương trình có thể gặp phải và tìm cách tăng khả năng chịu lỗi của chương trình, để tránh tình trạng chương trình đang chạy lại bị đứng và bị treo máy. Khi viết chương trình này chúng tôi đã tiến hành khắc phục những lỗi và những hạn chế có thể gặp phải trong quá trình sử dụng : 1.1. Đề bài được load lên không đúng với tùy chọn của người sử dụng Cách khắc phục: Gắn vào Combo1 (Chương Trình) thuộc tính. Nếu như Chương Trình là Lớp 10 hoặc Lớp 12 thì chương trình sẽ hiện lên thông báo: “Chương trình chưa cập nhật” khi đó combo (Chương) và combo (Bài Tập) bị ẩn đi không cho người sử dụng chọn. Chỉ khi nào Chương Trình được chọn là Lớp 11 thì Combo (Chương) mới có thể được chọn. Sau khi Chương được chọn. Nếu Chương được chọn là 1 ; 2 ; 3 thì chương trình sẽ hiện lên thông báo: “Chương trình chưa cập nhật” và combo (BàiTập) bị ẩn đi không cho chọn. Nếu Chương là 4 ; 5 ; 6 ; 7 ; 8 thì Combo3 (Bài Tập) mới có thể được chọn. Sau khi Bài Tập được chọn thì chương trình sẽ tự nhận diện đấy là Bài Tập nào? của Chương nào? Lớp mấy? và Load đúng với bài mà người sử dụng yêu cầu. 1.2. Đứng chương trình khi người sử dụng đánh Text vào các Combo Cách khắc phục: Đặt thuộc tính cho các combo là chỉ được click để lựa chọn và không cho đánh text vào. Thuộc tính: Locked của Combo được chọn bằng True. 1.3.Dữ kiện hiện lên trong chương trình không đúng với dữ kiện của bài mà người sử dụng đã chọn Cách khắc phục: Trước hết cho tất cả các đối tượng (dữ kiện) ẩn đi. Và tại Comand (Giải) ta xác lập cho từng bài tập, ở bài tập nào thì đối tượng (dữ kiện) nào được xuất hiện và hiện lên với dữ kiện gì đều đã được tôi qui định. 55 Ví dụ: Đối với Bài 1 - Chương 4 thì tại Comand (Gải) sẽ được nhập code như sau If taptin_3 = "0401.jpg" Then Bien_1.Text = "B=" Bien_2.Text = "I=" Bien_3.Text = "l=" An_1.Text = "F=" donvi_bien_1.Text = "(T)" donvi_bien_2.Text = "(A)" donvi_bien_3.Text = "(m)" donvi_an_1.Text = "(N)" Hình 20: Các dữ kiện được hiện lên theo yêu cầu của bài Ngoài ra do số bài tập quá nhiều, mỗi bài có các dữ kiện khác nhau. Do đó khi chuyển từ bài này sang bài kia thì xuất hiện trường hợp Font dữ kiện của bài trước vẫn còn áp dụng cho bài sau. Trong trường hợp này thì chúng tôi đã khắc phục bằng cách, xác lập thuộc tính Font cho từng dữ kiện tương ứng với từng bài tập, mà không sử dụng chung một Font như các chương trình thử nghiệm trước đây. Ví dụ: Đối với Bài 3 và Bài 4 - Chương 4 thì tại Comand (Gải) sẽ được nhập code như sau: If taptin_3 = "0403.jpg" Then Bien_2.FontName = "symbol" Bien_1.FontName = "VNI-Times" donvi_bien_1.FontName = "VNI-Times" donvi_bien_2.FontName = "VNI-Times" Bien_3.FontName = "VNI-Times" donvi_bien_3.FontName = "VNI-Times" Bien_4.FontName = "VNI-Times" donvi_bien_4.FontName = "VNI-Times" An_1.FontName = "VNI-Times" donvi_an_1.FontName = "VNI-Times" If taptin_3 = "0404.jpg" Then 56 Bien_1.FontName = "symbol" donvi_bien_2.FontName = "symbol" donvi_bien_3.FontName = "Symbol" Bien_6.FontName = "symbol" donvi_bien_1.FontName = "VNI-Times" Bien_2.FontName = "VNI-Times" Bien_3.FontName = "VNI-Times" Bien_4.FontName = "VNI-Times" donvi_bien_4.FontName = "VNI-Times" Bien_5.FontName = "VNI-Times" donvi_bien_5.FontName = "VNI-Times" donvi_bien_6.FontName = "VNI-Times" An_1.FontName = "VNI-Times" donvi_an_1.FontName = "VNI-Times" Khi đó Font được sử dụng cho dữ kiện của bài 0403 sẽ không còn được sử dụng trong bài 0404. 1.4. Lỗi do nười sử dụng nhập giá trị không phải là số vào các ô text Cách khắc phục: Gán cho các ô nhập liệu đoạn code. Đoạn code này để khống chế chỉ cho người sử dụng nhập số cho TextBox. Nó chỉ cho phép nhập ký tự số, dấu âm (-) và dấu thập phân (.) trong KeyPress Event mà thôi. Private Sub Text1_KeyPress(KeyAscii As Integer) Dim Tmp As String Tmp = Text1.Text Select Case Chr$(KeyAscii) Case "0" To "9", Chr$(8) Case "-" If InStr(1, Tmp, "-") = 0 Then If Text1.SelStart > 0 Then KeyAscii = 0 End If Else KeyAscii = 0 End If Case "." If InStr(1, Tmp, ".") > 0 Then KeyAscii = 0 End If Case Else KeyAscii = 0 End Select End Sub [7] 1.5. Chưa nhập đủ các giá trị theo yêu cầu bài mà click Giải Khi không nhập đủ các giá trị vào các ô số liệu mà Click nút Giải (yêu cầu chương trình giải). Ví dụ: bài 110404 cần đủ giá trị của 6 biến thì mới có thể giải được. 57 Nhưng do chủ quan mà người sử dụng lại nhập số giá trị ít hơn yêu cầu mà Click nút Giải, thì sẽ làm cho chương trình bị đứng và dẫn tới treo máy. Để khắc phục tình trạng này tôi đã đặt điều kiện cho từng bài tại Command (Giải), tương ứng với từng bài thì chương trình sẽ yêu cầu người sử dụng phải nhập đủ các giá trị cần thiết theo yêu cầu của đề bài, nếu không nhập đủ chương trình sẽ hiện lên thông báo: “Hay nhập đủ các biến số vào các ô số liệu”, và chỉ khi nào người sử dụng nhập đủ các giá trị theo yêu cầu thì phép tính mới được tiến hành, do đó sẽ tránh được tình trạng đứng chương trình. Ví dụ: Đối với Bài 4 - Chương 4 thì tại Comand (Gải) sẽ được nhập code như sau If taptin_3 = "0404.jpg" Then If GTbien_1.Text = "" Or GTBien_2.Text = "" Or GTBien_3.Text = "" Or GTBien_4 = "" Or GTBien_5 = "" Or GTBien_6 = "" Then Dim tb_404 As Boolean tb_404 = MsgBox("hay nhap du cac gia tri vao cac o so lieu", vbOKOnly, " Thong Bao ") Exit Sub End If Hình 21: Chương trình báo lỗi khi nhập thiếu dữ kiện Ngoài ra còn những trường hợp giá trị của người sử dụng nhập vào làm cho phép tính dẫn đến kết quả không xác định. Ví dụ: Một ôtô chuyển động thẳng đều trên đoạn đường 100km thì mất 2giờ. Tính tốc độ trung bình của ôtô. Bài toán này có 2 dữ kiện là S ; t và một biến số là v. Tốc độ trung bình: 50 ( / )Sv km h t = = Khi đó sẽ không có chuyện gì xảy ra. Nhưng chẳng may trong trường hợp người sử dụng vô tình nhập giá trị của thời gian bằng không, thì kết quả của phép tính trên sẽ dẫn tới giá trị không xác định, khi đó chương trình không thể xuất kết quả tính toán ra được. Trong trường hợp này chúng tôi đã khắc phục bằng cách. Đối với những bài toán tương tự như vậy, chúng tôi sẽ đặt điều kiện ràng buộc cho bài toán, yêu cầu người sử dụng phải nhập giá trị ở mẫu số khác không. Nếu giá trị ở mẫu số được người sử dụng 58 nhập bằng 0 thì, chương trình sẽ xuất ra thông báo: “Hay nhập giá trị của mẫu số khác 0” và yêu cầu người sử dụng nhập lại cho đến khi thỏa điều kiện trên thì phép tính mới bắt đầu thực hiện. Ví dụ: Đối với Bài 3 - Chương 4 thì tại Comand (Gải) sẽ được nhập code như sau If taptin_3 = "0403.jpg" Then If a_1 = 90 Then Dim thongbao_403 As Boolean thongbao_403 = MsgBox("hay nhap: m > 0 ; I > 0 ; l > 0 ; 0 < anpha < 90 ", vbCritical, " Thong Bao ") Exit Sub End If Hình 22: Chương trình báo lỗi khi giá trị nhập vào làm cho kết quả tính được có giá trị không xác định 1.6. Kết quả tính được không có ý nghĩa Vật Lí. Nếu kết quả tính toán được góc khúc xạ 090r > hay tốc độ 83.10 ( / )v m s> thì điều này hoàn toàn không có ý nghĩa Vật Lí gì cả. Để tránh tình trạng này tôi đã đặt điều kiện ràng buộc cho từng bài tập để yêu cầu người sử dụng phải nhập giá trị dữ liệu theo đúng điều kiện đó thì phép tính mới được thực hiện. Khi đó sẽ đảm bảo được hai yếu tố, nhứ nhất là kết quả tính được thỏa mãn được ý nghĩa Vật Lí, thứ hai là giá trị của các biến được nhập và giá trị của kết quả được xuất ra không trái với ý nghĩa của đề bài. Ví dụ: Đối với Bài 20 - Chương 5 thì tại Comand (Gải) sẽ được nhập code như sau If taptin_6 = "0716.jpg" Then If (a_1 - a_3) * a_2 * 10 ^ -2 - 1 = 0 Then Dim thongbao_716_a As Boolean thongbao_716_a = MsgBox(" d1' = vô cùng . Phep tinh khong thuc hien duoc . Hay nhap lai so lieu khac ", vbCritical, " Thong Bao ") Exit Sub End If 59 Hình 23: Chương trình báo lỗi khi kết quả thu được có giá trị không phù hợp 1.7. Chương trình không chạy khi nhập quá nhiều dữ liệu cho một đối tượng Visua Basic 6.0 là một loại ngôn ngữ lập khá đơn giản và rất thân thiện với người sử dụng, sản phẩm mà nó tạo ra đều có thể chuyển thành File EXE cho nên có thể sử dụng ở bất cứ máy tính nào mà không cần phải có thêm chương trình bổ trợ nào hết. Tuy nhiên vì nó quá đơn giản cho nên ở mỗi đối tượng mức độ xử lý của nó là có giới hạn. Ví dụ trong combo (Bài Tập) khi ta nhập quá nhiều dữ liệu vào thì chương trình sẽ báo lượng thông tin quá lớn chương trình không thể chạy được. Để tránh xảy ra tình trạng này, chúng tôi đã giới hạn lượng dữ liệu nhập cho từng đối tượng. Ví dụ như việc nhập dự liệu của 90 bài tập vào một Combo (Bài Tập) thì tất nhiên chương trình sẽ không chạy được. Và tôi đã khắc phục bằng cách tạo ra nhiều Combo (Bài Tập) mỗi một Combo (Bài Tập) sẽ tương ứng với một Chương. Ví dụ: Combo3 sẽ nhập dữ liệu của các bài tập Chương 4 của chương trình Lớp 11. Combo4 sẽ nhập dữ liệu của các bài tập Chương 5 của chương trình Lớp 11. Combo5 sẽ nhập dữ liệu của các bài tập Chương 6 của chương trình Lớp 11. Combo6 sẽ nhập dữ liệu của các bài tập Chương 7 của chương trình Lớp 11. Combo7 sẽ nhập dữ liệu của các bài tập Chương 8 của chương trình Lớp 11. 1.8. Phép toán của chương trình không áp dụng đúng với bài tập mà người sử dụng đã chọn Cũng tương tự vấn đề trên. Khi chúng ta nhập quá nhiều dữ liệu vào Command (Giải) thì xuất hiện tượng những thuộc tính của Chương trước vẫn còn khi ta chọn Chương sau, và xuất hiện cả trường hợp phép toán của bài này lại đem tính cho bài khác. Để khắc phục vấn đề tôi đã tạo ra nhiều Command (Giải). Mỗi một Command(Giải) tương ứng với một chương. Ví dụ: Command3 (Giải_4) sẽ nhập các điều kiện và cách giải của các bài tập Chương 4 của Chương Trình Lớp 11. 60 Command4 (Giải_5) sẽ nhập các điều kiện và cách giải của các bài tập Chương 5 của Chương Trình Lớp 11. Command5 (Giải_6) sẽ nhập các điều kiện và cách giải của các bài tập Chương 6 của Chương Trình Lớp 11. Command6 (Giải_7) sẽ nhập các điều kiện và cách giải của các bài tập Chương 7 của Chương Trình Lớp 11. Command7 (Giải_8) sẽ nhập các điều kiện và cách giải của các bài tập Chương 8 của Chương Trình Lớp 11. 1.9. Các hàm được dùng trong Visual Basic rất hạn hạn chế Khi đi sâu vào viết thuật toán cho từng bài tập thì lại xuất hiện thêm một vấn đề nữa, đó là công cụ toán học hỗ trợ của Visual Basic rất hạn chế. Ví dụ như: Không hỗ trợ phép tính sinac α hay cosac α mà chỉ hỗ trợ phép tính tanac α mà thôi. Trường hợp này thì tôi đã khắc phục bằng cách chuyển sinac α và cosac α thành tanac α từ đó suy ra giá trị của α . 1.10. Phép toán của chương trình sẽ cho kết quả sai khi máy tính đang sử dụng dùng dấu “,” làm dấu ngăn cách giữa phần nguyên và phần thập phân Chương trình này chỉ hoạt động tốt đối với máy tính sử dụng dấu chấm làm dấu thập phân. Nếu máy tính của bạn đang sử dụng dấu “,” làm dấu phân cách giữa phần thập phân và phần nguyên, thì bạn có thể chỉnh lại bằng cách: Vào Control Panel Š Regional and Language Options Š Customize Š Numbers Š Decimal symbol và thay “ , ” bằng “ . ”. Khi đó chương trình sẽ hoạt động bình thường. 2. Một số kỹ thuật được sử dụng để tăng sự tiện nghi cho người sử dụng 2.1. Kỹ thuật thiết kế giao diện Để cho người sử dụng được tiện lợi trong quá trình soạn thảo các bài tập trên File Word. Giao diện đã được thiết kế chỉ chiếm nửa màn hình máy tính còn nửa màn hình còn lại để người sử dụng có thể gọi Microsoft Word lên để soạn thảo đề bài và điền kết quả vào. 61 Hình 24: Giao diện màn hình máy tính khi sử dụng 2.2. Phím tắt Để việc soạn thảo được nhanh chóng và thuận lợi. Chương trình có hỗ trợ một số phím nóng. - Thay vì click nút Giải thì ta chỉ cần nhấn tổ hợp phím Alt + G - Thao tác click nút Tiếp Tục có thể thay bằng tổ hợp phím Alt + T - Thao tác click nút Kết Thúc có thể thay bằng tổ hợp phím Alt + K Tự quy đổi đơn vị Ví dụ: Trong Visual Basic, thì giá trị nhập vào các ô text phải là giá trị rad. Do đó khi muốn tính sin ; cos hoặc tan của một góc thì người sử dụng phải nhập vào giá trị rad của góc đó, điều này rất bất tiện cho người sử dụng. Do đó trong những trường hợp như vậy, khi viết thuật toán cho chương trình tôi đã tự quy đổi từ rad sang độ để giúp cho người dùng được tiện lợi hơn trong quá trình sử dụng. V. Viết code cho một bài tập mẫu Bài 0501: Tính từ thông gây bởi một từ trường đều B r ( B 0,02 T= ) qua một hình phẳng có chu vi là hình vuông cạnh 10cma = . Véctơ pháp tuyến của hình phẳng hợp với B r một góc 045α = . 1. Bài giải bài 0501 Từ thông qua hình phẳng: 4. .cos 2.10 ( )B S Nα −Φ = = 2. Viết code cho bài 0501 Bài này có ba biến số ( ; ; )B a α , một ẩn số ( )Φ và bốn đơn vị 0( ; ; ; )T cm Wb . 62 Đối với bài này khi viết code cần phải lưu ý: - Sử dụng hàm FontName = "Symbol" để chuyển ký tự “a” thành ký tự “α ” và ký tự “F” thành ký tự “Φ ”. - Quy đổi giá trị của “α ” từ độ sang rad, giá trị của “a” từ cm sang m. - Giá trị của các biến số phải dương, riêng α phải lớn hơn 0 và phải nhỏ hơn 90. - Chương trình phải có thông báo yêu cầu người sử dụng nhập đủ các dữ kiện mới bắt đầu tính toán. Trước tiên ta khai báo cho các dữ kiện: Biến 1 là “B”; Biến 2 là “a”; Biến 3 là “α ”; Đơn vị Biến 1 là (T); Đơn vị Biến 2 là (cm); Đơn vị Biến 3 là (0); Ẩn 1 là “Φ ”; Đơn vị Ẩn 1 (Wb). Các dữ kiện này được chọn Visible = False để xuất hiện trên giao diện của chương trình. Code viết cho command(Bài Tập) If taptin_4 = "0501.jpg" Then Bien_3.FontName = "Symbol" An_1.FontName = "Symbol" Bien_1.FontName = "VNI-Times" donvi_bien_1.FontName = "VNI-Times" Bien_2.FontName = "VNI-Times" donvi_bien_2.FontName = "VNI-Times" donvi_bien_3.FontName = "VNI-Times" donvi_an_1.FontName = "VNI-Times" Bien_1.Visible = True GTbien_1.Visible = True donvi_bien_1.Visible = True Bien_2.Visible = True GTBien_2.Visible = True donvi_bien_2.Visible = True Bien_3.Visible = True GTBien_3.Visible = True donvi_bien_3.Visible = True An_1.Visible = True GTAn_1.Visible = False donvi_an_1.Visible = True Bien_1.Text = "B =" Bien_2.Text = "a =" Bien_3.Text = "a =" An_1.Text = "F =" donvi_bien_1.Text = "(T)" donvi_bien_2.Text = "(cm)" 63 donvi_bien_3.Text = "(0)" donvi_an_1.Text = "(Wb)" End If Code viết cho command(Giải) If taptin_4 = "0501.jpg" Then If GTbien_1.Text = "" Or GTBien_2.Text = "" Or GTBien_3.Text = "" Then Dim tb_501 As Boolean tb_501 = MsgBox("hay nhap du cac gia tri vao cac o so lieu", vbOKOnly, " Thong Bao ") Exit Sub End If If a_1 = 90 Then Dim thongbao_501 As Boolean thongbao_501 = MsgBox("hay nhap: B > 0 ; a > 0 ; 0 < anpha < 90", vbCritical, " Thong Bao ") Exit Sub End If b_1 = a_1 * (a_2 * 10 ^ -2) ^ 2 * Cos(a_3 * 3.14159 / 180) GTAn_1.Text = Val(b_1) GTAn_1.Visible = True tieptuc.Visible = True End If Sau khi viết code hoàn thành, thì khi chạy chương trình để soạn thảo bài 0501 thì chương trình có dạng như sau: Hình 2: Giao diện của chương trình khi soạn thảo bài 0501 64 Phần III: KẾT LUẬN I. Thử nghiệm đánh giá Để viết được phần mềm Soạn Thảo Nhanh Bài Tập Vật Lí 11 (Phần: Điện Từ Học & Quang Hình Học) hỗ trợ cho giáo viên soạn thảo nhanh các bài tập phần: Điện Từ Học và Quang Hình Học cần một sự gia công sư phạm rất cao, đảm bảo một quy trình chặt chẽ và hợp lý. Do đó phải bỏ ra rất nhiều thời gian và công sức, đặc biệt là giai đoạn chuẩn bị. Đồng thời, phải tích cực làm quen, tìm hiểu môi trường lập trình của Visual Basic cũng như các ứng dụng của nó. Điều đó đòi hỏi bản thân tôi phải nổ lực rất nhiều, mà thật sự chỉ có lòng đam mê và tâm quyết mới có thể hoàn thành tốt được công việc này. Sau khi phần mềm được hoàn thành, tôi đã gửi cho một số giáo viên có kinh nghiệm ở trường THPT Chuyên Thoại Ngọc Hầu, trường THPT Mỹ Thới và một số sinh viên xuất sắc khoa Sư Phạm Vật Lí trường Đại Học An Giang để sử dụng thử nghiệm và đánh giá. Hầu hết họ đều đánh giá cao về ý tưởng, chất lượng của sản phẩm. Bản thân tôi đã nhận được nhiều ý kiến phản hồi là nên mở rộng thêm phần nội dung cho toàn bộ chương trình Vật Lí Phổ Thông và cả chương trình Vật Lí Đại Cương của Đại Học chứ không phải chỉ dừng lại ở Vật Lí 11 (phần: Điện Từ học và Quang Hình Học) như hiện nay. Nhưng do kiến thức và thời gian có hạn, chắc chắn phần mềm vẫn còn nhiều khuyết điểm, thiếu sót chưa khắc phục kịp. Rất mong được sự đóng góp ý kiến của thầy, cô và các bạn để phần mềm Soạn Thảo Nhanh Bài Tập Vật Lí 11 (Phần: Điện Từ Học & Quang Hình Học) ngày càng hoàn thiện hơn. II. Tổng kết 1. Ưu điểm của phần mềm - Soạn Thảo Nhanh Bài Tập Vật Lí 11 (Phần: Điện Từ Học & Quang Hình Học) Giúp soạn thảo nhanh các bài tập Vật Lí 11 (Phần: Điện Từ Học và Quang Hình Học) một cách nhanh chóng và chính xác. Hỗ trợ đắc lực cho giáo viên trong việc soạn thảo nhanh các bài tập định lượng và đề kiểm tra, góp phần nâng cao hiệu kiểm tra, đánh giá chất lượng học tập của học sinh. Với một lượng lớn bài tập mà chương trình có thể tạo ra. Nếu được sử dụng tốt. Có thể giúp cho học sinh rèn luyện kỹ năng thực hành giải bài tập, rút ngắn thời gian trong quá trình giải. Điều này là có ích và rất phù hợp với xu thế hiện nay. Xu thế kiểm tra đánh giá chất lượng giáo dục theo phương pháp trắc nghiệm khách quan. Một ưu điểm của việc lập trình trong môi trường Visual Basic 6.0 là phần mềm Soạn Thảo Nhanh Bài Tập Vật Lí 11 (Phần: Điện Từ Học & Quang Hình Học) có thể được biên dịch thành phần mềm hoàn chỉnh, đóng gói gọn gàng và chạy được trên hầu hết các máy tính sử dụng hệ điều hành Window với nhiều phiên bản khác nhau từ windows98 đến windowsxp và nhất là cả các máy có cấu hình thấp. Điều này đã được chúng tôi tính đến trước khi tiến hành nghiên cứu lập trình. Cần phải trình bày thêm là nếu kết hợp với phần mềm Install Creator, sản phẩm sẽ được chuyển thành một tập tin duy nhất tự động cài đặt vào máy mà không cần một can thiệp nào của người dùng khiến cho phần mềm có đủ sức hấp dẫn như các phần mềm thương phẩm trên thị trường. Ngoài ra như đã nói ở trên chương trình đã được thiết kế đặt biệt, giao diện của nó chỉ chiếm phân nửa màn hình monitor còn nửa còn lại để người sử dụng có thể gọi 65 Microsoft Word lên để soạn thảo đề bài (Hình 24). Mà không cần phải chuyển qua chuyển lại giữa Microsoft Word và chương trình soạn thảo, như thế rất bất tiện cho người sử dụng khi soạn thảo lại đề. Chương trình đã chuẩn bị tương đối đầy đủ các dạng bài tập định lượng của chương trình Vật Lí 11 (Phần: Điện Từ Học & Quang Hình Học) dựa trên quan điểm của Sách Giáo Khoa và Sách Bài Tập. Số lượng bài tập được chuẩn bị cho chương trình là khá nhiều. Giao diện được thiết kế đơn giản, ngôn ngữ tiếng Việt nên rất thân thiện với người sử dụng. 2. Khuyết điểm của phần mềm - Soạn Thảo Nhanh Bài Tập Vật Lí 11 (Phần: Điện Từ Học & Quang Hình Học) Chương trình chưa cập nhật đủ phần nội dung. Còn thiếu Chương Trình Vật Lí Lớp 10 ; 12 và cả Chương 1; 2; 3 của Chương Trình Vật Lí 11. Do sự hạn chế về thời gian và trình độ của bản thân nên chương trình chỉ có thể dừng lại ở việc load đề bài lên dưới dạng File hình (.jpg) mà thôi chứ không phải là File PDF hay là File Word. Do đó người sử dụng phải mất thời gian soạn thảo lại đề bài trên MC Word thì mới sử dụng được. Ngoài ra, nội dung và ý nghĩa của từng đề bài là cố định không thay đổi được. Do đó chúng ta chỉ có thể thay đổi được giá trị của các dữ kiện trong đề bài mà thôi. III. Hướng phát triển của đề tài Trong những phiên bản tiếp theo thì chương trình sẽ được bổ sung thêm những phần nội dung còn thiếu. Số lượng bài tập sẽ được cập nhật nhiều hơn và được phân loại tốt hơn. Công cụ hỗ trợ cho chương trình sẽ đa dạng, tiện ích hơn cho người sử dụng. Chúng tôi dự kiến trong những phiên bản kế tiếp, thì đề bài được load lên dưới dạng File PDF hoặc là File Word chứ không phải là File hình như hiện nay. Khi đó người sử dụng có thể copy và paste đề bài được chứ không cần phải type lại đề bài trên Microsoft Word như hiện nay, tạo sự tiện nghi tốt nhất cho người sử dụng. IV. Kiến nghị Đây là phần mềm rất cần thiết. Nó có tác dụng hỗ trợ cho giáo viên soạn thảo nhanh các bài tập Vật Lí (Phần: Điện Từ Học và Quang Hình Học). Mặc dù vẫn còn nhiều thiếu sót cần được bổ sung và hoàn chỉnh. Bản thân tôi rất mong muốn phần mềm này sẽ được tổ chức phổ biến một cách chính qui và nhận được nhiều thông tin phản hồi của người sử dụng, để phần mềm Soạn Thảo Nhanh Bài Tập Vật Lí 11 (Phần: Điện Từ Học & Quang Hình Học) ngày càng hoàn thiện hơn. Ngoài ra trường Đại Học An Giang cần hỗ trợ cho sinh viên các khóa sau thực hiện hết phần nội dung còn lại của chương trình Vật Lí Phổ Thông và cả chương trình Vật Lí Đại Cương (Cơ; Nhiệt; Điện; Quang… ) của Đại Học. Để phần mềm Soạn Thảo Nhanh Bài Tập Vật Lí trở thành phần một phần mềm hoàn chỉnh. Đồng thời, cần phải đưa thêm vào chương trình học của sinh viên khoa sư phạm một học phần nữa đó là học phần Kỹ Năng Lập Trình. Điều này là rất cần thiết và phù hợp với xu thế hiện nay. TÀI LIỆU THAM KHẢO Lương Duyên Bình, Vũ Quang, Nguyễn Xuân Chi, Đàm Trung Đồn, Bùi Quang Hân, Đoàn Duy Hinh. 2007. Vật Lí 11. NXB Giáo Dục. Lương Duyên Bình, Vũ Quang, Nguyễn Xuân Chi, Bùi Quang Hân, Đoàn Duy Hinh. 2007. Bài Tập Vật Lí 11. NXB Giáo Dục. Đặng Thế Khoa. 2003. Giáo Trình Lập Trình Ứng Dụng Visual Basic Tập 1. NXB Đại Học Quốc Gia Thành Phố Hồ Chí Minh. Đặng Thế Khoa, Nguyễn Hữu Thiện. 2003. Giáo Trình Lập Trình Ứng Dụng Visual Basic Tập 2. NXB Đại Học Quốc Gia Thành Phố Hồ Chí Minh. Nguyễn Thế Khôi, Nguyễn Phúc Thuần, Nguyễn Ngọc Hưng, Vũ Thanh Khiết, Phạm Xuân Quế, Phạm Đình Thiết, Nguyễn Trần Trác. 2007. Vật Lí 11 Nâng cao. NXB Giáo Dục. Nguyễn Thế Khôi, Nguyễn Phúc Thuần, Nguyễn Ngọc Hưng, Vũ Thanh Khiết, Phạm Đình Thiết, Nguyễn Trần Trác. 2007. Bài tập Vật Lí 11 Nâng cao. NXB Giáo Dục. [5] [6] Nguyễn Thị Kiều Duyên. 2001. Lập Trình Visual Basic 6.0. NXB Trẻ. Vũ Thị Phát Minh, Châu Văn Tạo, Nguyễn Đăng Khoa, Võ Thị Mai Thuận. 2007. Giải Bài Tập Vật Lí 11 Chương trình Chuẩn. NXB Đại Học Quốc Gia TP. Hồ Chí Minh. Vũ Thị Phát Minh, Châu Văn Tạo, Nguyễn Đăng Khoa, Võ Thị Mai Thuận. 2007. Giải Bài Tập Vật Lí 11 Chương trình Nâng cao. NXB Đại Học Quốc Gia TP. Hồ Chí Minh. [1] [2] [3] [4] Trần Thể. 2007. BÀI TẬP VẬT LÝ PHỔ THÔNG. Lê Văn Thông. 2007. Để Học Tốt Vật Lí 11. NXB Trẻ. Lê Văn Thông. 1997. Phân Loại Và Phương Pháp Giải Bài Tập Vật Lí 11. NXB Trẻ. [7] www.caulacbovb.com

Các file đính kèm theo tài liệu này:

  • pdfBIEN SOAN PHAN MEN SOAN THAO NHANH BAI TAP VAT LY 11.PDF