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).
72 trang |
Chia sẻ: maiphuongtl | Lượt xem: 2237 | Lượt tải: 2
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:
- BIEN SOAN PHAN MEN SOAN THAO NHANH BAI TAP VAT LY 11.PDF