VB Club

Nguyễn Thành Lam
(thanhlam)

Thành viên danh dự
Tôi thấy mọi người ở đây ít bàn luận về lập trình quá, có ai thích VB không ? Cùng nói chuyện về VB một chút.
Tiện thể hỏi các bác luôn, ai có thể Post code bài tập sau cho tôi : Tìm những số Amstrong. Người dùng dùng Input box nhập vào số n - n là số những chữ số. Mình phải tìm ra những số Amstrong thỏa mãn số chữ số mà nhập vào từ Input box.
Amstrong là những số, phải nói thể nào nhỉ, để tôi ví dụ. 1^2 + 2^2 +5^2 = 30. 30 là số Amstrong, hay 3^2 + 3^2 + 5^2 +1^ = 44.
 
Cậu muốn mọi người "bàn luận" tin học mà lại hỏi nhờ mọi người "post code bài tập", hết chuyện.
 
Cần gì phải lạnh lùng thế hả ông anh, em cũng chỉ góp tí vui cho cái box tin học này, cài đấy gì đến Code toàn tập như anh nói
 
Anh zai ui em cung dang hoc nhung moi chi hoc dc may cai lang nhang dau tien thoi chua tien sau vao dc . Anh Lam co dinh thanh lap Vb club tren ni that ko ??? co gi em xin gop bai giang nhap mon cua C#. Hoac ko thi em cung co bai giang noi chung ve visualstudio.net
ok?
 
Nguyễn Thành Lam đã viết:
Tôi thấy mọi người ở đây ít bàn luận về lập trình quá, có ai thích VB không ? Cùng nói chuyện về VB một chút.
Tiện thể hỏi các bác luôn, ai có thể Post code bài tập sau cho tôi : Tìm những số Amstrong. Người dùng dùng Input box nhập vào số n - n là số những chữ số. Mình phải tìm ra những số Amstrong thỏa mãn số chữ số mà nhập vào từ Input box.
Amstrong là những số, phải nói thể nào nhỉ, để tôi ví dụ. 1^2 + 2^2 +5^2 = 30. 30 là số Amstrong, hay 3^2 + 3^2 + 5^2 +1^ = 44.

đọc đi đọc lại mà vẫn không hiểu cái số Amstrong em Lam nói nó như thế nào :) Nếu muốn tính toán thì dùng VB làm gì hả em.
 
Không, em đang học VB mà, còn C# ( C sharp) thì không học.
Em mới chỉ làm được số Amstrong với 4 chữ số.
Code đã viết:
Private Sub cmdclick_Click()
Dim x,a,b,c,d as Integer
for x=1000 to 9999
a=x mod 1000
b=(x (mod 100)/10
c=(x mod 10)/10
d=x mod 10
If a^4+b^4+c^4+d^4=x then
List1.list =Str(x)
End If
Next
End Sub

Em đang ở dịch vụ để viết code, có gì sai thì xin mọi người góp ý
 
Ở trong ttvnol.com cũng có rất nhiều bài viết hay, tôi Post 1 bài là làm thay đổi Form trong như thủy tinh :

'khai báo các hằng cần thiết để gọi API
Const LWA_COLORKEY = &H1
Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000

'Danh sách các hàm API cần thiết
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

'Hàm này là nhân vật chính cho việc này
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub Form_Load()
Dim Ret As Long

'Việc này sẽ "định nghĩa" các cửa sổ của bạn thành
' "Lớp" '(Như củ hành ấy mà ...)

Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED

SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret

'Tinh chỉnh tính mờ đục của cửa sổ này về giá trị 128
'Lưu ý rằng giá trị 128 thay đổi từ 0 đến 255 bạn nhé
SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA
End Sub
 
Tức là số amstrong có n chữ số thì có dạng

x[SUB]1[/SUB] [SUP]n[/SUP] + x[SUB]2[/SUB] [SUP]n[/SUP] + ... + x[SUB]n[/SUB] [SUP]n[/SUP]
huh ?

Thế thì cái ví dụ em cho sai bét à ?

ví dụ. 1^2 + 2^2 +5^2 = 30. 30 là số Amstrong, hay 3^2 + 3^2 + 5^2 +1^ = 44.

Thế 1^2 + 2^2 +5^2 + 1^2 = 31 cũng là số amstrong à ?

edit: cái sub với sup nó bị thế quái nào ý nhỉ
 
Chỉnh sửa lần cuối:
no'i nhu+ chu' PQL, the^' ( 1^2 ) * X ( X in (10,99) ) dde^`u là số armstrong ca? à ;-)

Phạm Quang Linh đã viết:
Tức là số amstrong có n chữ số thì có dạng
x[SUB]1[/SUB][SUP]n[/SUP] + x[SUB]2[/SUB][SUP]n[/SUP] + ... + x[SUB]n[/SUB][SUP]n[/SUP]
huh ?

Thế thì cái ví dụ em cho sai bét à ?

ví dụ. 1^2 + 2^2 +5^2 = 30. 30 là số Amstrong, hay 3^2 + 3^2 + 5^2 +1^ = 44.

Thế 1^2 + 2^2 +5^2 + 1^2 = 31 cũng là số amstrong à ?
 
Chỉnh sửa lần cuối:
Nguyễn Thành Lam đã viết:
Không, em đang học VB mà, còn C# ( C sharp) thì không học.
Em mới chỉ làm được số Amstrong với 4 chữ số.


Em đang ở dịch vụ để viết code, có gì sai thì xin mọi người góp ý

ta.i sao la.i mo+'i chi? la`m ddu+o+.c vo+'i 4 chu+~ so^' ? Ddoa.n code a^'y 0 the^? mo+? ro^.ng cho


for x=10000 to 99999
...


ddu+o+.c a` ? :)
 
Chỉnh sửa lần cuối:
thế thì em mới không hiểu quy luật của cái số amstrong này nó là thế nào chứ ạ :)

Integer trong VB chỉ từ -32,768 đến + 32,767 thôi bác caspi. Nếu muốn hơn thì phải dùng long integer (long).
 
Chỉnh sửa lần cuối:
Phạm Quang Linh đã viết:
Tức là số amstrong có n chữ số thì có dạng

x[SUB]1[/SUB] [SUP]n[/SUP] + x[SUB]2[/SUB] [SUP]n[/SUP] + ... + x[SUB]n[/SUB] [SUP]n[/SUP]
huh ?

Thế thì cái ví dụ em cho sai bét à ?

ví dụ. 1^2 + 2^2 +5^2 = 30. 30 là số Amstrong, hay 3^2 + 3^2 + 5^2 +1^ = 44.

Thế 1^2 + 2^2 +5^2 + 1^2 = 31 cũng là số amstrong à ?

edit: cái sub với sup nó bị thế quái nào ý nhỉ

những ví dụ u nêu đều là số Amstrong cả. Còn về nhập số n thì dùng mảng ( ở đây n chạy từ 1 đến 9 ( 8 phần tử) khai báo n(8) )
Nhưng nếu cùn hơn thì vẫn có thể dùng Select Case n từ 1 đến 9. Dùng Case thì còn làm được nhưng dùng mảng vẫn hơi khó hơn.
 
Còn đây là phần Code của số Amstrong và Pitago

Private Sub cmdAms2_Click()
'Day la cach dung cac ham de bien mot so thay mot xau ma sau do de cat tung chu so
Dim x1, a2, b2, c2, d2 As Integer
List1.Clear
label1.Caption = "AMSTRONG"
For x1 = 1000 To 9999
a2 = Int(Val(Mid(Str(x1), 2, 1)))
b2 = Int(Val(Mid(Str(x1), 3, 1)))
c2 = Int(Val(Mid(Str(x1), 4, 1)))
d2 = Int(Val(Mid(Str(x1), 5, 1)))
If a2 ^ 4 + b2 ^ 4 + c2 ^ 4 + d2 ^ 4 = x1 Then
List1.AddItem Str(x1)
End If
Next
End Sub

Private Sub cmdams1_Click()
'Day la cach dung ham mod va dung dau \ lay du de lay tung hang nghin, tram, chuc, don vi
Dim n, a, b, c, d As Integer
List1.Clear
label1.Caption = "AMSTRONG"
For n = 1000 To 9999
a = n \ 1000
b = (n Mod 1000) \ 100
c = (n Mod 100) \ 10
d = n Mod 10
If a ^ 4 + b ^ 4 + c ^ 4 + d ^ 4 = n Then
List1.AddItem Str(n)
End If
Next

End Sub

Private Sub cmdexit_Click()
'Command Exit
Dim mes As String
mes = MsgBox("Ban co thuc su muon thoat ?", vbYesNo + vbInformation, "Exit")
If mes = 6 Then
End
End If
End Sub

Private Sub cmdmody_Click()
' Day la bai dung de liet ke danh sach cac so co 4 chu so co tong 2 so dau bang tong 2 so cuoi
Dim n1, a1, b1, c1, d1 As Integer
List1.Clear
label1.Caption = "MODY AMSTRONG"
For n1 = 1000 To 9999
a1 = n1 \ 1000
b1 = (n1 Mod 1000) \ 100
c1 = (n1 Mod 100) \ 10
d1 = n1 Mod 10
If a1 + b1 = c1 + d1 Then
List1.AddItem Str(n1)
End If
Next
End Sub

Private Sub cmdpitago_Click()
' Con day la mot bai nhap vao so n, ta tim cac cap so PITAGO ( x,y,z la 3 canh cua tam giac )
' So n nhap vao la gioi han cua canh
Dim n2, x, y, z As Integer
List1.Clear
label1.Caption = " PITAGO"
n2 = InputBox("NhËp sè n :")
For x = 1 To n2
For y = 1 To n2
For z = 1 To n2
If x ^ 2 + y ^ 2 = z ^ 2 Then
List1.AddItem "(" & x & "," & y & "," & z & ")"
End If
Next
Next
Next
End Sub
 
Bây giờ, mỗi tuần tôi sẽ Post một Module ( đây là giáo trình chuẩn của Microsoft ), bởi vì đây là do tôi dịch nên có gì sai thì mọi người góp ý và bỏ qua
 
Introduction to Programming with Microsoft Visual Basic 6
Module 0: Giới thiệu.

I. Định nghĩa phần mềm:
+ Cung cấp chức năng đặc biệt của người sử dụng với máy tính
+ Nó được tồn tại dưới dạng đơn lẻ một file hoặc được tập hợp dưới một nhóm các file.
+ Nó có thể gồm có một chương trình đơn hoặc nhiều chương trình mà làm việc cùng nhau. Khi vài ứng dụng làm việc để cùng nhau cung cấp tính hoạt động bổ sung, chúng thường được đóng gói trọn bộ.
vidu : Như Microsoft Word hay Microsoft Excel cùng nằm trọn bộ trong Microsoft Office

2. Những ứng dụng chung Windows
Windows cung cấp sự đa dạng của những ứng dụng phụ để cung cấp tính hoạt động tới máy tính của bạn
+ Calculator : Nhìn Calculator và làm việc với nó cũng giống như với máy tính điện tử cầm tay. Nh­ư đa số các ch­ương trình Windows, nó bao gồm một thực đơn để giúp đỡ ng­ười dùng làm việc với chương trình. Nó cũng rất đa dạng về các điều khiển
+ Notepad : Notepad là một dạng văn bản đơn giản không có nhiều điều khiển; thay vào đó nó sử dụng thực đơn để giúp đỡ người dùng. Notepad cũng giúp bạn lưu lại công việc của bạn bởi một hộp thoại giúp bạn xác định nơi cất giấu.
+ Paint : Paint giúp bạn tạo những hình ảnh đồ thị. Nó sử dụng một toolbox để giúp người dùng điều khiển trong Paint. Paint cũng cung cấp một bảng mẫu màu ở đáy cửa sổ. Những thực đơn quen thuộc ở trên thanh công cụ giúp người dùng thực hiện những nhiệm vụ chung, như lưu lại bản vẽ, mở bản vẽ mới ….
+ WordPad : WordPad cho phép người dung soạn thảo và định dạng văn bản. Mặc dù nó có những thực đơn quen thuộc của Windows, WordPad còn them một thanh công cụ mà giúp đỡ người dung định dạng văn bản. Ngooài ra người dung có thể mở những tài liệu ở trong Notepad và soạn thảo chúng ở WordPad

3. Những kiểu ứng dụng
Những kiểu ứng dụng có thể phân loại theo những mục đích. Mỗi kiểu ứng dụng cung cấp người dùng một tính hoạt động đặc biệt. Vài kiểu ứng dụng chung bao gồm :
+ Những bộ điều khiển thiết bị : Đó là những ứng dụng giúp đỡ hệ điều hành làm việc với những phần cứng đặc biệt trong máy tính của bạn. Ví dụ : một bộ điều khiển cung cấp những phương tiện truyền thong giữa Windows 2000 và máy in hoặc máy quét ảnh.
+ Những ứng dụng phân tích dữ liệu : Các máy tính thường đựơc sử dụng để thu nhặt một số lượng lớn dữ liệu. Ví dụ như bán lẻ có thể tích góp được những thói quen và những lời nói quen thuộc của khách hàng. Những ứng dụng phân tích dữ liệu được thiết kế để khảo sát những số lượng lớn dữ liệu và cung cấp những thong tin hữu ích, như sự tính toán thời gian phải đúng cho một hang bán trong một vùng đặc biệt của thành phố. Những ứng dụng này có thể có nhiều công cụ chung, như Microsoft Access, hoặc những ứng dụng viết cho khách hàng đơn
+ Trò chơi : Những ứng dụng này, mà nói chung bom gồm hình ảnh và âm thanh sống động, cung cấp giải trí, giáo dục hoặc cả hai. Những trò chơi có thể đơn giản như là Solitaire hoặc nó cũng có thể phức tạp như Microsoft Flight Simulator
+ Những ứng dụng văn phòng : Những ứng dụng này được thiết kế để cung cấp những đặc tính để làm những nhiệm vụ dễ dàng hơn, như tạo ra một tài liệu văn bản hoặc làm việc với những dữ liệu toán học. Chúng thường được bán đồng bộ để bổ sung tính hoạt động cho nhau. Word và Excel là ví dụ của những ứng dụng văn phòng. Microsoft Office là một ví dụ của một bộ ứng dụng văn phòng
+ Utilities( các tiện ích ) : Utilities là những công cụ giúp đỡ bạn bảo trì và theo dõi hệ thống máy tính. Chúng có thể kiểm tra ổ đĩa cứng của bạn những lỗi hoặc làm có thể sao chép những dữ liệu quan trọng. Scandisk và Backup là những ví dụ về Utilities
+ Ứng dụng đa phương tiện : Những ứng dụng này giới thiệu video và âm thanh tới người nghe. Windows Media Player và CD Player là những ví dụ về những phần mềm



3. Phân loại phần mềm:
Những ứng dụng gồm có những thành phần riêng lẻ mà làm việc để cùng nhau cung cấp tính hoạt động đến người dùng.

- Cac thành phần của phần mềm:
-à User Interface: giao diện với ngừơi sử dụng. Là bộ mặt của chương trình, cung cấp một môi trường tương quan trực tiếp của người sử dụng với phần mềm chương trình.
---> Text - base: giao diện dòng lệnh. Tương tự như giao diện trên nền DOS. Người sử dụng giao tiếp với phần mềm bằng các câu lệnh.
Yêu cầu: phải nhớ chính xác các câu lệnh.
---> Graphical: GUI - Graphical User Interface. Giao diện đồ họa. Phần mềm cung cấp cho người sử dụng một môi trường giao tiếp đồ họa, với các hình và tính năng được sử dụng bằng chuột, bàn phím hoặc các thiết bị khác. Đây là giao diện phổ biến trong các ứng dụng hiện tại.
---> Browse - base Interface: là giao diện trình duyệt. Mục đích dùng để duyệt (browse) các phần mềm, tiện ích khác. vidu: Windows Explore, http://www.msn.com/,....

4. Dữ liệu
+ Data: dữ liệu phát sinh trong chương trình. Input Data --> xử lý lưu trữ ----> xử lý trả về ---> đầu ra dữ liệu hay data là đối tượng để cho chương trình thao tác

+ Code: đây là các đoạn mã, mã chương trình dùng nó để điều khiển máy tính, chương trình yêu cầu máy tính phải thực hiện. Code được viết bằng ngôn ngữ lập trình ---> thông dịch ---> ngôn ngữ mã máy.

+ Thuật toán: chỉ các bước cụ thể, liên tiếp để xây dựng các bước xử lý một vấn đề cụ thể của chương trình.
Thuật toán thường được thể hiện bằng ngôn ngữ tự nhiên, được viết trên giấy, trên các môi trường soạn thảo khác.

VD:
Giả sử bài toán có hơn một nghiệm
x1: số chân chó của nghiệm 1
y1: số chân gà của nghiệm 1

x2: số chân chó của nghiệm 2
y2: số chân gà của nghiệm 2

y1 + 2*y1 = y2 + 2* y2
3*y1 =3 * y2
y1=y2

a*x + b*y = c x=(c-by)/a
(x1,y1)
(x2,y2)
 
cái đoạn số Amstrong chuối. Nếu 30 cũng là số Amstrong mà 31 (30+1^2) cũng là số Amstrong thì số quái nào chả là số Amstrong thuật toán làm gì cho rách việc (30+1^2+1^2 ... ).

Muốn paste code mà giữ align thì dùng tag code nhé Lam.

Mã:
Private Sub cmdpitago_Click()
' Con day la mot bai nhap vao so n, ta tim cac cap so PITAGO ( x,y,z la 3 canh cua tam giac )
' So n nhap vao la gioi han cua canh
Dim n2, x, y, z As Integer
List1.Clear
label1.Caption = " PITAGO"
n2 = InputBox("NhËp sè n :")
For x = 1 To n2
	For y = 1 To n2
		For z = 1 To n2
			If x ^ 2 + y ^ 2 = z ^ 2 Then
				List1.AddItem "(" & x & "," & y & "," & z & ")"
			End If
		Next
	Next
Next
End Sub
Theo như đoạn code trên thì rõ ràng z lớn hơn cả x và y. Vì theo code thì chỉ tính giá trị các cạnh là số nguyên nên có thể giá trị bắt đầu của z = max(x,y) + 1 thay vì để z = 1 như trong đoạn code ở trên.
 
Chỉnh sửa lần cuối:
Chu' PQLinh cu+' ddu`a em no' ma~i :)

1.) Kho^ng co' so^' na`o co' 2 chu+~ so^' ma` la.i la` so^' Armstrong ca?

2.) Nhi`n ddoa.n code ddu? tha^'y ma^'y da^~n chu+'ng kia dde^`u sai
for x=1000 to 9999
a=x mod 1000
b=(x (mod 100)/10
c=(x mod 10)/10
d=x mod 10
If a^4+b^4+c^4+d^4=x then
List1.list =Str(x)

3.) Ddi.nh nghi~a so^' Armstrong hay Narcissistic Numbers:
http://mathworld.wolfram.com/NarcissisticNumber.html

4.) Chu' NTLam cu+' tie^'p tu.c post ba`i ve^` VB ddi, u r welcum
 
Chỉnh sửa lần cuối:
hihi thì em cố tình đưa ví dụ sai nhưng em nó lại bảo là
những ví dụ u nêu đều là số Amstrong cả. Còn về nhập số n thì dùng mảng ( ở đây n chạy từ 1 đến 9 ( 8 phần tử) khai báo n(8) )
Tks bác capsi for the link. Bây giờ em đã hiểu thuốc fugaka :))
 
Chỉnh sửa lần cuối bởi người điều hành:
Back
Bên trên