Đứng chương trình khi người sử dụng đánh Text vào các Combo

Một phần của tài liệu KHÓA LUẬN TỐT NGHIỆP " BIÊN SOẠN PHẦN MỀM – SOẠN THẢO NHANH BÀI TẬP VẬT LÍ 11 " doc (Trang 60 - 72)

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 (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.

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: 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 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

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 toán được góc khúc xạ r>900 hay tốc độ v>3.10 ( / )8 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

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ó 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 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ụ 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 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 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 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 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 Br

(B 0, 02 = T) qua một hình phẳng có chu vi là hình vuông 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ài0501

Đố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)"

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 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

Phn III: KT LUN

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

Một phần của tài liệu KHÓA LUẬN TỐT NGHIỆP " BIÊN SOẠN PHẦN MỀM – SOẠN THẢO NHANH BÀI TẬP VẬT LÍ 11 " doc (Trang 60 - 72)