Để giải quyết bài toán trên, học viên xây dựng một chƣơng trình thực nghiệm để giới thiệu tới các em học sinh, giúp các em học sinh nắm bắt đƣợc các kiến thức cơ bản về toán Vedic và giải các bài tập tính toán một cách nhanh chóng hơn. Thầy cô giáo có thể soạn các bài kiểm tra trắc nghiệm, nhằm giúp các em có đƣợc tƣ duy tốt hơn.
Ở đây học viên đã sử dụng Visual Basic 10 để làm công cụ hỗ trợ, trƣớc tiên chúng ta tìm hiểu sơ qua về Visual Basic.
Tổng quan về ngôn ngữ lập trình Visual Basic
Visual Basic, con đƣờng nhanh nhất và đơn giản nhất để tạo những ứng dụng cho Microsoft Windows. Bất kể bạn là một nhà chuyên nghiệp hay là một ngƣời mới lập trình Windows, Visual Basic cung cấp cho bạn một tập hợp các công cụ hoàn chỉnh để nhanh chóng phát triển các ứng dụng. Vậy Visual Basic là gì ? Thành phần “Visual” nói đến các phƣơng thức dùng để tạo giao diện đồ họa ngƣời sử dụng (GUI). Thay vì viết những dòng mã để
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
mô tả sự xuất hiện và vị trí của những thành phần giao diện, ta chỉ cần thêm vào những đối tƣợng đã đƣợc định nghĩa trƣớc ở vị trí nào đó trên màn hình. Thành phần “Basic” nói đến ngôn ngữ “BASIC” (Beginners All-Purpose Symbolic Instruction Code) một ngôn ngữ đƣợc dùng bởi nhiều nhà lập trình hơn bất cứ một ngôn ngữ nào khác trong lịch sử máy tính. Visual Basic đƣợc phát triển dần dần dựa trên ngôn ngữ BASIC, và bây giờ chứa đựng hàng trăm điều lệnh, hàm, và từ khóa… có quan hệ trực tiếp với giao diện đồ họa của Windows.
Ngôn ngữ lập trình Visual Basic không chỉ là Visual Basic. Hệ thống lập trình Visual Basic, những ứng dụng bao gồm Microsoft Excel, Microsoft Access, và nhiều ứng dụng Windows khác đều dùng cùng một ngôn ngữ. Mặc dù mục đích của chúng ta là tạo ra những ứng dụng nhỏ cho bản thân hay một nhóm, một hệ thống các công ty lớn, hoặc thậm chí phân phối những ứng dụng ra toàn cầu qua Internet. Visual Basic là cung cụ mà bạn cần.
Những chức năng truy xuất dữ liệu cho phép ta tạo ra những cơ sở dữ liệu, những ứng dụng front-end, và những thành phần phạm vi server-side cho hầu hết các dạng thức cơ sở dữ liệu phổ biến, bao gồm Microsoft SQL Server và những cơ sở dữ liệu mức enterprise khác.
Những kỹ thuật ActiveX cho phép ta dùng những chức năng đƣợc cung cấp từ những ứng dụng khác, nhƣ là chƣơng trình xử lý văn bản Microsoft Word, bảng tính Microsoft Excel và những ứng dụng Windows khác.
Khả năng Internet làm cho nó dễ dàng cung cấp cho việc thêm vào những tài liệu và ứng dụng qua Internet hoặc intranet từ bên trong ứng dụng của bạn, hoặc tạo những ứng dụng Internet server.
Ứng dụng của bạn kết thúc là một file .exe thật sự. Nó dùng một máy ảo Visual Basic để bạn tự do phân phối ứng dụng.
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
Cấu trúc của một ứng dụng Visual Basic
Một ứng dụng thật ra là một tập hợp các chỉ dẫn trực tiếp đến máy tính để thi hành một hay nhiều tác vụ. Cấu trúc của một ứng dụng là phƣơng pháp trong đó các chỉ dẫn đƣợc tổ chức, đó là nơi chỉ dẫn đƣợc lƣu giữ và thi hành những chỉ dẫn trong một trình tự nhất định.
Vì một ứng dụng Visual Basic, trên cơ bản là những đối tƣợng, cấu trúc mã đóng để tƣợng trƣng cho những mô hình vật lý trên màn hình. Bằng việc định nghĩa, những đối tƣợng chứa mã và dữ liệu. Form, cái mà chúng ta nhìn thấy trên màn hình là tƣợng trƣng cho những thuộc tính, quy định cách xuất hiện và cách cƣ xử. Cho mỗi form trong một ứng dụng, có một quan hệ module form (với tên file mở rộng là .frm) dùng để chứa đựng mã của nó.
Mỗi module chứa những thủ tục sự kiện – những đoạn mã, nơi đặt những chỉ dẫn, cái sẽ đƣợc thi hành trong việc đáp ứng những sự kiện chỉ định. Form có thể chứa những điều khiển. Tƣơng ứng với mỗi điều khiển trên form, có một tập hợp những thủ tục sự kiện trong module form đó.
Mã không chỉ quan hệ với một form chỉ định hay điều khiển có thể đƣợc đặt trong một loại module khác, một module chuẩn (.BAS). Một thủ tục đƣợc dùng để đáp ứng những sự kiện trong những đối tƣợng khác nhau phải đƣợc đặt trong cùng một chuẩn, thay vì tạo những bản sao mã trong những thủ tục sự kiện cho mỗi đối tƣợng. Một lớp module (.cls) đƣợc dùng để tạo những đối tƣợng, cái mà có thể đƣợc gọi từ những thủ tục bên trong ứng dụng của bạn. Trong khi một module chuẩn chỉ chứa mã, một lớp module chứa đựng cả mã và dữ liệu. Ta có thể nghĩ nó nhƣ một điều khiển.
Ở chƣơng trình thực nghiệm này, học viên giúp các em tìm hiểu một số quy tắc toán Vedic thông thƣờng, từ các quy tắc này các em có thể tính nhẩm một cách nhanh chóng và tiện lợi.
Trƣớc hết chúng ta tìm hiểu các quy tắc nhân một số với số 11, ta làm lần lƣợt từ phải qua trái nhƣ sau:
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
- Ghi chữ số phải nhất vào kết quả.
- Lần lƣợt lấy tổng (có nhớ) hai chữ số kề nhau
- Cộng chữ số trái nhất với số nhớ để ghi vào kết quả.
publicvoid nhanVoi11()
{
//chuyển thành chuỗi
giaithichNhan11.Text = "";
string chuoicannhan = socannhan.ToString();
//tách từng kỹ tự trong chuỗi
string chuoiketqua;
string[] a=newstring[1000];
//MessageBox.Show(chuoicannhan[chuoicannhan.Length-1].ToString());
for(int i=1;i<=chuoicannhan.Length;i++) {
a[i-1] = chuoicannhan[chuoicannhan.Length-i].ToString(); }
//Bƣớc 1 giƣ lại số bên phải
chuoiketqua = a[0];
giaithichNhan11.Text += "KẾT QUẢ CẦN TÍNH LÀ ????"; giaithichNhan11.Text += "\r\nBƣớc 1:";
giaithichNhan11.Text += "\r\n--Gán giá trị cuối của số vừa nhập bên phải
vào kết quả ???"+a[0];
//Buoc 2
int biennho = 0;
if (chuoicannhan.Length > 1) {
giaithichNhan11.Text += "\r\nBƣớc 2:\r\n--Chay vòng lặp nhƣ sau:"; giaithichNhan11.Text += "\r\nTính tổng 2 số liền kề:";
giaithichNhan11.Text += "Kiểm tra tổng đó với 10,nếu lớn 10 thì nhớ 1
lấy phần dƣ, nếu nhỏ hơn 10 lấy phần thƣơng khi chia với 10";
for (int i = 0; i <= chuoicannhan.Length - 1; i++) {
if (a[i + 1] == null) a[i + 1] = "0";
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
giaithichNhan11.Text += "\r\n--- ở vị trí " + i + " với vị trí " + (i + 1) +
" (ở ví dụ này là " + a[i] + "+" + a[i+1]+")";
//MessageBox.Show((tong%10).ToString());
if (tong>10) {
chuoiketqua = ((tong % 10)).ToString() + chuoiketqua;
giaithichNhan11.Text += "\r\n--->Tổng là: " + tong + "( với " + biennho + " là biến nhớ trƣớc)>10. Vì vậy lấy phần dƣ của " + ((tong %
10)).ToString() + "/10 và nhớ 1 --> Kết quả ?" + chuoiketqua; biennho = 1;
}
elseif (tong == 10) {
chuoiketqua = "0" + chuoiketqua;
giaithichNhan11.Text += "\r\n--->Tổng là: " + tong + "( với " + biennho + " là biến nhớ trƣớc)=10. Vì vậy lấy phần dƣ của " + (10).ToString() +
"/10 và nhớ 1 --> Kết quả ?" + chuoiketqua;
biennho = 1; }
else
{
chuoiketqua = ((tong % 10)).ToString() + chuoiketqua;
giaithichNhan11.Text += "\r\n--->Tổng là: " + tong + "( với " + biennho + " là biến nhớ trƣớc)<10. Vì vậy lấy phần dƣ của " + ((tong %
10)).ToString() + "/10 và nhớ 0 --> Kết quả ?" + chuoiketqua; biennho = 0;
} }//End for
}
else//Truong hop nhan 11 voi 1 so
{
//buuoc 1
chuoiketqua = a[0].ToString()+a[0].ToString();
//buoc 2
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
giaithichNhan11.Text += "\r\n==>KẾT QUẢ CUỐI CÙNG LÀ " + chuoiketqua; //MessageBox.Show(chuoiketqua); } Giải thích: 5843 x 11 = (5)+N|(5+8)+N|(8+4)+N|(4+3)|3; N là số nhớ = (5)+N|(5+8)+1| 2 | 7 |3 = (5)+1| 4 | 2 | 7 |3 = 6 | 4 | 2 | 7 |3 40789 x 11 = 448679.
Kết quả là đúng? hay là sai?
Sau khi đã cho các em học sinh thấy đƣợc cách nhân 1 số với 11, ta có thể hƣớng dẫn các em cách kiểm tra một số lớn cho trƣớc có chia hết cho 11 hay ko mà ko cần dùng máy tính, ở đây học viên có tìm hiểu thêm và đã thử nghiệm tính toán với nhiều số, và kết quả thì hoàn toàn đúng với khi ta kiểm tra bằng máy tính.
publicvoid kiemTraChiaHet11(string layTutextbox)
{
giaithichNhan11.Text = "";
string[] b = newstring[1000];
for (int i = 1; i <= layTutextbox.Length; i++) {
b[i - 1] = layTutextbox[layTutextbox.Length - i].ToString(); }
//tinh tong ky tu chan
int tongchan=0,tongle=0;
string chuoichan = "",chuoile= "";
for (int i = layTutextbox.Length-1; i >= 0; i--) {
//MessageBox.Show((i%2)+"");
if (i % 2 == 0) {
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
chuoile += "+" + b[i];
tongle = tongle + Convert.ToInt32(b[i]);
}
else
{
tongchan = tongchan + Convert.ToInt32(b[i]); chuoichan += "+" + b[i]; } } giaithichNhan11.Text += "\r\n Tổng các số vị trí chẵn là "+chuoichan.Substring(1,chuoichan.Length-1)+"="+tongchan; giaithichNhan11.Text += "\r\n Tổng các số vị trí lẻ là " + chuoile.Substring(1, chuoile.Length - 1) + "=" + tongle;
if ( (tongle-tongchan)%11 == 0) {
//MessageBox.Show("Chia hết cho 11");
giaithichNhan11.Text += "\r\nVì ("+tongle+"-"+tongchan+")/11 dƣ 0"; giaithichNhan11.Text += "\r\n=> Chia hết cho 11";
}
else
{
giaithichNhan11.Text += "\r\nVì (" + tongle + "-" + tongchan + ")/11 dƣ
khác 0";
giaithichNhan11.Text += "\r\nKhông Chia hết cho 11";
Ở đây học viên nêu lại quy tắc nhân một số có độ dài k chữ số với một số có k chữ số 9.
publicvoid nhanVoi9() {
if (comboBox1.Text == "") return; giaiThichNhanvoi9.Text = "";
string chuoicannhan = socannhan.ToString();
chuoicannhan = Convert.ToInt64(chuoicannhan).ToString();
if (comboBox1.Text.Length >= chuoicannhan.Length) {
giaiThichNhanvoi9.Text += "\r\n Vì số ký tự " + chuoicannhan + "<=" + comboBox1.Text + "-> Áp dụng công thức sau:";
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/
giaiThichNhanvoi9.Text += "\r\n A="+chuoicannhan+"-
1="+(Convert.ToInt64(chuoicannhan) - 1).ToString();
giaiThichNhanvoi9.Text += "\r\n B=(" + comboBox1.Text +"-
("+chuoicannhan+"-1)="+ (Convert.ToInt64(comboBox1.Text) -
(Convert.ToInt64(chuoicannhan) - 1)).ToString();
//tách từng kỹ tự trong chuỗi
string chuoiketqua;
string[] a = newstring[1000];
for (int i = 1; i <= chuoicannhan.Length; i++) {
a[i - 1] = chuoicannhan[chuoicannhan.Length - i].ToString(); }
string chuoidau = (Convert.ToInt64(chuoicannhan) - 1).ToString();
//MessageBox.Show(a[0]);
string chuoisau = "";
chuoisau = (Convert.ToInt64(comboBox1.Text) -
(Convert.ToInt64(chuoicannhan) - 1)).ToString();
giaiThichNhanvoi9.Text +="=>>Kết quá AB="+ chuoidau + chuoisau; }
else
{
giaiThichNhanvoi9.Text += "\r\n Vì số ký tự
"+chuoicannhan+">"+comboBox1.Text+"-> Áp dụng công thức sau:";
giaiThichNhanvoi9.Text += "\r\n
"+chuoicannhan+"x("+comboBox1.Text+"+1)-"+chuoicannhan;
giaiThichNhanvoi9.Text += "\r\n=>Kết quả " +
((Convert.ToInt64(chuoicannhan) * (Convert.ToInt64(comboBox1.Text) + 1)) -
Convert.ToInt64(chuoicannhan)).ToString();
} }
Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/