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
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.
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
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 (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.
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 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
Ngồ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 tốn này có 2 dữ kiện là S ; t và một biến số là v.
Tốc độ trung bình: v S 50 (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 tố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
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 <= 0 Or a_2 <= 0 Or a_3 <= 0 Or a_4 <= 0 Or a_2 >= 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 tốn được góc khúc xạ r>900 hay tốc độ v>3.10 ( / )8 m s thì điều này hồn tồ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
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 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ó q đơ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 q 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 tố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.
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ụ tố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 acsinα hay accosα mà chỉ hỗ trợ phép tính tan
ac α mà thơi.
Trường hợp này thì tơi đã khắc phục bằng cách chuyển acsinα và accosα
thành actanα từ đó suy ra giá trị của α.
1.10. Phép tố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 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 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.
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 tố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 Br
(B 0, 02 = T) qua một hình phẳng có chu vi là hình vng cạnh a=10cm. Véctơ pháp tuyến của hình phẳng hợp với Br
một gócα=450.
1. Bài giải bài 0501
Từ thơng qua hình phẳng: Φ =B S. .cosα= 2.10 ( )−4 N
2. Viết code cho bài 0501
Đố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 u cầu người sử dụng nhập đủ các dữ kiện mới bắt đầu tính tố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)"
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 <= 0 Or a_2 <= 0 Or a_3 <= 0 Or a_3 >= 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 hồ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
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ể hồn thành tốt được công việc này.
Sau khi phần mềm được hồ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