+ Nhung trong thủ tục, nếu bạn gán cho tên của thủ tục là GiaithuaThutuc giá trị của n ! qua biến Giaithua, thì chương trình sẽ không hiểu
5) Viết lệnh cho điều kiểm CmdThoat
Private Sub CmdThoat_Click() End End Sub Bước 3 CHẠY THỬ CHƯƠNG TRÌNH + Bạn chạy thử chương trình bằng cách nhấn phím F5, sau đó bạn nhập vào số 0
+ Bạn Click vào nút Command Button có tiêu để “ Tính giai thừa dùng hàm “, hoặc Click vào nút “ Tính giai thừa bằng thủ tục “ bạn cũng thấy kết quả báo ra-giống như hình sau :
= TINH GIA THUA DUNG HAM HOAC THU TUC
| Tinh giai thừa bằng thủ tục |
Thoát khủi chương trình
Aston] |B Ss) WY ( #y Poee -Meose | NVMeresetWed-C |[TS TỊNH GIAITH lẲ 631PM
Hình 18b._ Form khi nhập vào số 0
Trang 2+ Nhìn vào hình trên, bạn thấy trong hộp TextBox có tên TxtKetqua là 0!=1
+ Bây giờ bạn thử nhập vào TextBox có tên TxtNhap một số âm, giả sử bạn nhập vào - 5 Bạn thử Click vào 2 nút Command như trên Bạn cũng có hình như sau :
PER
Tut « 1 déng haw va thi đực
ists Không tính được vì là số âm
Thoát khói chương trình
mstart| | BSA DY By Power -m.| By Microw |[ty TINH GI #j20b-Pam | (Ấ7 837PM [15] Ban ahdp udo mbt 26 dé tink gcac thea Tính giai thừa dùng hàm
Hình 18c Form khi nhập vào ~5
+ Nhìn vào hình trên, trong cả hai trường hợp bạn thấy trong hộp TextBox có tên TxtKetqua sẽ thông báo :
~5 ! = không tính được vì là số âm
+ Bây giờ bạn thử nhập vào số 10, bạn sẽ thấy hình xuất hiện như sau :
Trang 3SS GIẢI THUA DUNG HAM HOAC THỦ TUC “7⁄4 « / ding ham vd the tue 10 ! = 3628800 Th lth gt |
Thoát khúi chương trình
net GAD | Aeron wy meoenwalleg rome Zc-Pen | KE ee Hình 18d_ Form khi nhập vào số 10
+ Nhìn vào hình trên, bạn sẽ thấy thông báo kết quả ở hộp TextBox là :
10 ! = 3628800
Trang 4
CAC PHEP TOAN CO BAN
' YÊU CẦU CỦA ĐẦU BÀI
Để giới thiệu thêm cách dùng hàm, yêu cầu các bạn viết chương trình và thiết kế sao cho người sử dụng nhập vào 2 số nguyên a và b trong hai hộp TextBox, bạn có thể xem kết quả của : 1- a+b 2- a-b 3- axb 4- a/b 5- Aa^b
Ban viết các hàm tự tạo để tính các phép toán trên, (trong cuốn tự học lập trình Visual Basic 6 0, chúng tôi dùng thủ tục, không dùng hàm; không dùng TextBox để nhập mà dùng các thanh cuốn ngang)
Theo yêu cầu của đầu bài, chúng tôi thiết kế Form của chương trình
như sau :
IỤC HIEN CAC PHEP TOAN - CÔNG THÚ, NHAN, CHIA, LUY THUA BES
Thực hiện các nhón toán cơ bản
Ban ahdp ofa Baw whip of 6 :
a+n| a-n | axn| a/m | a^h|
Thoát khỏi chương trình |
wiser] |B IEA 99 (Aynseetak.|RVMcoetw.| Z7Z16:Pa4 JÍS YHUCML- (£ 10037 Hình 19a Form của chương trình
Trang 5
6 bjchia cho sé chia
pet eee
Mời hạn nhận số chia E+ ⁄⁄4:]
Không đúng theo yêu cầu của đầu hài
Basten) |B EAD | ty reeen-m [fs wo PHO 724-Pai |BVMeoeetV.| ‹ƒ- ssym Hình 21e Form khi nhap vao - 125 va 34
+ Ban thấy chương trình sẽ báo lỗi, bây giờ ngược lại chúng tôi nhập số bị chia là số dương, giả sử là 20, nhập số chia là 34, bạn sẽ có hình như sau :
Mô phủng phép chia nguy: IIg cách trử số hị
Mời bạn nhận số bi chia
- Mời hannhận số cha R3 | Không đúng theo yêu cầu của đầu h
Pasion] | B Es A © || Ay Proectt-m ffs mo PH gr 240-Pan | wy Microsonw.| Í|(- «søpw Hinh 21f Form khi nhập vào 20 và ~34
+ Nhìn vào hình trên, bạn thấy là đã viết Code đúng, bây giờ chắc chắn khi bạn nhập vào cả 2 số đều là số âm, bạn sẽ thấy chương trình sẽ báo lỗi như trên
Trang 6gy cae Lý 2 - ` z TONG BINH PHUONG CAC SO LE VÀ CÁC SỐ CHẴN Âu TIÊN
YÊU CẦU CỦA ĐẦU BÀI
+ Bạn hãy thiết kế và viết Code cho chương trình để khi nhập một số nguyên n, chương trình sẽ :
-_ Inra n số lẻ bình phương đầu tiên -_ In ra n số chẩn bình phương đầu tiên - In ra Tổng bình phương của n số lẻ đầu tiên ~ In ra Tổng bình phương của n số chẩn dầu tiên >» Ví dụ : + Giả sử khi nhập n = 3 +n số lễ bình phương đầu tiên sẽ là chuỗi được in ra như sau : 1^22+3^2+5^2 +n số chẩn bình phương đầu tiên sẽ là chuỗi được in ra như sau : 2^22+4^2+b6^2 + In ra Tổng bình phương của n số lẻ như sau : Tổng bình phương của 3 số lẻ là : 35 + In ra Tổng bình phương của n số chẩn như sau :
Tổng bình phương của 3 -ố chan la : 56
+ Bạn dùng 2 TextBox để hiện ra kết quả, TextBox có tên TxtKetqua1 sẽ hiện ra chuỗi tổng bình phương của n số lẻ hoặc chuỗi tổng bình phượr 3 của n sé chan dau tiên, TextBox có tên TxtKetqua2
Trang 7sẽ hiện ra kết quả tính được của Tổng bình phương n số lẻ hoặc tổng bình phương của n số chẳn đầu tiên
+ 4 Command button dùng để thể hiện kết quả của 4 câu hỏi tương ứng ở trên (các câu hỏi đều độc lập, không có liên quan gì đến nhau)
Với yêu cầu như trên, chúng tôi thiết kế Form của chương trình như sau : &,TONG BÌNH PHUONG CÁC SỐ LE, CÁC S0 CHAN DAU TIỀN CEG
Tổng hình nhương Số lẻ và số chấn đầu tiên nam] | | Inra: 1^2+3^2+B^2+ lnra: 2^2+4^2+8^2+,
Thoát khỏi chương trình
stort] | B Es Dy Proctt -Morosa.| BY MisosotWerd-c.[t TÔNG BNHP (Ý 30174
Hinh 22a Form của chương trình
Nhìn vào Form trên, bạn thấy có các điều kiểm như sau :
* 3 TextBox; 1 ding dé nhap s6 can tinh, 2 dé thông báo kết quả = 2 Label ding dé lam tiéu dé
* 5 Command Button, trong dé 1 Command Button dùng để Thoát khỏi chương trình, 4 Command button dùng để xem kết quả * Form có tiéu dé “ TONG BINH PHUONG CAC SO LE, CAC SO
CHAN DAU TIEN “
Trang 8BANG CAC THUOC TINH CUA CAC DIEU KIEM
TT | Péditugng | Các thuộc tính Giá trị
1 | Form Name FrmTBPleChan
BackColor Mau xanh két
Caption TONG BINH PHUONG CAC
SO LE, CAC SO CHAN DAU TIEN
WindowState 2-Maximized
2 | Label Name LbITBPLeChan
BackColor Mau héng phan
Caption Tổng bình phương số lể và số chẵn đâu tiên,
Font Name VNI — Swiss Condense Font Size 20
Font Style Bold
3 | Label Name LbINhap
BackColor Mau vang
Caption Mời bạn nhập vào một số
nguyên dương
Font Name VNI - Swiss - Condense Font Size 14
Font Style Bold
4 | TextBox Name TxtNhap
BackColor Mau vang nhat Font Name MS - Sans Serif Font Size 24
Font Style Bold
Text (Xoá chữ Text)
Trang 9Font Style Bold MultiLine True
Text (Xoá chữ Text)
6 | TextBox Name TxtKetqua2
BackColor Mau xanh xám Font Name MS ~ Aptima Font Size 16
Font Style Bold
MultiLine True
Text (Xoa chit Text)
7 | Command Name Cmdsole
Button Caption Inra: 142 + 342 +5424 Font Name MS — Swiss Condense Font Size 14
Font Style Normal
8 | Command Name CmdTBPsole
Button Caption Tính tổng : 1^2 + 3 ^2 +
322 cu
Font Name MS ~ Swiss Condense Font Size 14
Font Style Normal
9 | Command Name Cmdsochan
Button Caption In ra: 242 + 4424+ 6424 Font Name MS — Swiss Condense
Font Size 14
Font Style Normal J
Trang 10
11 | Command Name CmdThoat
Button Caption Thoát khói chương trình Font Name MS — Swiss Condense Font Size 26
Font Style Bold
Buéc 1
THIET KE FORM CUA CHUONG TRINH
+ Bạn lần lượt lấy các điều kiểm từ hộp công cụ để dua vao Form
của chương trình, sau đó xác lập các thuộc tính cho tất cả các điều
kiểm theo như bằng đã cho ở trên
+ Bạn hai ý thiết kế TextBox nhập đầu tiên, để khi chạy chương trình, dấu nháy sẽ nằm tại TextBox này Bước 2 VIẾT CODE CHO CHƯƠNG TRÌNH Option Explicit 1) Viết Code cho điều kiểm CmdSochan Private Sub CmdSochan_Click0 Dim i As Integer Dim ch As String
For i = 2 To Txtnhap * 2 Step 2 chech &i & "42+" Next
TxtKetqual = Left (ch, Len (ch) - 3) End Sub
Trang 11+ Trong thủ tục trên, trước tiên là khai báo biến ¡ có kiểu Số nguyên để dùng trong vòng lặp For
+ Biến Ch kiểu chuối dùng để chứa chuỗi kết quả
+ Vĩ ín ra các số chắn bình phương nên ¡ sẽ chay từ 2 cho đến số nhập vào ở TextBox nhập nhân cho 2, điều này chúng tôi đã giải thích một lần trong bài tập ở trên Step 2, dùng để nhảy 2 bước để ¡ luôn là số chan
+ Biến Ch sẽ chứa các số chắn lấy từ vòng lặp For và được nối với chuỗi “^2 +“ sau mỗi số „
+ In kết quả ra TextBox có tên là TxtKetqua1, hàm Left chúng tải đã giải thích ở trên, kết quả này sẽ bỏ bớt 3 kí tự sau cùng, bạn thử tìm hiểu tại sao phải cắt như vậy
2) Viết Code cho điều kiểm CmdSole
Private Sub Cmdsole_Click() Dim i As Integer Dim ch As String For i = 7 To Txtnhap * 2 Step 2 ch=ch&& "A2 +" Next TxiKetqual = teit (ch, Len (ch) — 3) End Sub
+ Thủ tục này chỉ khác ở biến chạy của ¡ là số 1 vì chỉ lấy các số lẽ + Còn các chỉ tiết khác cũng tương tự như giải thích trong thủ tục ở trên
Trang 123) Viết Code cho điều kiểm CmdTBPSochan
Private Sub CmdTBPsoChan_Ciick() Dim i As Integer Dim n As Long For i = 2 To Val(Txtnhap) * 2 Step 2 en=ntiti Next
TxtKetqua2 = "Téng bình phương của " & Txtnhap & " số chắn đầu tiên là :" &n
End Sub
+ Trong thủ tục trên, trước tiên là khai báo biến ¡ có kiểu số nguyên
để dùng trong vòng lặp For
+ Biến n kiểu Long dùng để chứa kết qua là một số
+ Vì in ra tổng bình phương của n số chắn đầu tiên, nên ¡ sẽ chạy từ 2 cho đến số nhập vào ở TextBox nhập nhân cho 2 Step 2, dùng để nhảy 2 bước để ¡ luôn là số chẩn
> Chay:
+ Trong vòng For này, bạn phải đổi số nhập vào TextBox sang kiểu số, bạn dùng ham Val 0 để đổi
+ Bạn suy nghĩ tại sao và tự tìm hiểu nhé
+ Tại sao trong các thủ tục ở rên ta không cần đổi mà chương trình vẫn thực hiện dược
+ In kết quả ra hộp TextBox có tên TxtKetqua2
Trang 134) Viét Code cho điều kiểm CmdTBPSole
Private Sub CmdTBPsole_Click() Dim i As Integer Dim n As Long For i= 1 To Val(Txtnhap) * 2 Step 2 n=n+i*i Next TxtKetqua2 = "Tổng bình phương của " & Txtnhap & " số lề đầu tiên là :"&n End Sub + Thủ tục này cũng giải thích như thủ tục vừa rồi, chỉ khác ở biến ¡ là 1
5) Viết Code cho điều kiểm CmdThoat
Private Sub CmdThoat_Click() End End Sub Bube 3 CHAY THU CHUONG TRINH
+ Bay giờ bạn chạy thử chương trình và nhập n = 5 trong TextBox có tên TxtNhap, Click vào nút Command Button có tiêu để “ In ra: 1 ^22+3^2+5^2, “ bạn sẽ có hình như sau :
Trang 14Oe Ina: 2°2+4%248%2+ Tính tổng : 1^2+8^2+B^2+ Tinh tổng; 2^Z+4^2+B^2+
Thoát khỏi chương trình
st) @ 6:02 19) byhsetsM.| 8VMemAv.| 2i + lÍaYoNem lỆ 350M
Hình 22b_ Form khi nhập số 5 và Click vào nút như trên
+ Nhìn vào hình trên, bạn thấy in ra chuỗi 5 số lẻ bình phương đầu tiên, đúng như yêu cầu của đầu bài
+ Bây giờ bạn thử Click vào nút có tiêu đề “ Tính tổng : 1 ^ 2
+3^2+5^2+ “ bạn sẽ có kết quả như sau : + TÔNG BINH PHUONG CAC S0 L£, CÁC S0 CHAN DAU TIEN 1^2+3^2+5^2+7^2+9^2 | \ a
Thoát khỏi chương trình
gRsua| Ø8 6: 0) 9) (yPaetcM |fVAeseew | gam-Pae [fo toNG a Ee «seem
Hình 22c Form khi click vào nút có tiêu để như vừa nói
Trang 15
+ Bạn thấy trong TextBox có tên TxtKetqua2 sẽ thông báo câu “Tổng bình phương của 5 số lẻ đầu tiên là : 165”
+ Chúng ta thử kiểm tra xem 165 có phải là kết quả đúng hay không nhé Tathấy: 142 = 342 = 9 Sted =6, 742 = 49 9'4U na = 8] Tổng =165
+ Vậy kết quả thông báo là chính xác
+ Bây giờ bạn thử Click vào nút có tiêu đề “ In ra ; 2 ^ 2+4^2+ 6 ^ se “ bạn sẽ có hình như sau : '& TONG BÌNH PHUONG CÁC SU LE, CAC S0 CHAN DAU TIỀN 2^2+4^2+6^2 + 8^2+10^2 Tỉnh tổng: 2^2+4^2+§^ø+
Thốt khỏi chương trình
ston] | B Es 4 8 || tyPoeel -M.J[B ToNG BỊ lE124:Pam | tVMoœo.| ÍỆ“ SssPM
Hình 22d
Trang 16
+ Bạn thấy khi Click như vậy, nội dung mới sẽ được thay thế trong TextBox TxtKetqual, riêng TextBox có tên TxtKetqua2 thì không có gì thay đổi
+ Bây giờ nếu các bạn Click vào nút có tiêu để “ Tính tổng : 2^2+4^2+6^2+ “ các bạn sẽ thấy hình như sau : ESOC ET Tổng hình — Số g và số chấn đầu tiên li | 242 + 442 + 642 + BA2 + 1042 inva: 1%24+3%2+6 “2+ ae Inra: 2^2+4^2+8^2 _ Tỉnh tổn 2 822
Thốt khơi chương trì inh
stat] | @ GD || Power ffm TONG or paed-ra_ | wrMeownw.] KE 6orrw
Hinh 22e
Trang 17
+ Bây giờ giả sử bạn nhập vào số 9 và Click lần lượt 2 nút thuộc về số lẻ, bạn sẽ có hình như sau :
DE EEE -EEI Tổng hình phương Số lẻ và số chấn đầu tiên
Mũi bạn nhập vào một số nguyên dưng mm
1^2+3^2+52^2+7^2+9^2+ 11^2 + 1342 4.1542 +1742
sie) |B Os A O)|) ty Prove wilfes ro H 294-044 | Mesetw.| lẶ- eam Hinh 22f Form khi nhap sé 9 va Click 2 nut về số lẻ
Trang 18+ Bây giờ các bạn thử Click vào 2 nút để xem số chẵn, bạn sẽ có hình như sau :
'a TONG BINH PHUONG CAC SO LE, CAC SO CHAN DAU TIEN
Vig bình phở ud $ế lủ và số chấn đầu tiên
Bren
AQ + 4A2 + GAZ + BA2 + 1042 + 1242 + 1442 + 1642 + 1842
Psion) |S Ey D1) tyemeralles rono ai đi25:043- [BWMesáu/| [( giơ
Hinh 22g Form khi Click vào 2 nút số chấn
Trang 19
TINH a x b THEO THUẬT TOÁN KHÁC
YÊU CẦU CỦA ĐẦU BÀI
+ Bạn thiết kế và viết chương trình để nhân 2 số nguyên dương a và b (a là số thứ nhất với điều kiện a > 0 „b là số thứ hai, b > = 0) vai thuật toán như sau :
+ Chia đôi số thứ nhất chỉ lấy phan nguyên và gấp đôi số thứ 2 Lập lại quá trình trên cho đến khi số thứ nhất bằng 1
+ Tổng các số thứ 2 tương ứng với các trị lẻ của số thứ nhất sẻ là tích a nhân b cần tính
+ Bạn nhập số a vào TextBox thứ nhất, + Số b vào TextBox thứ hai
+ Click vào nút xem kết quả, nó sẽ in ra như ví dụ dưới đây:
> Ví dụ: * Nhân 83 và 20
20 40 80 160 320 640 1280 83 41 20 10 5 2 1
Tích của 83 nhân 20 tính theo giải thuật của đầu bài cho = 1660 (Thử kiểm lại, bạn thấy 20 + 40 + 320 + 1280 = 1660)
* Nhân 53 và 26
26 52 104 208 416 832 53 26 13 6 3 1
Tích của 53 nhân 26 tính theo giải thuật của dau bai cho =1378 (Thử kiểm lại, bạn thấy 26 + 104 + 416+ 832 = 1378)
Trang 20Với yêu cầu như trên, chúng tôi thiết kế Form của chương trình như sau :
[etd
tena chadl tink od hte igud:\ Exit |
wmstat| | BE; DO || ty Preicct -merote|| By Moosstwee:C.|ÏS axb heotho |JKẾ”34PÁ” Hình 23a Form của chương trình
Nhìn vào Form trên, bạn thấy có các điều kiểm như sau :
= 3 TextBox; 1 dung để nhập số a, 1 để nhập số b, 1 để thông báo kết quả
=3 Label dùng để làm tiêu đề
= 2 Command Button, trong dé 1 Command Button ding dé Thoát khỏi chương trình, 1 Command button ding dé xem kết quả = Form cé tiêu để “ a x b theo thuat toan chia doi va nhan doi “
Trang 21BANG CAC THUOC TINH CUA CAC DIEU KIỂM
TT | Đối tượng | Các thuộc tính Giá trị
1 | Form Name Frmaxb
BackColor Mau cam nhat
Caption ax b theo thuat toan chia doi va nhan doi
WindowState 2-Maximized
2 | Label Name LbITieude
BackColor Mau xanh xdm
Caption Nhân 2 số nguyên dương
theo thuật toán đã cho Font Name VNI ~ Swiss Condense
Font Size 20
Font Style Bold
3 | Label Name LblSoa
BackCalor Mau cam dém Caption Bạn nhập số thứ nhất
Font Name VNI — Brush Font Size 24
Font Style Italic
4 | Label Name LblSob
BackColor Mau cam dam Caption Bạn nhập số thứ hai
Font Name VNI — Brush Font Size 24
Font Style Italic
5 | TextBox Name TxtSoa
BackColor Mau xanh nhạt Font Name MS Sans Serif Font Size 18
Font Style Bold
Text (Xoá chữ Text)
Trang 22
6 | TextBox Name TxtSob
BackColor Màu xanh nhạt Font Name MS Sans Serif Font Size 18
Font Style Bold
Text (Xoa chit Text)
7 | TextBox Name TxtKetqua
BackColor Màu xanh xắm Font Name VNI - Aptima font Size 14
Font Style Normat
MultiLine True
Text {Xoa chit Text)
8 | Command Name CmdKetqua
Button Caption In ra chudi tinh va két qua Font Name VNI — Brush
Font Size 24 Font Style Italic
9 | Command Name CmdThoat
Button Caption Exit
Font Name MS — Swiss Condense Font Size 28 Font Style Normal 8ước 1
THIẾT KẾ FORM CỦA CHƯƠNG TRÌNH
+ Bạn lẫn lượt lấy các điều kiểm từ hộp công cụ để đưa vào Form của chương trình, sau đó xác lập các thuộc tính cho tất cả cá“ điều kiểm theo như bảng đã cho ở trên
+ Bạn lưu ý thiết kế TextBox nhập vào số thứ nhất, sau đó là đến TextBox nhập vào số thứ hai, để khi chạy chương trình, dấu nháy sẽ nằm tại textBox có tên TxtSoa, sau đó sẽ nhảy đến TextBox có tên Txt5ob
Trang 23Bước 2
VIẾT CODE CHO CHƯƠNG TRÌNH
Option Explicit
1) Viết Code cho điều kiểm CmdKetqua
Trang 24Soa (0) = TxtSoa Sob (0) = TxtSob
If Soa {0) Mod 2 = 1 Then Tong = Tong + Sob (0) End If Ch2 = Sob (0) &"," Fork=1Toi-1 Sob (k) = TxtSob * 2 TxtSob = Sob (k) Ch2 = Ch2 & Sob (k) & ", " Next Chỉ = Soa (0) &"," forj=1Toi-1 Soa (j) = TxtSoa \ 2 TxtSoa = Soa {j}
Ch1 = Ch† & Soa (j) & ", " lí TxtSoa Mod 2 = 1 Then
Tong = Tong + Sob ()
Endlf
Next
Xh = Chr(13} & Chr(10)
Trang 25TxtKetqua = Ch2 & Xh & Ch] & Xh & "Tích của " & Soa(0) & " nhân " & Sob(0) & " Tính theo giải thuật của đầu
bai cho" & "=" & Tong
TxtSoa = Soa(0) TxtSob = Sob(0) Else
TxtKetqua = " Bạn xem lại số a và b có đúng theo yêu cầu của đầu bài hay không 7
End If End Sub
+ Nếu số a hoặc số b nhập vào mà không đúng theo điều kiện của đầu bài, ví dụ nếu nhập a<= 0, hoặc b < 0 Chương trình sẽ báo là bạn nhập số a hoặc số b không đúng theo yêu cầu của đầu bài
+ Trong thủ tục trên, biến ¡ có kiểu nguyên dùng để đếm số lần xuất hiện của các số khi chia số thứ nhất cho 2 đến khi có kết quả bằng 1
> Ví dụ: 20 10 5 2 1 + Trong trường hợp này ¡ sẽ bằng 5
+ Chúng tôi dùng biến này để làm điều kiện trong các vòng lặp For để duyệt các số ở trên
+ Biến ¡ này sẽ tính được qua vòng lặp Do While trong thủ tục Tại sao đầu tiên biến ¡ = 2 Với ví dụ trên, bạn thấy khi số thứ nhất chia cho 2 lần đầu tiên (có kết quả là 10), ¡ sẽ tăng lên 1 đơn vị, tiếp tục chia lần thứ 2 (có kết quả là 5), ¡ sẽ tăng lên 1 đơn vị, tiếp tục chia lần 3 (có kết quả là 2), ¡ sẽ tăng thêm 1 đơn vị, quay lại vòng lặp lúc này điều kiện không thoả vì 2 \ 2 = 1 (mà điều kiện là phải khác 1) Dọ
Trang 26đó khi bạn nhập bất kỳ số nguyên dương nào thì số nguyên đó và số 1 sẽ không được tính, mất 2 số nên ta phải cho biến ¡ = 2 là như vậy
+ Tiếp đến ta gán số thứ nhất cho phần tử đầu tiên của mảng 1 là Soa (0), số thứ hai cho phần tử đầu tiên của mảng 2 là Sob (0) Sở dĩ ta gán như vậy để thuận tiện cho các vòng lặp For
+ Vì số thứ nhất bạn nhập vào có thé là số chắn hoặc số lẻ, nếu là số lẻ thi số thứ hai sẽ được cộng vào phép tính, nêủ chúng tôi dùng biến Tong để lấy được số dau tiên tham gia vào phép tính kết quả
> Vídụ: 20, 40, 80
5, 2, 1
Trong trường hợp này số thứ nhất là số 5, là số lẻ, nên số thứ 2 là 20 sẽ được lấy để tham gia tính toán
»> Chú ý:
Số thứ nhất chúng tôi để ở hàng dưới
+ Để in ra chuỗi các số nhân đôi của số thứ 2, chúng tôi dùng biến
Ch2 có kiểu String để chứa
+ Đầu tiên chúng tôi gán biến Ch2= Sob (0) & “„ “, Sau đó dùng vòng lặp For với k chạy từ 1 đến ¡ — 1 để in ra được số thứ 2 nhập vào và tất cả các số sau khi đã nhân đôi, số cuối cùng sẽ là số tương ứng với số thứ nhất sau khi chia 2 có kết quả bằng 1, và các số này sẽ được cách nhau bởi dấu phẩy “,*
Trang 27+ Tương tự như vậy với vòng lặp For bên dưới để xác định được chuỗi số thứ nhất và các số sau khi đã được chia cho 2
+ Tuy nhiên trong vòng For này sẽ có thêm phát biểu lí với điều kiện xác định với từng số kể từ số có thứ tự thứ 2 có phải là số lễ hay không „ nếu là số lẻ thì số nhân đôi có vị trí tương ứng là chỉ số j sẽ
được tham gia vào tính toán, nó sẽ được cộng thêm vào biến Tong
Nếu chú ý bạn sẽ thấy tại sao chúng tôi phải xác định được các số nhân đôi trước để lưu vào mảng, vì phải có các số này rồi thì chúng ta mới lấy được giá trị của chúng tương ứng với số chia đôi là số lẻ (biến Tong chọn kiểu Long để chứa được trị lớn han)
+ Việc lưu vào các mảng, chúng tôi phải khai báo các mang với chỉ số như trên, đó là Đim Soa (20) As Integer va Dim Sob (20) As Integer ban có thể tăng giảm số này sao cho phù hợp với chương trình
+ Kế đến dùng biến Xh có kiểu Sting để chứa các mà kí tự xuống hàng + Thông báo kết quả ra màn hình chuỗi Ch2, sau đó xuống hang in ra chuỗi Ch1, sau đó xuống hàng in ra các chuỗi nối với các biến
+ Phải gán TextBox có tên TxtSoa = Soa (0) và TextBox có tên TxtSob = Sob (0) để lấy lại đúng giá trị của 2 số mà người sử dụng nhập vào ban đầu, để dễ theo dõi việc tính tốn, Nếu khơng có 2 lệnh gan này thì trong 2 TextBox này sẽ có giá trị là giá trị của số sau cùng của chuỗi Ch1 và Ch2 Chính các vòng lặp For đã làm thay đổi giá trị bạn đầu của người sử dụng nhập vào Bạn có thể thử bằng cách đánh dấu ghi chú 2 dòng lệnh này để thứ xem có dung như vậy hay không ‡ 2) Viết Code cho điều kiếm CmdThoat
Private Sub CmdThoat_Click() End
End Sub
Trang 28Bước 3 CHẠY THỬ CHƯƠNG TRÌNH + Bạn chạy thử chương trình, nhập vào số thứ nhất là 543 và số thứ hai là 13
+ Click vào nút command button có tiêu để “ In ra chuỗi tính và kết quả “, bạn sẽ có hình như sau : [%e na chee tink va he gud Exit | se |6 8:0 Bll turer arsine tena [Sarees TESA Hình 23b_ Kết quả khi nhập 543 và 13
+ Nhìn vào hình trên, ban thay in ra 2 dãy số, dòng thứ nhất in ra chuỗi là số thứ hai và các số nhân đôi, dòng thứ hai in ra chuỗi là số thứ nhất và các số sau khi đã chia cho 2 Dòng thứ 3 in ra câu văn và
kết quả
+ Bạn thử lấy giấy nháp và tính toán xem, chắc chắn các bạn sẽ
có kết quả đúng như vậy
+ Bạn thấy 13 + 26 + 52 + 104 + 208 + 6656 = 7059
+ Các số trên tương ứng với giá trị là số lẻ của chuỗi số Ch1
+ Bây giờ giả sử bạn nhập số thứ nhất là 200, số thứ hai là 0, bạn sẽ thấy kết quả như thế nào, bạn thử chắc chắn sẽ có hình như sau :
Trang 29
[Tae xa chads Cink wage aad) (ES ae
mista] | @ B14 W || ty Pomc m.| wy Micron w.| (of 20-Pain [[Saxbine Qi EHPM
Hình 23c Form khi nhập 200 và 0
+ Nhìn vào hình trên, bạn thấy chuỗi Ch1 trong hàng thứ hai có 8 số, tương ứng như vậy với chuỗi Ch2 bạn thấy sẽ có 8 số 0, và kết quả báo ra sẽ bằng 0
+ Bây giờ nếu bạn sửa lại số a = 0 xem chương trình sẽ báo như thế nào
Exit |
Ascent] | BGs G2 © |) By noset - | Rý Meoset | [By200-pat [Saab me [eo FP
Hình 23d_ Form khi sửa lại Soa = 0
Trang 30+ Vì số a = 0, không thoả điều kiện của đầu bài đó đó trong >xtBox sẽ thông báo là không thoả điều kiện của đầu bài
+ Bây giờ bạn thử sửa lại a = 12, b = -5, bạn cũng thấy báo kết quả không thỏa, vì b < 0
&c a xb theo thuat toạn chia đọi và nhan doi II (ae an oe (Iu na chuse tink ua bt gud) Em |
stat] BS] || ty Pcisat om | py Micro w.| (G7 20d-Pait [Fe xbme {igi FON Hinh 23e Form khi a = 12 và b= ~5
Trang 31
_ YEU CAU CUA DAU BÀI
Ban hãy thiết kế và viết Code cho chương trình in ra day Fibonacci được xác định như sau : +Ng=N;¡=1 +MNa=Na_-†y+MNn-¿ (n>=2) 1~ Viết chương trình in ra n + 1 số Fibonaci với n là số được nhập vào 2~ In ra số Fibonaci thứ Nn Với yêu cầu như trên, Chúng tôi thiết kế Form của chương trình như sau : & FIBONACI SE i BoE
stad] | 25H WD || By Pret! Mew | By Misoon Wad ff FRONATT PN
Hình 24a Form của chương trình
Trang 32
Nhìn vào Form trên, bạn thấy có các diéu kiểm như sau :
« 2 TextBox mat dùng để nhập số n, một để thông báo kết quả
"2 Label dùng để làm tiêu dé
“2 Command Button, trong đó 1 Command Button dùng để thoát khối chương trình, 1 Command buton dùng để xem kết quả " Form có tiêu để “ FIBONACI ”
BẰNG CÁC THUỘC TÍNH CỦA CÁC ĐIỀU KIỂM
TT | Đối tượng | Các thuộc tính Giá trị
1 |Form Name FrmFibonaci
BackColor Mau nau
Caption FIBONACI
WindowState 2-Maximized
2 | Label Name LblTieude
BackColor Mau xanh két
Caption In ra n số Fibonaci đầu tiên Font Name VNI - Swiss Condense Font Size 36
Font Style Bold
3 | Label Name LbINhap
BackColor Mau xanh két dam Caption Mời bạn nhập vào số n
Font Name VNI - Brush
Font Size 26
Font Style Bolditalic
4 | TextBox Name TxtNhap
BackColor Mau xanh két dam Font Name MS — Sans Serif Font Size 30
Font Style Regular
Text (Xoa chit Text)
Trang 33
5 | TextBox Name TxtKetqua
BackColor Mau xanh nhat Font Name VNI — Aptima
Font Size 24
Font Style Bold
MultiLine Trục
Text (Xóa chữ Text)
6 | Command Name CmdKetqua
Button Caption Xem kết quả
Font Name MS ~ Sans Condanse
Font Size 24
Font Style Bold
7 | Command Name CmdThoat
Button Caption Thoát khối Form
Font Name MS - Swiss Condense Font Size 24 Font Style 8old Đước 1
THIẾT KẾ FORM CỦA CHƯƠNG TRÌNH
+ Bạn lần lượt lấy các diều kiểm từ hộp công cụ để đưa vào Form của chương trình, sau đó xác lập các thuộc tính cho tất cả các điều kiểm theo như bảng đã cho ở trên
Trang 34Bước 2
VIẾT CODE CHO CHƯƠNG TRÌNH
Option Explicit
1) Viết Code cho điều kiểm CmdKetqua
Private Sub CmdKetqua_ Click Dim i As Integer Dim So (20) As Integer Dim Ch As String Dim Xh As String Xh = Chr(13) & Chr(10) If TxtNhap >= 2 Then So (0) = 1 So(1)=1 For i = 2 To TxtNhap Ch=Ch & So fi - 1) + Sofi - 2) &"," So (i) = So (ï — 1) + So Ñ — 2) Next
TxtKketqua =" * n + 1 96 Fibonaci vdi n nhap vao = " &
TxtNhạp & " là " & Xh &" "& So (0) &"," & So() &","& Left (Ch, Len (Chì - 2) & Xh & "* Số Fibonaci thứ " & TxtNhap & " là " & 5o (TxtNhap)
Else
Trang 35TxtKetqua = " Bạn nhập số n chưa đúng theo yêu cầu của dau bài, a phải lớn hơn hoặc bằng 2 (n >= 2)"
End If End Sub
+ Biến ï có kiểu nguyên dùng để chạy trong vòng lặp For + Khai báo mảng dùng để chứa các số Fibonaci
+ Biến ch dùng để nối chuỗi có ¡ chạy từ 2 đến số nhập vào + Biến Xh dùng để chứa mã xuống hàng
+ Gán biến Xh = Chr (13) & Chr (10}
+ Nếu số n nhập vào mà nhỏ hơn 2 thì sẽ báo ra câu có nội dung là số n nhập vào không hợp lệ Nếu n > = 2 thì sẽ gần phần tử thứ nhất của mảng, phần tử thứ hai của mang la 1 (5 (0) = 1 và S (1) = 1),
+ Vòng For có ¡ chạy từ 2 đến số nhập vào để chứa chuỗi các số tibonaci tìm được vào biến Ch,
+ Cau lénh So (f) = So fi —~1) + Sø (ï ~ 2) Đùng để tính cho lần lặp sau + Sau đó báo kết quả ra hộp TextBox có tên TxtKetqua chuỗi chú thích, phần tử thứ nhất của mang, phản tử thứ hai của mảng và chuỗi Fibonaci tìm được trong vòng lặp For
2) Viết Code cho điều kiểm CmdThoat
Private Sub CmdThoat_Click() End
End Sub
Trang 36Bước 3
CHAY THU CHUONG TRINH
Bạn chạy thử chương trình, sau đó nhập số 5 vào TextBox nhập, Click vào nút xem kết quả, bạn sẽ có kết quả như hình sau : *n + 1 số Fibonaci với n nhập vào = 5 là 1,1,2,3,5,8 * Số Fibonaci thứ N 5 là 8 Í Xemkếốtquả | ThốtkhỏiForm
_"Rsun| | @ 8: ® || ty Proeert-o.| RỆMeosotW.| jØ286:.Pxt fs reonacy |: s53eM
Hình 24b Form khi nhập vào số 5
Trong hình trên, bạn thấy in ra câu chú thích, 6 số Fibonaci từ Nọ dén Ns, va gia tri của số Fibonaci thứ N: Các câu nằm ở các hàng
khác nhau nhờ biến Xh là biến xuống hàng và xác lập thuộc tính MultiLine của TextBox có tên TxtKetqua là True
Nếu nhập vào số 11, bạn sẽ có 12 số Fibonaci từ Nọ đến N¡¡ và số Fibonaci thứ Nụ: có giá trị như sau :
Trang 37*n + 1 s6 Fibonaci véi n nhập vào = 11 là 1,1,2,3,5,8,13,21,34, 55,89 144 * Số Fibonaci thứ N 11 là 144 Xem
Bon) ea 2 {| Byram Ey meson #izo:Pzm |[triBOMAOL (| 655PM Hình 24c Form khi nhập vào số 11
Nhìn vào hình trên, bạn sẽ thấy bất cứ số Fibonaci từ N¿ trờ về sau, luôn luôn bằng tổng 2 số Fibonaci đứng trước nó
Bây giờ bạn thử nhập số n nhỏ hơn 2, giả sử bạn nhập vào số 1, bạn sẽ có hình như sau :
Bạn nhập số n chưa đúng theo yêu cầu
Trang 38
Nhập vào 2 số nguyên bất ky a va b, Click vào nút xem kết quả, sẽ thấy ước số chung lớn nhất của 2 số này
Form của chương trình được thiết kế như sau : Sn ñ CE bee Ban ahifpp vao wa Ben nhipe uia of 6 amare Sa
| Thoát khỏi Form
` UES as Kitobš 05a 13a 8,5 VỀ a
Pasron| |B Es] DY tyPraect-M| RVMcosetw | Z124.:Pan |[SU0CS0 LÝ bai
Trang 392 Command Button, trong đó 1 Command Button dùng dể Thoát
khỏi chuong trinh, 1 Command button dùng để xem kết quả
Form có tiêu dé “ UOC SO CHUNG LON NHAT *
BANG CAG THUOC TINH CUA CÁC DIEU KIEM
TT | Đối tượng | Các thuộc tính Giá trị
1 | Fom Name FrmUSCLN
BackColor Mau cam
Caption UOC SO CHUNG LON NHAT
WindowState 2~Maximized
2 | Label Name LblTieude
BackColor Mau xanh két
Caption Tìm ước số chung lớn nhất của 2 số
Font Name VNI ~ Swiss Condense font Size 28
Font Style Bold
3 | Label Name tblSoa
BackColor Mau cam nhạt
Caption Bạn nhập vao sé a
Font Name VNI ~ Brush Font Size 24
Font Style Bolditalic
4 | Label Name LbISob
Trang 40
5 | TextBox Name TxtSoa
BackColor Mau cam nhat Font Name MS — Sans Serif Font Size 24
Font Style Bold
Text (Xóa chữ TexU
6 | TextBox Name TxtSob
BackColor Màu cam nhạt Font Name MS ~ Sans Serif Font Size 24
Font Style Bold
Text (Xóa chữ Text)
7 | TextBox Name TxtKetqua
BackColor Mẫu cam nhạt
Font Name VNI ~ Swiss Condense Font Size 24
Font Style Bold
MultiLine True
Text (Xóa chữ Text)
8 | Command Name CmdKetqua
Button Caption Xem kết quả
Font Name VNI — Swiss Condense Font Size 24
Font Style Bold
9 | Command Name CmdThoat
Button Caption Thoát khỏi Form
Font Name VNI — Swiss Condense Font Size 24
Font Style Bold